Последовательность запуска X Windows. Файл xinitrc.
Конфигурирование сервера XFree86 позволяет обеспечить оптимальное качество изображения на экране. Но иногда возникает потребность в конфигурировании способа запуска самой среды X Windows. Это может сделать любой пользователь, редактируя файлы .xinitrc и.Xclients в исходном каталоге. Параметры в этих файлах имеют более высокий приоритет, чем соответствующие параметры в системных файлах. В Linux Red Hat 7.1 последние находятся в каталогах /etc/X11/xinit/xinitrc и/etc/Xll/xinit/Xclients.
Файл xinitrc
Xinit – специальная программа запуска Х-сервера и исходной программы-клиента (например, диспетчера окон). По умолчанию startx проверяет наличие файла.xinitrc в исходном каталоге пользователя и запускает с этим файлом программу xinit. Если файл.xinitrc пользователя обнаружить не удается, программа xinit запускается с системным файлом xinitrc (в Linux Red Hat 7.1 – /etc/Xll/xinit/xinitrc). Если и системный файл найти не удается. то после запуска Х-сервера xinit открывает только окно xterm.
Файл xinitrc (или xinitrc) – это выполняемый сценарий оболочки. Подробнее оболочки описаны в гл. 16, а сейчас мы рассмотрим стандартный файл из версии Linux Red Hat 7.1 и его функции. Строки пронумерованы для удобства: в реальном файле они не нумеруются.
1: #!/bin/sh 2: # (с) 1999, 2000 Red Hat, Inc. 3: userresources=$HOME/.Xresources 4: usermodmap=$HOME/.Xmodmap 5: userxkbmap= $HOME/.Xkbmap 6: sysresources=/etc/Xll/Xresources 7: sysmodmap=/etc/XI1/Xmodmap 8: sysxkbmap=/etc/Xll/Xkbmap 9: # объединение параметров по умолчанию 10: if [ – f "$sysresources" ]; then 11: xrdb – merge "$sysresources" 12: fi 13: if[ – f "$userresources" ]; then 14: xrdb – merge "$userresources" 15: fi 16: # объединение эдов клавиатуры 17: if [ – f "$sysxlcbmap" ]; then 18: setxkbmap 'cat "$sysxkbmap" 19: XKB_IN_USE=yes 20: fi 21: if [ – f "$userxkbmap" ]; then 22: setxkbmap 'cat "$useirxktomap" ' 23: XKB_IN_USE=yes 24: fi 25: if [ – z "$XKB_IN_USE" – a! – L /etc/Xll/X ]; then 26: if grep ' Л ехес.*/Xsun' /etc/Xll/X > /dev/null 2>&1 && [ – f /etc/Xll/XF86Config ]; then 27: xkbsymbols='sed – n – e 's/~[ ] *XkbSymbols ]*"\(.*\) ".*$./\l/p' /etc/Xll/XF86Config' 28: if [ – n "$xkbsymbols" ]; then 29: setxkbmap – symbols "$xkbsymbols" 30: XKB_IN_USE=yes 31: fi 32: fi 33': fi 34: # xkb и xmodmap плохо согласуются 35: if [ -z "$XKB_IN_USE" ]; then 36: if [ – f "$sysmodmap" ]; then 37: xmodmap "$sysmodmap" 38: fi 39: if [ – f "$usermodmap" ]; then 40: xmodmap "$usermodmap" 41: fi 42: fi 43: unset XKB_IN_USE 44: # Пользователь может запускать собственные клиенты. Если нет, 45: # вернитесь к стандартным системным установкам. 46: # запуск всех системных-скриптов xinitrc. 47: for i in /etc/Xll/xinit/xinitrc.d/*; do 48: if [ – x "$I" ]; then 49: "$i" 50: fi 51: done 52: if [ – f $HOME/.Xclients ]; then 53: exec $HOME/.Xclients 54: elif [ – f /etc/Xll/xinit/Xclients ]; then 55: exec /etc/Xll/xinit/Xclients 56: else 57: # Безопасные установки. Впрочем, сюда лучше не попадать 58: # (Мы нейтрализуем ошибки и в Xclients) ничего страшного. 59: xclock – geometry 100x100-5+5 & 60: xterm – geometry 80x50-50+150 & 61: if [ – f /usr/bin/netscape – a – £ /usr/doc/HTML/index.html ]; then 62: netscape /usr/doc/HTML/index.html & 63: fi 64: if [ – f /usr/XllR6/bin/fvwm2 ]; then 65: exec fvwm2 66: else 67: exec twm 68: fi 69: fi
Приведем описание команд файла.
- Строки 3-8. Указывается расположение файлов, которые понадобятся при выполнении сценария.
Примечание
Файл ресурсов System X, заданный в строке 6 как sysresources, расположен в каталоге /etc/xil/xdm/xresources в Red Hat Linux 7.1. Если необходимо задать этот файл, как общепринятое умолчание для X Windows (см. ниже) измените строку 6 так, чтобы она отражала действительное положение файла. - Строки 10-12. Если существует глобальный файл Xresources, то он используется. Х-ресурсы рассмотрены в следующем параграфе.
- Строки 13-15. Если существует файл пользователя. Xresources в его исходном каталоге, то он используется путем объединения его параметров с текущими значениями.
- Строки 17-20. Если существует глобальный файл сопоставления кодов, то он используется.
- Строки 21-24. Если у пользователя есть файл сопоставления кодов, то он используется.
- Строки 25-33. Эти строки не используются, поскольку сервер Sun X в вашей системе не используется.
- Строки 34-43. Если имеют место конфликты между пользовательскими и системными файлами сопоставления кодов X Window, то задается файл определения клавиатуры.
- Строки 47-51. Эти строки отрабатывают все сценарии, расположенные в каталоге /etc/X11/xinit/xinitrc.d/.
- Строки 52-69. Запуск первых клиентов после запуска Х-сервера.
Сценарий проверяет наличие у пользователя файла.Xclients. Обнаруженный файл запускается и запускает, в свою очередь, указанные клиенты. Если файл Xclients не обнаружен, выполняется поиск и запуск пюбального файла Xclients. Если и он не найден, то запускается некоторый стандартный набор программ, среди которых xclock, окно xterm, Web-браузер и, если имеется, диспетчер окон fVwm2 или twm.