<< Предыдущий раздел | /\ Содержание | >> Следующий раздел
Для того, чтобы знать, как перенастроить поведение window manager'а, полезно представлять себе процесс запуска X-Window.
startx (скрипт) | +-> xinit /| X<-+ +-> /etc/X11/xinit/xinitrc или ~/.xinitrc (скрипт) | +-> /etc/X11/xinit/Xclients или ~/.Xclients (скрипт) | +-> Разные программы (xclock, xeyes...) +-> window manager
Значительная часть работы выполняется скриптами на языке shell, так что всегда можно посмотреть, что именно там делается, и при необходимости внести какие-то изменения.
Скрипт startx запускает программу xinit, которая, в свою, очередь, первым делом запускает X-сервер, а затем запускает скрипт xinitrc. В нем выполняются некоторые настройки, и затем запускается скрипт Xclients, в котором запускаются некоторые "полезные" программы (часы, глаза, русификатор и т.д.) и, в самую последнюю очередь, window manager.
Если в home-директории пользователя есть файл .xinitrc, то в качестве xinitrc будет использоваться он, иначе -- общесистемный /etc/X11/xinit/xinitrc. Аналогично если есть .Xclients, то используется он, иначе -- /etc/X11/xinit/Xclients. Такой подход позволяет любому пользователю при необходимости настроить поведение xinitrc и Xclients "под себя" -- достаточно скопировать общесистемный файл в свою home-директорию (добавив в начало имени "."), и внести в него нужные изменения.
Последнее, что должен сделать скрипт Xclients -- запустить window manager. Стандартный файл Xclients устроен так, что он может запустить (при помощи программы RunWM) один из стандартных window manager'ов -- Fvwm, Fvwm2/Fvwm95, AfterStep и WindowMaker. При использовании же другого window manager'а надо вставить команду его запуска вместо имеющейся в Xclients "многоэтажной" конструкции.
WM | Файл или директория/ |
---|---|
fvwm | /etc/X11/fvwm/system.fvwmrc ~/.fvwmrc |
fvwm2 | /etc/X11/fvwm2/system.fvwm2rc ~/.fvwm2rc |
AnotherLevel | /etc/X11/AnotherLevel/ ~/.fvwm2rc*.m4 |
AfterStep | ~/GNUstep/Library/AfterStep/ |
WindowMaker | ~/GNUstep/Library/WindowMaker/ |
twm | /etc/X11/twm/system.twmrc ~/.twmrc |
Большинство window manager'ов используют общесистемные файлы из директории /etc/X11/, а если в home-директории есть персональный файл конфигурации -- то его. Это позволяет скопировать общесистемный файл к себе и слегка модифицировать его под свои нужды.
AfterStep и WindowMaker используют слегка другую идеологию -- при первом своем старте они копируют стандартные файлы конфигурации в пользовательскую директорию ~/GNUstep/, и далее все настройки выполняются только там.
У этих двух window manager'ов есть еще одно существенное отличие. В них значительная часть настроек может выполняться интерактивно помощи меню. В других же window manager'ах надо непосредственно редактировать файлы конфигурации. Оба подхода имеют как достоинства, так и недостатки -- интерактивная настройка удобнее для "обычного пользователя", а редактирование общесистемных файлов -- для администратора, когда необходимо поддерживать работу многих пользователей сразу.
Все window manager'ы используют разный синтаксис в файлах конфигурации, так что наилучший рецепт тут (к сожалению) -- посмотреть примеры файлов и почитать документацию. Вообще, конфигурирование window manager'ов и применяемые в этом концепции (функции, модули, стили) могли бы стать темой отдельной книги. Однако, большинство window manager'ов, используемых в Linux, являются "производными" от Fvwm/Fvwm2, которые, в свою очередь происходят от древнего Twm. Поэтому, разобравшись в конфигурации одного из них, довольно легко разобраться в другом.
Кроме того, все window manager'ы считывают содержание директории
/etc/X11/wmconfig/
в которую большинство современных программ записывают краткий файл с информацией "о себе" -- название, командная строка, в какое меню поместить.
Для примера рассмотрим простейшую настройку AnotherLevel.
В RedHat Linux в качестве window manager'а по умолчанию используется AnotherLevel. Вообще говоря, это не отдельная программа, а набор файлов конфигурации к Fvwm2, позволяющих имитировать поведение Fvwm95 и MWM. Они расположены в директории /etc/X11/AnotherLevel/ и имеют суффикс ".m4", указывающий на то, что они "пропускаются" через препроцессор M4.
Реально при запуске Fvwm2 ему в качестве файла конфигурации указывается /etc/X11/AnotherLevel/fvwm2rc.m4 (или ~/.fvwm2rc.m4, если он есть), а он при помощи директивы include "включает" остальные файлы, в которых настраиваются разные аспекты -- цвета, меню, стили окон и т.д.
Если скопировать один из этих файлов к себе в home-директорию, добавив в начало имени точку и убрав суффикс ".m4" (т.е. fvwm2rc.keys.m4->.fvwm2rc.keys), то он будет использоваться вместо общесистемного. К сожалению, это не относится к файлам из поддиректории decors/, в которых указываются цвета (хотя можно исправить и это, но потребуется слишком многое поменять).
В таблице ниже приведен список основных файлов конфигурации AnotherLevel с краткими пояснениями. Последовательность их использования можно посмотреть в файле /etc/X11/AnotherLevel/fvwm2rc.m4 в директивах "readFile".
Файл | Назначение |
---|---|
fvwm2rc.defines | Некоторые глобальные определения -- шрифты, стили заголовков окон, надо ли издавать звуки при операциях с окнами и т.д. |
fvwm2rc.macros | Определения макросов m4, используемых далее в других файлах. |
fvwm2rc.decors | Декорирование -- как должны выглядеть окна, пиктограммы, меню; здесь же "включаются" файлы из поддиректории decors/. |
fvwm2rc.functions | "Функции" -- что делать при сворачивании окна в пиктограмму, при перемещении его и т.д. |
fvwm2rc.keys | Привязки комбинаций клавиш |
fvwm2rc.menus | Определения меню |
fvwm2rc.defstyles | Стили окон |
fvwm2rc.modules | Настройки для модулей (отдельных подпрограмм) |
fvwm2rc.init | Действия, выполняемые при запуске/перезапуске window manager'а |
Следует заметить, что, поскольку для просмотра файлов используется препроцессор M4, то в них применяются довольно необычные кавычки -- в качестве открывающей используется обратный апостроф "`" (клавиша <`/~>), а в качестве закрывающей -- прямой "'" (клавиша <'/">).
Большинству пользователей не требуется разбираться во всех аспектах работы Fvwm/AnotherLevel, а достаточно находить (например, при помощи grep) и исправлять отдельные параметры -- такие, как цвета, шрифты, клавиши.
<< Предыдущий раздел | /\ Содержание | >> Следующий раздел