Файл .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 так, чтобы она отражала действительное положение файла.

  1. Строки 10—12. Если существует глобальный файл Xresources, то он используется. Х-ресурсы рассмотрены в следующем параграфе.
  1. Строки 13—-15. Если существует файл пользователя . Xresources в его исходном каталоге, то он используется путем объединения его параметров с текущими значениями.
  1. Строки 17—20. Если существует глобальный файл сопоставления кодов, то он используется.
  1. Строки 21—24. Если у пользователя есть файл сопоставления кодов, то он используется.
  1. Строки 25—33. Эти строки не используются, поскольку сервер Sun X в вашей системе не используется.
  1. Строки 34—43. Если имеют место конфликты между пользовательскими и системными файлами сопоставления кодов X Window, то задается файл определения клавиатуры.
  1. Строки 47—51. Эти строки отрабатывают все сценарии, расположенные в каталоге /etc/X11/xinit/xinitrc.d/.
  1. Строки 52—69. Запуск первых клиентов после запуска Х-сервера. Сценарий проверяет наличие у пользователя файла .Xclients. Обнаруженный файл запускается и запускает, в1свою очередь, указанные клиенты. Если файл .Xclients не обнаружен, выполняется поиск и запуск пюбального файла Xclients. Если и он не найден, то запускается некоторый стандартный набор программ, среди которых xclock, окно xterm, Web-браузер и, если имеется, диспетчер окон fVwm2 или twm.