FVWM Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
wiki:fvwm [2010/11/23 23:44]
wiki:fvwm [2011/04/02 23:22]
[Практические советы]
Строка 7: Строка 7:
 FVWM - оконный менеджер,​ предоставляющий пользователю возможность самостоятельно настроить все возможные аспекты управления окнами в соответствии со своими представлениями об удобстве. В fvwm можно реализовать такие вещи, как открытие окон с произвольными размерами и координатами на определённом рабочем столе, большое количество чувствительных к контексту сочетаний клавиш для любых операций,​ до десяти кнопок в заголовке окна, которым можно назначить произвольные действия,​ меню, в том числе динамически генерируемые меню, меню, генерируемые с помощью скриптов (как pipe-menu в openbox) и tear-off меню, разные обои на разных рабочих столах,​ группировка окон со вкладками в заголовке окна, помещение окон в произвольные слои, заголовок окна на любой из сторон окна, стили оформления окон, возможность добавления своих элемнтов интерфейса с помощью модуля FvwmButtons. Приложение очень "​лёгкое",​ файл конфигурации достаточно легко читается,​ особенно по сравнению с xml или кодом на lua или haskel. FVWM - оконный менеджер,​ предоставляющий пользователю возможность самостоятельно настроить все возможные аспекты управления окнами в соответствии со своими представлениями об удобстве. В fvwm можно реализовать такие вещи, как открытие окон с произвольными размерами и координатами на определённом рабочем столе, большое количество чувствительных к контексту сочетаний клавиш для любых операций,​ до десяти кнопок в заголовке окна, которым можно назначить произвольные действия,​ меню, в том числе динамически генерируемые меню, меню, генерируемые с помощью скриптов (как pipe-menu в openbox) и tear-off меню, разные обои на разных рабочих столах,​ группировка окон со вкладками в заголовке окна, помещение окон в произвольные слои, заголовок окна на любой из сторон окна, стили оформления окон, возможность добавления своих элемнтов интерфейса с помощью модуля FvwmButtons. Приложение очень "​лёгкое",​ файл конфигурации достаточно легко читается,​ особенно по сравнению с xml или кодом на lua или haskel.
  
-{{:​wiki:​fvwm.png?​200|}}+{{:​wiki:​fvwm.png?​500|}}
  
-===== Перевод FVWM Beginners Guide ===== 
-==== Пролог ==== 
  
-Feeble Virtual Window Manager (Слабый вирутальный окнонный менеджер) это чрезвычайно гибкий менеджер окон для [[X Window System]]. Слово «слабый» в названии может ввести в заблуждение. Дело в том, что FVWM является форком TWM, и сделан как его слабая замена,​ но к сегодняшнему дню FVWM вырос из слабого и скромного в самый гибкий в настройке оконный менеджер. От FVWM вы можете добиться всего, что хотите от подобной программы и даже больше. Поскольку название «слабый» больше не подходит к FVWM, то строят разные легенды по поводу того, что же эта F в названии значит. Чаще всего в F не раскрывают и пишут F? Virtual Window Manager. 
  
-Не смотря на то, что FVWM очень гибок в настройке,​ многие стараются не использовать его потому,​ что нет визуальных инструментов для управления параметрами FVWM. Предпринимались попытки создать для настройки FVWM подобные вещи, такие как ''​fvwm-themes'',​ однако,​ такое огромное количество опций и настроек не так-то просто перевести в графический интерфейс,​ так что лучший способ настроить FVWM — написать свой конфигурационный файл. В этом вам поможет сие руководство,​ здесь вы ознакомитесь с синтаксисом конфигурационных файлов FVWM и основными командами. Первая часть руководства расскажет вам шаг за шагом, как создать простой конфигурационный файл FVWM. Не смотря на то, что это руководство,​ информация предоставляется в таком виде, что вы просто можете скопировать настройки и вставить их в конфигурационный файл. После того, как вы создадите базовую конфигурацию,​ мы с вами углубимся в некоторые темы и настройки и вы сможете позабавиться с ними на вашем рабочем столе. Я надеюсь,​ что к концу этого руководства вы достаточно ознакомитесь с настройкой FVWM и сможете создать такую конфигурацию,​ какая вам необходима. 
  
