Это старая версия документа.
Содержание
FVWM - оконный менеджер, предоставляющий пользователю возможность самостоятельно настроить все возможные аспекты управления окнами в соответствии со своими представлениями об удобстве. В fvwm можно реализовать такие вещи, как открытие окон с произвольными размерами и координатами на определённом рабочем столе, большое количество чувствительных к контексту сочетаний клавиш для любых операций, до десяти кнопок в заголовке окна, которым можно назначить произвольные действия, меню, в том числе динамически генерируемые меню, меню, генерируемые с помощью скриптов (как pipe-menu в openbox) и tear-off меню, разные обои на разных рабочих столах, группировка окон со вкладками в заголовке окна, помещение окон в произвольные слои, заголовок окна на любой из сторон окна, стили оформления окон, возможность добавления своих элемнтов интерфейса с помощью модуля FvwmButtons. Приложение очень «лёгкое», файл конфигурации достаточно легко читается, особенно по сравнению с xml или кодом на lua или haskel.
Сочетания клавиш
Всего существует два типа биндингов: к мыши и к клавиатуре. Чтобы лучше понять, как это работает, давайте взглянем на типичный экран с одним развёрнутым окном и двумя свёрнутыми. Из следующей схемы ясно, что экран разделён на следующие области: R — рабочий стол, I — иконки, в которые свёрнуты окна, F — углы рамок окон, S — стороны рамок окон, T — заголовок окна, W — клиентская область приложения, 0—9 — кнопки заголовка окна. Запомните, что A означает везде, то есть не важно, где расположен курсор.
Задавать биндинги вы можете по нижеследующему образцу. Все клавиатурные биндинги записываются как Key X Контекст Модификатор Действие
, а мышинные как Mouse X Контекст Модификатор Действие
. Здесь X — это клавиша или кнопка мыши, контекст — область, в которой была нажата клавиша или кнопка, модификатор — это модификатор клавиатуры (типа Капс-Лока, Контрола, шифта и пр.), и действие — то, что нужно совершить по данному событию. Модфификаторы кодируются как A — любой (any), C — Control, S — Shif, M — Meta, N — никакой (nothing), или числами 1—5, что повторяет X-Модификаторы (man xmodmap).
##### # Базовые биндинги ########### Key F1 A M Menu MenuFvwmRoot Key Tab A M WindowList Root c c NoDeskSort, SelectOnRelease Meta_L Key Super_L A A FvwmATerm Mouse 1 R A Menu FvwmRootMenu Mouse 3 R A Menu FvwmWindowOpsMenu Mouse 1 1 A FvwmDeleteOrDestroy Mouse 1 3 A FvwmIconifyOrShade Mouse 1 5 A FvwmMaximize 100 100 Mouse 2 5 A FvwmMaximize 0 100 Mouse 3 5 A FvwmMaximize 100 0 Mouse 1 W M FvwmMoveOrIconify Mouse 1 I A FvwmMoveOrIconify Mouse 4 T A FvwmWindowShade True Mouse 5 T A FvwmWindowShade False
Это можно описать как:
- По нажатию Alt+F1 независимо от фокуса и положения курсора открывает главное меню FVWM.
- Позволяет переключать окна по Alt+Tab
- Запускает ATerm по нажатию левой командной клавиши.
- Открывает главное меню по клику левой кнопкой мыши на рабочем столе.
- Открывает WindowOpsMenu по клику правой кнопкой мыши на рабочем столе.
- Закрывает или удаляет окно по клику или двойному клику по кнопке №1.
- Сворачивает окно в иконку или в заголовок по клику или двойному клику на кнопке №3 .
- Разворачивает окно на полный экран, когда первая кнопка мыши (левая) нажимает на кнопку №5.
- Растягивает окно по вертикали, когда вы кликаете второй кнопкой мыши на кнопку №5.
- Растягивает окно по вертикали, когда вы кликаете третьей кнопкой мыши на кнопку №5.
- Перемещает окно, если мы тащим его мышью с зажатым Alt и сворачивает в иконку по двойному клику.
- Binds the FvwmMoveOrIconify function to work on 'Icons' so they can be moved and UnIconified.
- Сворачивает окно в заголовок, когда вы крутите колёсиком вверх хотя бы два раза.
- Разворачивает активное окно из заголовка, когда вы крутите колёсиком вниз хотя бы два раза.
Внешний вид окон
В 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
Полезные ссылки
- http://box-look.org/content/show.php/fvwm+starter%27s+kit?content=123415&PHPSESSID=49d0b327436a6d785575d6f123ad55e5 - вариант конфигурационного файла fvwm, совмещённого с кратким руководством по настройке горячих клавиш, автозапуска и меню, имеется вариант на русском языке
- http://www.zensites.net/fvwm/guide/ - пособие по настройке fvwm, старое, но актуальное. На английском языке.
- http://fvwm.org/ - официальная страница fvwm.
- http://box-look.org/index.php?xcontentmode=7314&PHPSESSID=49d0b327436a6d785575d6f123ad55e5 - конфигурации fwvm на box-look.org
- Стилистика этой статьи не соответствует рекомендуемому минимуму.
- Содержание этой статьи не соответствует рекомендуемому минимуму.
- Структура статьи меняется по мере написания.
- Вероятно, стоит перевести FVWM Beginners Guide до конца, добавить ссылок на оригинал и более детально объяснить это вообще такое, FVWM.
- Дополнительно было бы неплохо приложить к статье несколько скриншотов и соответствующих им примеров конфигураций.