Иллюстрированный самоучитель по Linux

Последовательность запуска 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

Приведем описание команд файла.

  1. Строки 3-8. Указывается расположение файлов, которые понадобятся при выполнении сценария.

    Примечание
    Файл ресурсов System X, заданный в строке 6 как sysresources, расположен в каталоге /etc/xil/xdm/xresources в Red Hat Linux 7.1. Если необходимо задать этот файл, как общепринятое умолчание для X Windows (см. ниже) измените строку 6 так, чтобы она отражала действительное положение файла
    .

  2. Строки 10-12. Если существует глобальный файл Xresources, то он используется. Х-ресурсы рассмотрены в следующем параграфе.
  3. Строки 13-15. Если существует файл пользователя. Xresources в его исходном каталоге, то он используется путем объединения его параметров с текущими значениями.
  4. Строки 17-20. Если существует глобальный файл сопоставления кодов, то он используется.
  5. Строки 21-24. Если у пользователя есть файл сопоставления кодов, то он используется.
  6. Строки 25-33. Эти строки не используются, поскольку сервер Sun X в вашей системе не используется.
  7. Строки 34-43. Если имеют место конфликты между пользовательскими и системными файлами сопоставления кодов X Window, то задается файл определения клавиатуры.
  8. Строки 47-51. Эти строки отрабатывают все сценарии, расположенные в каталоге /etc/X11/xinit/xinitrc.d/.
  9. Строки 52-69. Запуск первых клиентов после запуска Х-сервера.

Сценарий проверяет наличие у пользователя файла.Xclients. Обнаруженный файл запускается и запускает, в свою очередь, указанные клиенты. Если файл Xclients не обнаружен, выполняется поиск и запуск пюбального файла Xclients. Если и он не найден, то запускается некоторый стандартный набор программ, среди которых xclock, окно xterm, Web-браузер и, если имеется, диспетчер окон fVwm2 или twm.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.