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

Файл 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.
  2. Строки 14-18. He является ли заданная в PREFERRED оболочка AnotherLevel.
  3. Строки 21-32. Если PREFERRED не задает оболочку, предпринимается попытка использовать GNOME. Если GNOME не установлена, то проверяется KDE.
  4. Строки 35-36. Выполняется очистка путем удаления временных файлов, которые могли остаться после предыдущего сеанса работы X Windows.
  5. Строки 38-54. Проверка стиля диспетчера окон AnotherLevel, запуск диспетчера с этим стилем и завершение работы сценария.
  6. Строки 56-69. Попытка запустить AnotherLevel со стилем Fvwm95. В случае неудачи запускаются xclock, xterm и Netscape, затем предпринимается попытка запустить fvwm. Если fvwm отсутствует, запускается twm.

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

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