воскресенье, 24 декабря 2017 г.

Рабочий стол - FVWM

Первая разновидность - интерфейс для вновь устроенных на работу, призванный облегчить привыкание новичка за счёт чувства знакомства. "О, я знаком с Windows 7, вот кнопка Пуск, нажать её, дальше увидим". Глаз привычно ищёт меню приложений Пуск в левом нижнем угле, окна закрываются пиктограммой крестик и т.п. Настройка призвана быть стандартной и ни в коем случае не должна привести к нарушению привычного вида.
Второй тип - это то, что нужно только Вам и вас не волнует, что подумают другие, о том, что кнопку Пуск Вы убрали куда-то, обои не меняются правым кликом мыши и тому подобное. Вы хотите эти кнопки, значки и меню так, как удобно только Вам. Как что выглядит и располагается - Ваше дело, а не компании Microsoft или сообщества разработчиков KDE или Gnome. Эффекты? Можно приделать, но зачем? Зачем кнопке запуска пылесоса (а компьютер это тоже по своей сути бытовая техника) свечение плазмы и победный звук? Только отвлекает.

Для тех единоличников, кто любит простоту и эффективность - рабочий стол FVWM. В том виде, как он есть у меня сейчас, в 2017 году, он был и 20 лет назад. Изменился самую малость. Вот он!

Слева расположился ряд свернутых окон. Каждое хранит свой снимок - удобно, чтобы вспомнить, на чём остановился. Меню Start вызывается кликом правой кнопки мыши, содержит список программ, которыми я пользуюсь. Значки, порядок в списке - то, как удобно мне. Окно Терминала и в правом нижнем уголке переключатель виртуальных рабочих столов (умножает пространство в 9 раз) и часы.
Кстати, всё управление дублируется с клавиатуры - иногда это удобнее, чем перемещать мышь.

Возможно, лучший способ понять принципы настройки fvwm - думать о нём как о специализированном языке программирования высокого уровня.

Как любой язык программирования, fvwm предоставляет пользователю команды для управления окнами и элементами интерфейса, управляющие структуры и возможность написания собственных функций. Существует несколько библиотек - модулей. Команды и функции привязываются к различным событиям от устройств ввода - клавиатуры и мыши. Полное описание всех команд и функций занимает около двухсот страниц, но один конфигурационный файл пользователя совсем небольшой.

Да, следуйте простым инструкциям и воплощайте свою концепцию интерфейса. Меня вдохновляла книга Джефа Раскина, Интерфейс: новые направления в проектировании компьютерных систем. — Пер. с англ. — СПб: Символ-Плюс, 2004, однако, сколько людей, столько и мнений. Вы можете ознакомиться с ними здесь.

Вот пример, как реализованы эскизы свернутых окон на fvwm. При свертывании окна вызывается пользовательская функция Thumbnail, она передаёт id окна программе xwd, та делает её снимок, затем передаёт его по конвееру программе convert, где снимок уменьшается и преобразуется во временный png-файл. Свернутой программе назначается новая иконка, с изображением из этого png-файла. Всё на самом деле просто.
DestroyFunc Thumbnail
AddToFunc Thumbnail
+ I Raise
+ I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
    "xwd -silent -id $[w.id] | convert -scale 256 -frame 1x1 \
     -mattecolor black -quality 0 xwd:- png: $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png; sleep .1 \
     && echo WindowStyle IconOverride, \
     Icon $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png \
     || echo Nop"
+ I Iconify

DestroyFunc DeThumbnail
AddToFunc DeThumbnail
+ I Exec rm -f $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png
+ I DestroyWindowStyle

*FvwmEvent: deiconify DeThumbnail

AddToFunc StartFunction I Test (Restart) All (Iconic) \
  Test (f $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png) WindowStyle \
  IconOverride, Icon $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png
Код добавляется в Ваш личный config-файл и fvwm становится таким, как Вы пожелали. Удачи!

Комментариев нет:

Отправить комментарий