Файл .Xclients

Вероятно, при изучении файла xinitrc вы заметили, что пользователь может заменить установки глобального файла Xclients собственными, записанными в файле .Xclients его исходного каталога. В среде Red Hat после запуска Х-сервера программа xinit запускает исходные клиенты при помощи этих файлов.

Данный файл, как и файл xinitrc, - это сценарий оболочки, подчиняющийся всем правилам составления таких сценариев. Чтобы понять, для чего используется Xclients, рассмотрим стандартный файл Xclients из предварительной версии Linux Red Hat 7.1 (как и в предыдущем примере, строки пронумерованы для удобства).

  1. : #!/bin/bash
  2. : # (с) 1999, 2000 Red Hat, Inc.
  3. : # есть ли у пользователя стандартная оболочка
  4. : PREFERRED=
  5. : if [ -f /etc/sysconfig/desktop ]; then
  6. : if [ -n "'grep -i GNOME /etc/sysconfig/desktop'" ] ; then
  7. : PREFERKED=gnome-session
  8. : elif [ -n "'grep -i KDE /etc/sysconfig/desktop'" ]; then
  9. : PKEFERRED=startkde
  10. : elif [ -n "'grep -i AnotherLevel /etc/sysconfig/desktop'" ] ; then
  11. : PREFERRED=AnotherLevel
  12. : .fi
  13. : fi
  14. : if [ -n "$PKEFERRED" -a "$PREFERRED"i="AnotherLevel" ] && \
  15. : which $PREFERRED >/dev/null 2>&1; then
  16. : PREFERRED='which $PREFERRED'
  17. : exec $PREFERRED
  18. : fi
  19. : t Если мы добрались сюда, то либо необходим AnotherLevel либо
  20. : # файл оболочки отсутствует и переменная PREFERRED не установлена.
  21. : if t -z "$PREFERRED" ] ; then
  22. : GSESSION=gnome-session
  23. : STARTKDE=startkde
  24. : # по умолчанию запускается GNOME.
  25. : if which $GSESSION >/dev/null 2>&1; then
  26. : exec 'which $GSESSION'
  27. : fi
  28. : # если GNOME не установлен, пробуем КОЕ.
  29. : if which $STARTKDE >/dev/null 2>&1; then
  30. : exec 'which $STARTKDE'
  31. : fi
  32. : fi
  33. : # В конце концов пробуем AnotherLevel
  34. : # TheNextLevel оставляет эти файлы нетронутыми.
  35. : rm -£ gHOME/Xrootenv.0
  36. : rm -f /tmp/fvwmrc* 2>/dev/null
  37. : # Сначала проверяются настройки пользователя
  38. : if [ -f $HOME/.wm_style ] ; then
  39. : WMSTYLE='cat $HOME/.wm_style | tr A-Z a-z'
  40. : case "$WMSTYLE" in
  41. : afterstep)
  42. : exec /usr/XllR6/bin/RunWM -AfterStep
  43. : ;;
  44. : windowmaker|wmaker)
  45. : exec /usr/XllR6/bin/RunWM —WindowMaker
  46. :
  47. : fvwm95|fvwm|fvwm2)
  48. : exec /usr/XllR6/bin/RunWM -Fvwm95
  49. :
  50. : mwm|lesstif)
  51. : exec /usr/XllR6/bin/'RunWM -FvwmMWM
  52. :
  53. : esac
  54. : fi
  55. : # Ну вот! Ничего путного не установлено. Возврат к fvwm2 (стиль win95) или twm
  56. : /usr/XllR6/bin/RunWM -Fvwm95 || {
  57. : # Вот те раз! Нет ни fvwm95, ни fvwm2;
  58. : # возврат к надежным установкам
  59. : xclock -geometry 100x100-5+5 &
  60. : xterm -geometry 80x50-50+150 &
  61. : if [ -f /usr/bin/netscape -a -f /usr/share/doc/HTML/index.html ]; then
  62. : netscape /usr/share/doc/HTML/index.html &
  63. : fi
  64. : if [ -f /usr/XllR6/bin/fvwm]; then
  65. : exec tvwra
  66. : else
  67. : exec twm
  68. : fi
  69. : }

Приведем описание файла (аналогичное описанию файла xinitrc).

  1. Строки 4—13. Установка рабочей среды по умолчанию. Рабочую среду по умолчанию (см. гл. 11.) вы можете установить с помощью переменной PREFERRED в строке 4. Если PREFERRED не определяет никакую оболочку, то Строки 5-12 проверяют, какая оболочка но умолчанию задана в файле /etc/sysconf ig/desktop: GNOME, KDE или Another Level.
  1. Строки 14—18. He является ли заданная в PREFERRED оболочка AnotherLevel.
  1. Строки 21—32.Если PREFERRED не задает оболочку, предпринимается попытка использовать GNOME. Если GNOME не установлена, то проверяется KDE.
  1. Строки 35—36. Выполняется очистка путем удаления временных файлов, которые могли остаться после предыдущего сеанса работы X Windows.
  1. Строки 38—54. Проверка стиля диспетчера окон AnotherLevel, запуск диспетчера с этим стилем и завершение работы сценария.
  1. Строки 56—69. Попытка запустить AnotherLevel со стилем Fvwm95. В случае неудачи запускаются xclock, xterm и Netscape, затем предпринимается попытка запустить fvwm. Если fvwm отсутствует, запускается twm.

Чтобы установить собственный клиент, запускаемый автоматически при запуске X Windows, можно скопировать глобальный файл Xclients в файл . Xclients вашего исходного каталога (копирование файлов рассмотрено в гл. 14.) и отредактировать его, введя команды запуска нужных программ перед разделом, в котором указан запуск диспетчера окон. Такой порядок запуска вызван тем, что после запуска диспетчера окон команда exec завершает выполнение сценария.