Файл .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. Обнаруженный файл запускается и запускает, в
1
свою
очередь, указанные клиенты. Если файл .Xclients не обнаружен, выполняется поиск
и запуск пюбального файла Xclients. Если и он не найден, то запускается некоторый
стандартный набор программ, среди которых xclock, окно xterm, Web-браузер и,
если имеется,
диспетчер
окон fVwm2 или twm.