<< Предыдущий раздел | /\ Содержание | >> Следующий раздел

Последовательность запуска X-Window

Для того, чтобы знать, как перенастроить поведение 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 "многоэтажной" конструкции.

Файлы конфигурации разных window manager'ов

Расположение файлов конфигурации некоторых window manager'ов
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.

Конфигурация 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".

Файлы конфигурации AnotherLevel
ФайлНазначение
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) и исправлять отдельные параметры -- такие, как цвета, шрифты, клавиши.


<< Предыдущий раздел | /\ Содержание | >> Следующий раздел