Файл .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.