Это старая версия документа.


Эта статья помечена как незаконченная. См. заметку в конце статьи.

FVWM - оконный менеджер, предоставляющий пользователю возможность самостоятельно настроить все возможные аспекты управления окнами в соответствии со своими представлениями об удобстве. В fvwm можно реализовать такие вещи, как открытие окон с произвольными размерами и координатами на определённом рабочем столе, большое количество чувствительных к контексту сочетаний клавиш для любых операций, до десяти кнопок в заголовке окна, которым можно назначить произвольные действия, меню, в том числе динамически генерируемые меню, меню, генерируемые с помощью скриптов (как pipe-menu в openbox) и tear-off меню, разные обои на разных рабочих столах, группировка окон со вкладками в заголовке окна, помещение окон в произвольные слои, заголовок окна на любой из сторон окна, стили оформления окон, возможность добавления своих элемнтов интерфейса с помощью модуля FvwmButtons. Приложение очень «лёгкое», файл конфигурации достаточно легко читается, особенно по сравнению с xml или кодом на lua или haskel.

Внешний вид окон

В FVWM вы можете задавать внешний вид окон через цветовые схемы и изображения. В качестве первого примера рассмотрим простой дизайн окон без картинок. Для начала зададим колорсеты, определяющие базовые цвета, которые мы будем использовать. Колорсеты могут быть использованы для задания цветов всего, чего угодно, в FVWM. Следующий кусок конфига задаёт три простых колорсета:

#####
# Window Colorsets
###########
Colorset 3 fg #101060, bg #e6e7d7
Colorset 4 fg Black, bg #a6a797
Colorset 5 fg White, bg Black

Это задаёт три колорсета с номерами 3, 4 и 5, которые имеют цвет текста (foreground, fg) и цвет фона (background, bg). Цвета могут быть заданы в hex-нотации или псевдонимами X, записанными в /etc/X11/rgb.txt.

Настройка

Клавиатура и мышь

Сочетание клавиш для fvwm - это заданное пользователем действие, выполняемое при нажатии клавиши (или кнопки мыши) в определённом контексте, с определённым модификатором, несколькими модификаторами или без модификаторов и в зависимости от имени окна.

Поддержка контекста для хоткеев и кнопок мыши - важная и удобная черта любого wm, именно благодаря ей правый клик по содержимому окна отличается от правого клика по его заголовку или по рабочему столу, а сочетания клавиш wm не конфликтуют с сочетаниями клавиш в приложениях.

fvwm понимает следующие контексты:

R - рабочий стол
I - иконка
F - углы декорации окна
S - стороны декорации окна
T - заголовок окна
W - окно приложения
0-9 - кнопки
M - меню
A - любое место на десктопе

Контексты можно комбинировать между собой: FSTW, WT, FS.

Модификаторами могут служить клавиши Ctrl, Shift, Super и т.д.

Модификаторы, понимаемые fvwm и их обозначения в конфигурационном файле:

Ctrl - С
Super - 4
Alt - 1
Shift - S
Caps Lock - L
Num Lock - 2

Модификаторов может быть несколько: C1, CS, C4.

Поскольку клавиши Caps Lock и Num Lock являются модификаторами, при включении цифровой клавиатуры или верхнего регистра они считаются fvwm нажатыми, что приводит к некорректной работе (сбросу настроек клавиатуры, мыши и политики фокуса на дефолтные). Для того, чтобы этого избежать, нужно добавить в конфигурационный файл строку

IgnoreModifiers 2L

Кроме всего перечисленного, fvwm может принимать во внимание название активного окна, оно указывается в скобках после Key или Mouse, можно использовать wildcards (*).

В качестве действия можно указывать любую команду fvwm - Exec, Function, PipeRead, Restart и т.д.

Таким образом, сочетания клавиш задаются так:

Key/Mouse (Окно) Клавиша/Кнопка Контекст Модификатор Действие

Несколько примеров:

Список окон по Alt+Tab

Key Tab A 1 WindowList Root NoGeometry

Закрытие окна по левому клику на крайней правой кнопке декорации

#Функция
DestroyFunc DeleteWin
AddToFunc DeleteWin
+ I Delete

#Вызов функции
Mouse 1 2 N DeleteWin

Меню по правому клику на рабочем столе

Mouse 3 R N Menu MainMenu

При активном окне браузера вызвать gmrun по Ctrl+Alt+Z

Key (*Namoro*) Z A C1  Exec exec gmrun

Практические советы

Несколько советов по настройке fvwm, которые могут помочь в настройке, улучшить читаемость и переносимость конфигурационного файла, задействовать полезные функции fvwm.

  • Удобно разнести настройки, отвечающие за разные аспекты поведения wm по разным конфигурационным файлам и объединить их с помощью функции Read - это облегчит чтение конфигурационных файлов, внесение в них изменений по ходу работы и обмен интересными вариантами настройки. В последствии можно будет создать меню настроек fvwm, где каждый пункт будет ссылаться на соответствующий конфигурационный файл.
  • В процессе настройки полезно добавить горячие клавиши для FvwmIdent и FvwmConsole - первая функция позволяет вызвать информацию об окне - слой, геометрия, тип и т.д., а вторая - вводить команды fvwm в специальной консоли.
  • Если вы хотите использовать в своей конфигурации fvwm скрипты в меню, подобные pipe-scripts в openbox, такие меню имеет смысл делать динамически генерируемыми. Синтаксис такого меню:
#Создаём меню и объявляем его динамически воссоздаваемым функцией MakeBasicMenu
AddToMenu Basic Basic title
+ DynamicPopupAction Function MakeBasicMenu

#Добавляем пункты меню
AddToFunc MakeBasicMenu
+ I DestroyMenu recreate Basic
+ I AddToMenu Basic "Gedit" Exec exec gedit
+ I AddToMenu Basic "Firefox" Exec exec firefox
  • В репозитариях Ubuntu нет неофициального пакета fvwm-patched - fvwm 2.5.28 с набором патчей, но исходники без проблем компилируются.
  • Для того, чтобы нажатие NumLock не приводило к сбросу ваших настроек, добавьте в свой конфигурационный файл строку, заставляющую fvwm не считать NumLock модификатором:
IgnoreModifiers 2

Полезные ссылки

FIXME Эта статья не окончена. Пожалуйста, если вы располагаете соответствующими знаниями и небольшим количеством свободного времени, попробуйте улучшить эту статью.
  • Стилистика этой статьи не соответствует рекомендуемому минимуму.
  • Содержание этой статьи не соответствует рекомендуемому минимуму.
  • Структура статьи меняется по мере написания.
  • Вероятно, стоит перевести FVWM Beginners Guide до конца, добавить ссылок на оригинал и более детально объяснить это вообще такое, FVWM.
  • Дополнительно было бы неплохо приложить к статье несколько скриншотов и соответствующих им примеров конфигураций.

MadKox