-Я попытаюсь достаточно хорошо объяснить все настройки,​ которые я вам представил,​ но в манах FVWM всё достаточно чётко написано. Маны довольно длинные,​ но они полны ключевых слов, ищите по ним, чтобы узнать,​ что делает та или иная опция. О некоторых опциях я говорю мало и не полно, и надеюсь,​ что вы воспользуйтесь манами,​ чтобы узнать те детали,​ которые я опустил. Так что если вы от меня что-то не узнали,​ то маны являются для вас ценным ресурсом. 
  
-Это руководство было написано к нестабильному релизу,​ fvwm-2.5.10 на тот момент. Я не тестировал конфигурацию на стабильном релизе и не уверен в его работе на нём. Рекомендую использовать версию 2.5.10. Не смотря на то, что этот релиз не стабильный,​ стандартные функции работают нормально и я не заметил никаких проблем с ним. Я также использую патч для прозрачности. 
  
-Всё в FVWM можно настроить в одном единственном файле. В стандартной сборке из репозиториев он лежит в ''​~/​.fvwm/​config''​. Ещё возможны варианты типа ''​~/​.fvwm/​.fvwm2rc''​ и ''​~/​.fvwm2rc''​. Однако,​ имеется команда ''​Read'',​ позволяющая обрабатывать содержимое других файлов. С её помощью можно разделить один большой конфиг на несколько малых. Но в целях просто обучиться настройке FVWM, мы будем записывать все настройки в один файл. Так что для начала создайте в домашнем каталоге папку ''​.fvwm''​ и в ней простой текстовый файл ''​config''​. Если вы уже запустили FVWM, не настроив его, не ужасайтесь — стандартная конфигурация FVWM очень уродлива,​ ведь FVWM требует тонкой настройки. 
  
-Откройте наш ''​~/​.fvwm/​config''​ в своём любимом текстовом редакторе. Этот файл перечитывается FVWM при каждом запуске и определяет вид и поведение нашего нового оконного менеджера. Комментарии должны начинаться символом “''#''​”. 
  
-==== Общие настройки ==== 
  
