Виктор Вислобоков, linux.perm.ru
В настоящее время пользователю предлагается широчайший выбор различных менеджеров окон для X Window. Среди самых популярных можно отменить fvwm, fvwm2, kwm (Как менеджер, входящий в KDE), fvwm95, afterstep, icewm, qvwm, enligment, mwm.
При написании данного документа я не преследовал цели как-то сравнить между собой эти менеджеры окон или показать преимущества fvwm95 перед другими. Я решил просто описать возможности fvwm95, его основные черты и дать понятие: что такое менеджер окон вообще. Также здесь не дается никаких готовых примеров по настройке или каких-либо руководств. Информацию о том как все это сделать можно почерпнуть из документации к fvwm95, тем более, что большая ее часть переведена на русский язык. Тем не менее, я надеюсь, что данный труд заинтересует тех людей, которые стоят сейчас перед выбором менеджера окон и они посветят fvwm95 некоторую толику времени и внимания, которые он несомненно заслуживает.
Как можно понять из названия fvwm95 является потомком fvwm. Некоторое время назад, дороги продолжения линии разработки менеджера окон fvwm разошлись и из fvwm на свет появилось два продукта: fvwm2 и fvwm95. С этого времени они разрабатывались отдельно, однако поскольку оба они имели одного родителя, то их до сих пор объединяет сходство их конфигурационных файлов и используемых модулей, хотя кое-какие отличия все-таки появились.
Это программа, которая управляет окнами в X Window. Для начинающих пользователей и для пользователей Window 95/NT это не очевидно. Именно по этому, я попробую, в меру своих сил, объяснить попонятнее.
Используя Windows 95/NT вы получаете в свое распоряжение некоторую графическую оболочку, которая выглядит вполне определенным образом. Эта оболочка реагирует на нажатие "горячих" клавиш, на движение и нажатие кнопок мыши. Фактически видимой единицей графической оболочки является окно. Это не всегда кажется однозначным, но приглядевшись вы поймете, что это так. Обычно окно приложения имеет четыре кнопки (одна слева и три справа) и полосу заголовка. В полосе заголовке вы видите название окна, а с помощью кнопок управляете окном: закрываете его, минимизируете окно, разворачиваете на весь экран. Нажав левую кнопку мыши на полосе заголовка, вы можете переместить окно, нажав левую кнопку мыши на сторонах или углах окна - изменить его размеры. Все эти действия, которые на первый взгляд кажутся очевидными, в X Window выполняет менеджер окон.
Важно то, что в отличии от Windows 95/NT менеджеры окон в X Window могут быть разными. Это дает потрясающие возможности в изменении оформления всего того, что вы видите на экране и что обычно называют английским словом desktop или по русски рабочий стол. Эти возможности превосходят все возможности настройки, которые вам предоставляет Windows 95/NT. Если вам покажется это спорным, то не спешите с выводами и читайте дальше, а я пока замечу, что в X Window возможно работать без менеджера окон. Однако, такая работа не принесет вам удовольствия - окно приложения не будет иметь полосы заголовка и кнопок управления, X Window не будет реагировать на "горячие" клавиши, окно нельзя будет переместить или изменить его размер и т.д.
Следует также отметить, что менеджеры окон умеют гораздо больше, чем просто управлять окнами. В дополнение к этим обязательным функциям они умеют еще довольно много. Все дополнительные возможности, которые предоставляет вам менеджер окон призваны облегчить вашу повседневную работу, создать максимально комфортные для вас условия. Однако практически каждый менеджер окон имеет свои дополнительные средства и функции. Здесь же я рассматриваю только возможности оконного менеджера fvwm95.
Суффикс "95" в названии fvwm95 не случаен. Это означает, что авторы этого менеджера окон сделали внешний вид fvwm95 довольно похожим на графическую оболочку Windows 95. Плохо это или хорошо решать вам. Однако вы вполне можете настроить свой fvwm95 так, чтобы он был совсем не похож на Windows 95.
3.1. Окна
Как и в Windows 95, без каких-либо специальных настроек, окно имеет заголовок синего цвета и четыре кнопки для управления окном. На кнопке слева при соответствующей настройке появляется иконка, соответствующая конкретному приложению. Ниже в качестве примера показано окно терминала при использовании fvwm95.
Кнопки окна выполняют те же функции, что и в Window 95. Однако, вы можете назначить этим кнопкам совершенно другие функции. Также как и в Windows 95 при нажатии на левую кнопку появляется меню для управления окном. Это меню вы также можете изменить по вашему вкусу. Например, при поставке fvwm95 меню было на английском. Русифицировать его было делом пары минут - смотрите рисунок ниже.
Теперь самое время упомянуть о дополнительных возможностях, которые вам предоставляет fvwm95. Дело в том, что кнопок у окна может быть значительно больше. Можно приделать к окну до пяти кнопок справа и слева. На каждую кнопку можно назначить свою команду и кроме того на каждую кнопку можно поместить свою собственную иконку. Как это будет выглядеть вам демонстрирует рисунок ниже.
Как видите иконки на кнопках могут быть даже цветными (кнопки слева). Конечно, вам вряд ли захочется использовать все 10 кнопок, но добавить одну или две к существующим четырем вполне. Ограничения накладываются только на размер иконки, который должен быть 13x11 точек.
Излишне говорить о том, что вы можете изменить цвет заголовка или бордюра окна по вашему вкусу.
3.2. Модули
Без сомнения самым интересным средством в fvwm95 являются модули. Не все возможности, которые может вам предоставить fvwm95 встроены непосредственно в сам исполняемый файл fvwm95. Большинство возможностей встроено в модули. Модуль - это фактически отдельная программа, написанная так, чтобы взаимодействовать с fvwm95. Эту программу может запустить только сам менеджер окон, так как при этом образуется канал связи модуля и менеджера, по которому они обмениваются данными и командами.
Достоинства использования модулей очевидны - экономия памяти. Если вы не используете возможности, предоставляемые отдельным модулем, то вы не загружаете его и не расходуете память понапрасну. В настоящее время fvwm95 предоставляет 24 модуля, но их количество продолжает расти.
3.2.1. Модуль FvwmTaskBar
Этот модуль предоставляет вам Панель задач как в Windows 95. Однако в отличии от последней вы можете не использовать этот модули при работе в fvwm95. Примерный вид FvwmTaskBar дан на рисунке ниже
Как видите внешний вид очень похож на панель задач в Windows 95. Но если посмотреть внимательно, то видны и отличия.
Первое отличие состоит в наличии пиктограммки-конвертика в правом углу. Присутствие этого конвертика говорит о наличии непрочитанной электронной почты. Если установить курсор мыши на конвертик и подержать пару секунд, то на экране появится сноска, в которой будут указаны отправители непрочитанных почтовых сообщений и темы этих сообщений. Если во время работы в fvwm95 вам приходит письмо, то вам будет подан звуковой сигнал. Не правда ли, что все это очень удобно?
Второе отличие состоит в наличии пиктограммки-замочка в том же правом углу, но левее времени. Двойным щелчком на этот замочек включается хранитель экрана, который вы задали в настройках модуля FvwmTaskBar. Кстати таких штучек можно навставлять рядом с существующими довольно много.
Как и в Windows 95 при установке модемного соединения появляется пиктограммка активности модема, а при разрыве соединения она пропадает.
Третье отличие заключается в кнопке "Старт" в левом углу. Вы можете сами нанести на нее название, такое какое захотите и назначить иконку слева от названия. Кроме того вы можете по нажатию этой кнопки, вместо вызова меню, сделать вызов любой другой функции.
Как и в Windows 95 вы можете поместить FvwmTaskBar сверху или снизу экрана, а также сделать панель задач "всплывающей", чтобы она не занимала место на экране.
3.2.2. Модуль FvwmButtons
Этот модуль предоставляет возможности конструирования различных прямоугольных контейнеров с кнопками внутри. Для тех кому эта фраза покажется непонятной поясню, что этот модуль можно использовать, например, для построение панелей кнопок типа "Microsoft Office" и "LaunchPad" в OS/2. Чтобы не быть голословным, я могу сказать, что с помощью этого модуля я, за довольно небольшой промежуток времени, сделал себе маленькую панельку в стиле "Microsoft Office" и ниже приведен рисунок этой панельки
Это довольно простой пример, но и он показателен. При нажатии на любую из кнопок с иконкой, вызывается соответствующая ей программа, а вот если вы нажмете на часть занятую словами "Linux Office'97", то ничего не произойдет. Кроме того самая правая кнопка со словом "LATIN" это не просто кнопка - это уменьшенное окно программы xrus, которая переключает шрифт с латинского на русский и если вы нажмете на нее, то слово "LATIN" изменится на "RUSSIAN", т.е. произойдет переключение регистров. Таким образом полноценное окно программы xrus, является одновременно кнопкой, включенной в контейнер и перетаскивается вместе со всем контейнером. Замечу, что вы можете таким же образом уменьшить и вставить в контейнер с кнопками и другие окна - например окно программы xclock, которая выводит на экран движущиеся стрелки часов.
Контейнер с кнопками не обязательно должен иметь один ряд кнопок. Это может быть и матрица кнопок размером x на y. И даже более того - кнопка в матрице в свою очередь может содержать еще кнопки. Кроме того, размеры кнопок могут быть разными, но, однако, кратными размеру самой маленькой кнопки.
Кнопки могут содержать как иконки так и надписи, а также иконки вместе с надписями или вообще ничего не содержать. При желании можно отрегулировать ширину бордюра кнопок, а также цвета фона, надписи на кнопке и тени кнопки.
В заключении замечу, что модулей FvwmButtons может быть запущено несколько. При этом каждому модулю можно задать свою собственную конфигурацию.
3.2.3. Модуль FvwmScript
Этот модуль появился только в последних версиях fvwm95. Он позволяет пользователю писать свои собственные сценарии, на специальном языке, который понимает FvwmScript. Этот язык содержит небольшое количество команд, для создания графических объектов и управления ими. К сожалению этот модуль пока еще сыроват и не доведен до ума, но уже сейчас на нем можно писать несложные сценарии для каких-либо приятных мелочей.
Например по двойному нажатию на время, которое находится на панели модуля FvwmTaskBar можно вызвать сценарий установки времени и даты, Этот сценарий входит в стандартную поставку fvwm95 и выглядит следующим образом:
Часы, которые вы видите на рисунке идут и являются ничем иным как уменьшенным окном программы xclock, вставленным в окно, нарисованное FvwmScript.
Словом, если вам необходимо быстро написать что-либо мелкое и несложное, то я бы очень рекомендовал использовать этот модуль.
Еще одно его достоинство заключается в том, что можно использовать все команды, которые понимает сам fvwm95 и которые описаны на страничке руководства к fvwm95.
3.2.4. Модуль FvwmAudio
Модуль прост, как его назначение и его настройки. Он предназначен для проигрывания аудиофайлов .wav в моменты, когда происходят определенные события: открытие/закрытие окон, их максимизация/минимизация, смена фокуса и т.д.
В сам модуль встроенная поддержка библиотеки rplay, но для проигрывания .wav файлов вы можете использовать в любую внешнюю программу.
3.2.5. Модуль FvwmBacker
Этот модуль также очень прост. Его можно использовать для выполнения какой-либо команды при перемещении на один из десктопов. Это особенно удобно, когда вы хотите для каждого десктопа установить свой собственный цвет фона или фоновую картинку.
3.2.6. Модуль FvwmBanner
Совсем простой модуль. Единственная его задача выводить при вызове заставку в виде заданного pixmap файла и удерживать ее на экране заданное количество секунд.
3.2.7. Модуль FvwmConsole
Данный модуль представляет собой окно для ввода команд fvwm95 в консольном режиме. Для своей работы требует, чтобы был установлен Perl.
3.2.8. Модуль FvwmCpp
Модуль позволяет производить препроцессорную обработку конфигурационного файла fvwm95 в стиле препроцессора cpp.
3.2.9. Модуль FvwmDebug
Этот модуль служит для отладочных целей.
3.2.10. Модуль FvwmForm
Идеологически устаревший модуль, с помощью которого раньше писали вещи, подобные тем, что делаются теперь в FvwmScript. Однако FvwmForm предоставляет гораздо более примитивные возможности, чем FvwmScript. Тем не менее данный модуль при отрисовке окна делает его модальным и это может вам понравиться.
3.2.11. Модуль FvwmIconBox
Опять-таки идеологически устаревший модуль. Его функция - размещение в окне модуля иконок запущенных в данный момент приложений. При нажатии на иконку осуществляет переход к окну приложения.
В данный момент эту задачу с успехом выполняет модуля FvwmTaskBar.
3.2.12. Модуль FvwmIdent
С помощью данного модуля можно получить информацию о любом окне.
3.2.13. Модуль FvwmM4
Модуль выполняет функцию аналогичную FvwmCpp, только препроцессор здесь работает в стиле M4.
3.2.14. Модуль FvwmPager
Данный модуль предназначен для отображения окошка с сильно уменьшенным содержимым указанного количества виртуальных десктопов. С помощью этих окошек можно также переключаться с десктопа на десктоп.
3.2.15. Модули FvwmSave и FvwmSaveDesk
Оба модуля предназначены для записи информации о текущем десктопе (окна и их местоположение) в файл для последующего использования.
Различие между ними заключается в том, что FvwmSave записывает состояние десктопа в файл с форматом в стиле .xinitrc, а FvwmSaveDesk делает тоже самое в формате вызова команд в fvwm95.
3.2.16. Модуль FvwmScroll
По возможности добавляет в окно полосу прокрутки.
3.2.17. Модуль FvwmTalk
Отображает маленькое окно, в котором с командной строки можно набирать команды fvwm95. Это полезно, например, для запуска модулей вручную.
3.2.18. Модуль FvwmWinList
Показывает окно, в котором размещены кнопки, соответствующие окнам запущенных приложений. При нажатии на такую кнопку осуществляется переход к окну с приложением.
Идеологически модуль устарел, так как теперь эти функции выполняет FvwmTaskBar.
3.2.19. Модуль FvwmIconMan
B опять идеологически устаревший модуль, который выполняет функции сходные с модулем FvwmWinList.
3.2.20. Модуль FvwmWharf
Этот модуль заимствован из менеджера окон afterstep. Функции, которые он выполняет сходны с функциями FvwmButtons. Несмотря на то, что FvwmWharf не умеет делать многого из того, что умеет делать FvwmButtons, он имеет несколько особенностей, которых нет у FvwmButtons:
3.3. Функции
fvwm95 позволяет объединять несколько простых команд в функции. Кроме специальных функций типа InitFunction, пользователь может создать практически неограниченное количество своих.
В функции можно передавать параметры, которые затем будут доступны через идентификаторы $0,$1... в теле функции.
Используя функции можно создавать довольно мощные команды, что существенно расширяет возможности fvwm95. Кроме того можно прикрепить выполнение функции к какой-либо горячей клавише или к нажатию кнопки мыши.
3.4. Клавиши
fvwm95 предоставляет вам возможность назначить любые горячие клавиши или переопределить уже существующие. При этом при нажатии горячей клавиши можно вызывать функцию, модуль, меню, команду fvwm95 или внешнюю программу.
При задании горячих клавиш, есть возможность учитывать нажаты ли в это же время клавиши: shift, ctrl или alt.
3.5. Мышь
С мышью дела обстоят вообще уникально. Можно задавать выполнение действий не только при нажатии кнопок мыши (кстати для 3-х кнопочных мышей можно использовать все 3 кнопки) вне окна, но и при нажатии кнопок мыши на заголовке окна, на кнопках слева и справа от заголовка окна, на бордюре окна и даже на углах окна. При этом, например, вы можете задать одно действие при нажатии левой кнопки мыши на заголовке окна и другое при нажатии правой.
Естественно, что можно присвоить команду как для одиночного нажатия кнопок так и для двойного. Кроме этого при назначении команд опять таки может быть учтено нажатие клавиш shift, ctrl или alt.
Под действием понимается как и в случае клавиш вызов функции, модуля, меню, команды fvwm95 или внешней программы.
Как видите диапазон возможностей fvwm95 довольно значителен. Однако, выбирать каким менеджером окон пользоваться, предстоит вам. От себя могу только добавить, что научиться использовать, описанные выше возможности не представляет особого труда - документация есть и она довольно полна. Со своей стороны я могу только порекомендовать вам внимательно изучить примеры, которые поставляются с fvwm95, а также станицы руководства man, часть которых переведена мной на русский язык.
И наконец позвольте вам показать как выглядит настроенный fvwm95 у меня:
Экран 1
Экран 2
Экран 3(dfm поверх Fvwm95)