-Первое,​ что мы должны сделать - это задать переменные окружения и сделать базовую настройку рабочего стола. В FVWM переменные окружения нужны в основном для задания расположения разных файлов (например,​ иконок),​ которые используются в конфиге. Но не стоит засорять среду переменными и использовать переменные для чего ни попадя:​ не нужно обозначать переменными то, что меняется раз в год. Вот пример задания переменных:​ 
-<​file>​ 
-# Задание переменных 
-SetEnv fvwm_img /​usr/​share/​images 
-SetEnv fvwm_icon /​usr/​share/​fvwm/​icons 
-SetEnv fvwm_scrpt /​usr/​share/​fvwm/​scripts 
-SetEnv fvwm_wallpapers $[FVWM_USERDIR]/​wallpaper 
-SetEnv fvwm_webbrowser /​usr/​bin/​opera 
-SetEnv fvwm_video_player /​usr/​bin/​mplayer 
-</​file>​ 
- 
-Теперь зададим ''​ImagePath'':​ 
-<​file>​ 
-# ImagePath 
-ImagePath $[fvwm_icon]:​$[fvwm_icon];​.png:​$[fvwm_wallpapers]:​+ 
-</​file>​ 
- 
-Это значит,​ что все иконки берутся из папки, указанной в переменной ''​$[fvwm_icon]''​. ''​.png''​ означает,​ что иконки в формате ПНГ. Так же могут использоваться икс-пи-эм-иконки по умолчанию. Можно легко добавить больше директорий в ''​ImagePath'',​ если, например,​ есть глобальные иконки для всех пользователей в ''/​usr/​share/​images''​ и личные для отдельного пользователя в ''​~/​fvwm/​icons''​. 
- 
-Теперь настроим виртуальные рабочие столы. FVWM позволяет иметь сколько угодно рабочих столов,​ да ещё каждый из них может состоять из множества страниц. Зададим три рабочих стола, каждый из которых состоит из четырёх страниц в конфигурации 2×2: 
-<​file>​ 
-# Настройки виртуальных рабочих столов 
-DesktopSize 2x2 
-DesktopName 0 Главный 
-DesktopName 1 Работа 
-DesktopName 2 Игры 
-EdgeScroll 100 100 
-EdgeResistance 150  150 
-EdgeThickness 1 
-</​file>​ 
- 
-Переменная ''​DesktopSize''​ определяет количество страниц на рабочем столе. Затем, с помощью переменных ''​DesktopName''​ мы задаём рабочие столы и их названия. Параметр ''​EdgeScroll''​ определяет,​ на сколько процентов сдвигается рабочий стол при подведении курсора к краю экрана. ''​EdgeScroll 100 100''​ говорит,​ что при заезде указателя на край экрана страница будет прокручиваться на 100%, то есть целиком. ''​EdgeResistance''​ определяет время, через которое должно произойти перемещение,​ после движения курсора. ''​EdgeThicknes''​ определяет толщину края экрана. То есть ту область вокруг экрана,​ в которую необходимо попасть,​ чтобы переместиться. Если вам не нужно такое перемещение,​ можете задать ''​EdgeThickness 0''​ или ''​EdgeScroll 0 0''​. 
- 
-Теперь назначим поведение мыши и фокус. 
-<​file>​ 
-# Настройки мыши и фокус 
-ClickTime 350 
-MoveThreshold 3 
-Style * SloppyFocus,​ MouseFocusClickRaises 
-</​file>​ 
- 
-Параметр ''​ClickTime''​ определяет время в милисекундах между нажатием мыши и тем моментом,​ который FVWM считает за клик. Если нажатие длиться дольше,​ чем указанное время, то FVWM определяет это, как удержание мыши. ''​MoveThreshold''​ это такое количество пикселей,​ на которе нужно сместить мышь, чтобы это было воспринято,​ как движение. 
- 
-==== Функции ==== 
- 
-Функции могут быть использованы для настройки самых разнообразных вещей в FVWM. Мы рассмотрим только базовый синтаксис и несколько элементарных функций. Для начала поглядим на скелет функции. Он закомментирован для того, чтобы вы могли скопировать его себе в конфиг,​ как напоминание. 
- 
-<​file>​ 
-# Конспект функции FVWM 
-# 
-# DestroyFunc FuncName 
-# AddToFunc ​  ​FuncName 
-# + I (Действие происходит немедленно) 
-# + C (Действие происходит по клику) 
-# + D (Действие происходит по двойному клику) 
-# + H (Действие происходит при задержке мыши) 
-# + M (Действие происходит при движении мыши) 
-</​file>​ 
- 
-Таким образом,​ первое,​ что нужно сделать — это очистить функцию командой ''​DestroyFunc'',​ это освободит функцию от всего, что могло случайно попасть в неё раньше. Затем командой ''​AddToFunc''​ вы добавляете действия,​ которые должны происходить при вызове функции,​ и, как вы могли заметить выше, эти действия выполняются при определённом событии,​ совершаемом мышью. Когда вы вызываете функцию в FVWM, вы можете передать ей различные параметры. Например,​ вы можете вызвать вышеозначенную функцию так: ''​FuncName $0 $1 $2 $3 $4'',​ где $0-$4 — это параметры,​ передаваемые функции,​ и они ​ 
-могут определять вывод этой функции. Теперь давайте рассмотрим следующий список базовых функций. 
- 
-<​file>#####​ 
-# Базовые функции 
-########### 
-DestroyFunc FvwmDeleteOrDestroy 
-AddToFunc ​  ​FvwmDeleteOrDestroy 
-+ H Nop 
-+ M Nop 
-+ C Delete 
-+ D Destroy 
- 
-DestroyFunc FvwmIconifyOrShade 
-AddToFunc ​  ​FvwmIconifyOrShade 
-+ C Iconify 
-+ D WindowShade 
- 
-DestroyFunc FvwmMaximize 
-AddToFunc ​  ​FvwmMaximize 
-+ H Nop 
-+ M Nop 
-+ C Maximize $0 $1 
- 
-DestroyFunc FvwmMoveOrIconify 
-AddToFunc ​  ​FvwmMoveOrIconify 
-+ M Move 
-+ D Iconify 
- 
-DestroyFunc FvwmWindowShade 
-AddToFunc ​  ​FvwmWindowShade 
-+ D WindowShade $0</​file>​ 
- 
-Первая функция ''​FvwmDeleteOrDestroy''​ не делает ничего,​ если мышь задержена при наведении или двигает. На одиночный клик эта функция закроет окно обычным образом,​ а на двойной удалит,​ даже если оно будет сопротивляться. Вторая функция ''​FvwmIconifyOrShade''​ на одиночный клик свернёт окно на панель задач, а на двойной — свернёт в заголовок. Функция ''​FvwmMaximized''​ примет два параметра,​ определяющие,​ как развернуть окно. Например,​ вы можете вызвать функцию ''​FvwmMaximized 100 100'',​ и тогда окно развернётся на 100% по горизонтали и вертикали. Если же вы вызовете её как ''​FvwmMaximize 100 0'',​ то окно растянется во всю ширину окна, но сохранит свою высоту. Функция ''​FvwmMoveOrIconify''​ позволит перетаскивать окно, когда вы двигаете его мышью, и свернёт его на панель задач при двойном клике. А функция ''​FvwmWindowShade''​ свернёт окно в заголовок,​ если ей передан параметр true (''​FvwmWindowShade True''​),​ и развернёт его из заголовка,​ если ей передан параметр false. Если она вызвана без параметров,​ то она развернёт свёрнутое окно и свернёт развёрнутое. 
- 
-Теперь напишем несколько функций запуска приложений,​ чтобы потом просто вызывать эти функции. Эти функции очень просты,​ но они вносят немного организованности:​ 
- 
-<​file>#####​ 
-# Функции для запуска программ 
-########### 
-DestroyFunc FvwmXTerm 
-AddToFunc ​  ​FvwmXTerm 
-+ I Exec exec xterm 
- 
-DestroyFunc FvwmATerm 
-AddToFunc ​  ​FvwmATerm 
-+ I Exec exec aterm 
- 
-DestroyFunc FvwmGVim 
-AddToFunc ​  ​FvwmGVim 
-+ I Exec exec gvim 
- 
-DestroyFunc FvwmGimp 
-AddToFunc ​  ​FvwmGimp 
-+ I Exec exec gimp-2.0 
- 
-DestroyFunc FvwmFireFox 
-AddToFunc ​  ​FvwmFireFox 
-+ I Exec exec firefox 
- 
-DestroyFunc FvwmIrssi 
-AddToFunc ​  ​FvwmIrssi 
-+ I Exec exec aterm -e irssi 
- 
-DestroyFunc FvwmXmms 
-AddToFunc ​  ​FvwmXmms 
-+ I Exec exec xmms 
- 
-DestroyFunc FvwmViewManPage 
-AddToFunc ​  ​FvwmViewManPage 
-+ I Exec exec xterm -fg White -bg DarkBlue -g 80x40 -fn 7x14 -fb 7x14bold \ 
- -n "​Manual Page - $0" -T "​Manual Page - $0" -e man "​$0"</​file>​ 
- 
-Первые функции должны быть понятны,​ а вот последнюю стоит объяснить. Она принимает в качестве аргумента man-страницу. Например,​ если вы выполните ''​FvwmViewManPage fvwm'',​ то отобразится страница man fvwm в терминале xterm. Также обратите внимание на синтаксис последних строк. Вторая строка снизу оканчивается на обратный слэш (''​\''​),​ это означает,​ что следующая строка должна восприниматься как продолжение текущей. То есть последние две строки интерпретируются как одна, благодаря бэкслэшу. 
- 
-Теперь взглянем на три специальные функции:​ ''​StartFunction'',​ ''​InitFunction''​ и ''​RestartFunction''​. Функция ''​StartFunction''​ выполняется при запуске FVWM, в то время как ''​InitFunction''​ выполняется после ''​StartFunction'',​ когда инициализируется FVWM. Функция ''​RestartFunction''​ выполняется после ''​StartFunction''​ при перезапуске FVWM. 
- 
-<​file>#####​ 
-# Функции запуска 
-########### 
-DestroyFunc StartFunction 
-AddToFunc ​  ​StartFunction 
-+ I Module FvwmTaskBar 
-+ I Module FvwmPager 0 2 
-+ I Module FvwmButtons MyButtons 
- 
-DestroyFunc InitFunction 
-AddToFunc ​  ​InitFunction 
-+ I Exec exec xscreensaver 
-+ I Exec exec fvwm-root -r $[fvwm_wallpapers]/​background.png 
-+ I FvwmXmms 
-+ I FvwmATerm 
- 
-DestroyFunc RestartFunction 
-AddToFunc ​  ​RestartFunction 
-+ I Nop</​file>​ 
- 
-Во время запуска FVWM подгружает три модуля:​ FvwmTaskBar,​ FvwmPages и FvwmButtons. После запуска FVWM включает скринсейвер,​ задаёт фоновое изображение,​ запускает XMMS и ATerm. При перезапуске он ничего не делает (кроме ''​StartFunction''​). 
- 
-Функции могут быть достаточно подробными,​ добавить много функциональности вашему окружению. Функции могут иметь любое число параметров ($1, $2, $3 и т.д.) и сочетать в себе любое количество действий мыши. Функции могут иметь любое имя, кроме зарезервированных для FVWM, таких как Nop, Delete, Destroy, Restart и пр. 
- 
-Вот ещё немного примеров разных функций:​ 
- 
-<​file>#####​ 
-# Screenshot Functions (uses ImageMagick) 
-########### 
-DestroyFunc FvwmWindowScreenshot 
-AddToFunc ​  ​FvwmWindowScreenshot 
-+ I ThisWindow (!Shaded !Iconic Iconifiable) \ 
-  Exec import -window $[w.id] -quality 100 -silent \ 
-  "​$[fvwm_home]/​screenshot/​screenshot-`date +%F[%R]`.$[w.id].jpg"​ 
- 
-DestroyFunc FvwmDesktopScreenshot 
-AddToFunc ​  ​FvwmDesktopScreenshot 
-+ I Exec sleep $0; import -window root -quality 100 -silent \ 
-  "​$[fvwm_home]/​screenshot/​screenshot-`date +%F[%R]`.jpg"​ 
- 
-##### 
-# XRoach Invasion 
-########### 
-DestroyFunc XRoachInvasion 
-AddToFunc ​  ​XRoachInvasion 
-+ I Exec exec xroach -roaches 5 -rc Cyan -speed 17 
-+ I Exec exec xroach -roaches 3 -rc Red -speed 15 
-+ I Exec exec xroach -roaches 7 -rc Green -speed 10 
-+ I Exec exec xroach -roaches 3 -rc Blue -speed 20 
-+ I Exec exec xroach -roaches 1 -rc Black -speed 30 
-+ I Exec exec xroach -roaches 1 -rc White -speed 40 
- 
-DestroyFunc XRoachExterminate 
-AddToFunc ​  ​XRoachExterminate 
-+ I Exec killall xroach</​file>​ 
- 
-Первая пара функций делает скриншот одного окна или всего рабочего стола с помощью ImageMagick'​а. Чтобы сделать скриншот одного окна, вызовите первую функцию как ''​Pick (Circulate Hit) FvwmWindowScreenshot''​. После чего сменится курсор. Выберите им то окно, снимок которого хотите получить. Вторая функция сделает скриншот рабочего стола после паузы, длительность которой передаётся параметром $0 в секундах. ''​FvwmDesktopScreenshot 5''​ сделает снимок рабочего стола через пять секунд после вызова. Это хороший путь для того, например,​ чтобы снять меню. Вторая группа функций запускает древнюю игрушку X.org'​а - тараканов,​ ползающих по вашему экрану. Для этого у вас должен быть установлен xroach. 
- 
-==== Сочетания клавиш ==== 
- 
-{{wiki:​window_layout.png }}Всего существует два типа биндингов:​ к мыши и к клавиатуре. Чтобы лучше понять,​ как это работает,​ давайте взглянем на типичный экран с одним развёрнутым окном и двумя свёрнутыми. Из следующей схемы ясно, что экран разделён на следующие области:​ R — рабочий стол, I — иконки,​ в которые свёрнуты окна, F — углы рамок окон, S — стороны рамок окон, T — заголовок окна, W — клиентская область приложения,​ 0—9 — кнопки заголовка окна. Запомните,​ что A означает везде, то есть не важно, где расположен курсор. 
- 
-Задавать биндинги вы можете по нижеследующему образцу. Все клавиатурные биндинги записываются как ''​Key X Контекст Модификатор Действие'',​ а мышинные как ''​Mouse X Контекст Модификатор Действие''​. Здесь X — это клавиша или кнопка мыши, контекст — область,​ в которой была нажата клавиша или кнопка,​ модификатор — это модификатор клавиатуры (типа Капс-Лока,​ Контрола,​ шифта и пр.), и действие — то, что нужно совершить по данному событию. Модфификаторы кодируются как A — любой (any), C — Контрол,​ S — шифт, M — мета, N — никакой (nothing), или числами 1—5, что повторяет X-Модификаторы (man xmodmap). ​ 
- 
-<​file>#####​ 
-# Базовые биндинги 
-########### 
-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</​file>​ 
- 
-===== Настройка ====== 
-====Клавиатура и мышь ==== 
- 
-Сочетание клавиш для fvwm - это заданное пользователем действие,​ выполняемое при нажатии клавиши (или кнопки мыши) в определённом контексте,​ с определённым модификатором,​ несколькими модификаторами или без модификаторов и в зависимости от имени окна. 
- 
-Поддержка контекста для хоткеев и кнопок мыши - важная и удобная черта любого wm, именно благодаря ей правый клик по содержимому окна отличается от правого клика по его заголовку или по рабочему столу, а сочетания клавиш wm не конфликтуют с сочетаниями клавиш в приложениях. 
- 
-fvwm понимает следующие контексты:​ 
- 
-''​R''​ - рабочий стол\\ 
-''​I''​ - иконка\\ 
-''​F''​ - углы декорации окна\\ 
-''​S''​ - стороны декорации окна\\ 
-''​T''​ - заголовок окна\\ 
-''​W''​ - окно приложения\\ 
-''​0-9''​ - кнопки\\ 
-''​M''​ - меню\\ 
-''​A''​ - любое место на десктопе\\ 
- 
-{{:​wiki:​window_layout.png|}} 
- 
-Контексты можно комбинировать между собой: ''​FSTW'',​ ''​WT'',​ ''​FS''​. 
- 
-Модификаторами могут служить клавиши <​key>​Ctrl</​key>,​ <​key>​Shift</​key>,​ <​key>​Super</​key>​ и т.д. 
- 
-Модификаторы,​ понимаемые fvwm и их обозначения в конфигурационном файле: 
- 
-<​key>​Ctrl</​key>​ - ''​С''​\\ 
-<​key>​Super</​key>​ - ''​4''​\\ 
-<​key>​Alt</​key>​ - ''​1''​\\ 
-<​key>​Shift</​key>​ - ''​S''​\\ 
-<​key>​Caps Lock</​key>​ - ''​L''​\\ 
-<​key>​Num Lock</​key>​ - ''​2''​\\ 
- 
-Модификаторов может быть несколько:​ ''​C1'',​ ''​CS'',​ ''​C4''​. 
- 
-Поскольку клавиши <​key>​Caps Lock</​key>​ и <​key>​Num Lock</​key>​ являются модификаторами,​ при включении цифровой клавиатуры или верхнего регистра они считаются fvwm нажатыми,​ что приводит к некорректной работе (сбросу настроек клавиатуры,​ мыши и политики фокуса на дефолтные). Для того, чтобы этого избежать,​ нужно добавить в конфигурационный файл строку 
- 
-<​code>​IgnoreModifiers 2L</​code>​ 
- 
- 
-Кроме всего перечисленного,​ fvwm может принимать во внимание название активного окна, оно указывается в скобках после ''​Key''​ или ''​Mouse'',​ можно использовать wildcards (*). 
- 
-В качестве действия можно указывать любую команду fvwm - ''​Exec'',​ ''​Function'',​ ''​PipeRead'',​ ''​Restart''​ и т.д. 
- 
-Таким образом,​ сочетания клавиш задаются так: 
- 
-Key/Mouse (Окно) Клавиша/​Кнопка Контекст Модификатор Действие 
- 
-Несколько примеров:​ 
- 
-Список окон по <​key>​Alt-Tab</​key>​ 
-<​code>​Key Tab A 1 WindowList Root NoGeometry</​code>​ 
- 
-Закрытие окна по левому клику на крайней правой кнопке декорации 
-<​code>#​Функция 
-DestroyFunc DeleteWin 
-AddToFunc DeleteWin 
-+ I Delete 
- 
-#Вызов функции 
-Mouse 1 2 N DeleteWin</​code>​ 
- 
- 
-Меню по правому клику на рабочем столе 
-<​code>​Mouse 3 R N Menu MainMenu</​code>​ 
- 
-При активном окне браузера вызвать ​ gmrun по <​key>​Ctrl-Alt-Z</​key>​ 
-<​code>​Key (*Namoro*) Z A C1  Exec exec gmrun</​code>​ 
- 
-===== Практические советы ===== 
- 
-Несколько советов по настройке fvwm, которые могут помочь в настройке,​ улучшить читаемость и переносимость конфигурационного файла, задействовать полезные функции fvwm. 
- 
-  * Удобно разнести настройки,​ отвечающие за разные аспекты поведения wm по разным конфигурационным файлам и объединить их с помощью функции ''​Read''​ - это облегчит чтение конфигурационных файлов,​ внесение в них изменений по ходу работы и обмен интересными вариантами настройки. В последствии можно будет создать меню настроек fvwm, где каждый пункт будет ссылаться на соответствующий конфигурационный файл. 
-  * В процессе настройки полезно добавить горячие клавиши для ''​FvwmIdent''​ и ''​FvwmConsole''​ - первая функция позволяет вызвать информацию об окне - слой, геометрия,​ тип и т.д., а вторая - вводить команды fvwm в специальной консоли. 
-  * Если вы хотите использовать в своей конфигурации fvwm скрипты в меню, подобные pipe-scripts в [[openbox]],​ такие меню имеет смысл делать динамически генерируемыми. Синтаксис такого меню: 
-<​code>​ 
-#​Создаём меню и объявляем его динамически воссоздаваемым функцией 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 
-</​code>​ 
   * В репозитариях Ubuntu нет неофициального пакета [[fvwm-patched]] - fvwm 2.5.28 с набором патчей,​ но исходники без проблем компилируются.   * В репозитариях Ubuntu нет неофициального пакета [[fvwm-patched]] - fvwm 2.5.28 с набором патчей,​ но исходники без проблем компилируются.
   * Для того, чтобы нажатие <​key>​NumLock</​key>​ не приводило к сбросу ваших настроек,​ добавьте в свой конфигурационный файл строку,​ заставляющую fvwm не считать <​key>​NumLock</​key>​ модификатором:​   * Для того, чтобы нажатие <​key>​NumLock</​key>​ не приводило к сбросу ваших настроек,​ добавьте в свой конфигурационный файл строку,​ заставляющую fvwm не считать <​key>​NumLock</​key>​ модификатором:​