База данных Х-ресурсов
База данных Х-ресурсов
Источником Х-ресурсов служат файлы app-defaults. Существуют версии файлов app-defaults для большинства Х- и KDE-приложений. Содержимое этих файлов можно использовать как образец для создания собственного файла . Xdef aults. В Red Hat Linux 7.1 эти файлы расположены в каталоге /usr/X11R6/lib/Xll/app-defaults/. KDE-приложения располагают собственными файлами app-defaults, хранящимися в каталоге /usr/share/apps/kdisplay/app-defaults/.
Что дальше
Что дальше
Эта глава посвящена X Windows, а следующая - среде командной строки, без которой нельзя изучить систему Linux.
В последующих главах рассмотрена основа системы команд Linux - команды операций с дисковыми файлами и каталогами. Вы узнаете, что такое оболочка (shell) и научитесь работать с панелью управления Red Hat, упрощающей наиболее сложные аспекты конфигурирования системы Linux.
Device
Device
В файле XF86Config может быть несколько разделов Device с описанием видеоадаптеров, используемых -сервером. Как правило, сервер сам определяет большую часть этой информации, но для верности ее следует ввести вручную. А поскольку указанная информация содержит немало специальных параметров видеооборудования, можно затем откорректировать ее при помощи конфигурационных процедур XFree86.
Раздел Device активен только в случае, если он упоминается в разделе Screen.
Рассмотрим пример раздела Device.
Section "Device"
Identifier "Generic VGA"
VendorName "Unknown"
BoardName "Unknown"
Chipset "generic"
# VideoRam 256
# Clocks 25.2 28.3
# BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "MGA Millennium I"
Driver "mga"
Option "hw cursor "-"off"
BusID "PCI:0:10:0"
EndSection Описание директив этого раздела дано в табл. 12.8.
Display
Display
В разделе Screen может быть несколько подразделов Display с описанием возможных режимов экрана.
Рассмотрим один из подразделов предыдущего .примера.
Subsection "Display" Depth 24
Modes "1024x768"
ViewPort 0 0
EndSubsection
Описание четырех директив, составляющих этот раздел, дано в табл. 12.10.
Файл .Xclients
Файл .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 завершает выполнение сценария.
Файл XF86Config
Файл XF86Config
Конфигурационные параметры XFree86 хранятся в файле XF86Conf ig. Обычно он находится в каталоге /etc/XF86Conf ig или /etc/Xll/XF86Conf ig (в зависимости от дистрибутива XFree86). В Linux Red Hat 7.1 этот файл находится в каталоге /etc/X11. Можно также использовать общий конфигурационный файл /usr/XllR6/lib/Xll/XF86Config.eg.
Если вы не знаете, где программа установки XFree86 установила этот фaйл, найдите его с помощью следующей команды.
# locate
XF86Config
В файле XF86Conf ig содержится информация, определяющая работу Х-сервера, в том числе определения клавиатур, параметры мыши и технические характеристики монитора. Этот файл генерируется программами конфигурирования XFree86 - например, Xconfigurator или xf 8 6conf ig.
В некоторых случаях тонкая настройка среды X Windows достигается только редактированием файла XF86Conf ig в текстовом редакторе.
Примечание
На момент написания книги сервер XFree86 версии 4 не поддерживал такого разнообразия драйверов графических карт, как XFree86 версии 3. Но многие конфигурационные параметры входят и в файл XF86Conf ig и в файл XF86Conf ig-4. Если в вашем каталоге /etc/xll содержатся оба файла, то приведенные ниже рекомендации следует применять к файлу
/etc/Xll/XF86Config-4.
Собранные в файле XF86Conf ig параметры разбиты на ряд разделов. Не все они влияют на работу интерфейса GUI. Для версии 4 XFree86 порядок разделов более не важен.
Files (Файлы).
Указание каталогов, в которых расположены дополнительные файлы XFree86, содержащие шрифты, таблицы цветов и т.п.
ServerFlags (Флажки сервера).
Включение и выключение отдельных функций Х-сервера, например способов обработки отдельных сочетаний клавиш.
Module (Модуль).
Спецификация загружаемых в ходе запуска Х-сервера динамически подгружаемых модулей. В их число входят и модули отображений шрифтов. В большинстве случаев, когда Х-сервер уже сконфигурирован и работает, а стандартных шрифтов вполне достаточно, раздел Module в вашем файле XF86Config может отсутствовать.
InputDevice ycmpoucmea ввода).
Спецификация устройств ввода, включая мышь и клавиатуру. Этот раздел не нужен, если есть разделы Keyboard и Pointer.
Keyboard (Клавиатура).
Ссылка на протокол клавиатуры, управляющий сопоставлением кодов клавиш, и другие параметры, например скорость повтора. Этот раздел не нужен, если есть раздел InputDevice. Работает в версии 4 XFree86.
Pointer (Указатель мыши).
Тип мыши, порт подключения и определение кнопок. Этот раздел не нужен, если есть раздел InputDevice. Работает в версии 4 XFree86.
VideoAdaptor (Видеоадаптер).
Этот раздел ориентирован на поддержку видео как "примитива", другими словами, видеоадаптер рассматривается как часть более мощной системы. В книге не рассматривается.
Monitor (Монитор).
Параметры монитора. Может включать сведения из раздела Modes.
Device (Устройство).
Доступные графические устройства (видеоадаптеры).
Modes
(Режимы).
Частота обновления и разрешающая способность монитора. Может быть включен в раздел Monitor.
Screen (Экран).
Связывает монитор с видеоадаптером. Задает параметры доступных Х-серверов, например универсального сервера SVGA, монохромного сервера и т.д. Может включать несколько подразделов Display, соответствующих альтернативным разрешающим способностям и глубинам цвета.
ServerLayout (Раскладка).
Связывает экраны со специальными устройствами ввода, например, клавиатурой и мышью.
DRI.
Задает все параметры интерфейса Direct Rendering Interface (DRI), часто используемого на рабочих станциях, ориентированных на интенсивную работу с графикой. Конфигурация DRJ не рассматривается в книге. Дополнительная информация собрана на узле
http://www.xfree86.org/current/DRI.html
.
Vendor (Поставщик). Специальные параметры изготовителя. В книге данный раздел не рассматривается.
Файл .xinitrc
Файл .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.
Files
Files
В разделе Files указаны некоторые важные файлы, входящие в систему. Ниже приведен пример этого раздела без комментариев.
Примечание
Комментарий в файле XF86Config начинается с символа "#" и занимает одну строку. Строка комментария игнорируется системой XFree86.
Section "Files"
RgbPath "/usr/XllR6/lib/Xll/rgb"
FontPath "/usr/XllR6/lib/Xll/fonts/local/" FontPath "/usr/XllR6/lib/Xll/fonts/misc/" FontPath
"/usr/XHR6/lib/Xll/fonts/75dpi/:unsealed" FontPath
"/usr/XHR6/lib/x11/fonts/100dpi/:unscaled" FontPath "/usr/XllR6/lib/Xll/fonts/Typel/" FontPath
"/usr/XllR6/lib/Xll/fonts/Speedo/" FontPath "/usr/XHR6/lib/Xll/fonts/75dpi/" FontPath
"/usr/XHR6/lib/Xll/fonts/100dpi/"
# ModulePath "/usr/XHR6/lib/modules"
EndSection
Перечислим некоторые основные правила, применимые к этому и остальным шести разделам.
Каждый раздел заканчивается строкой EndSec t ion.
В строке Section в кавычках указывается имя раздела (в данном примере - "Files").
Обычно этот раздел содержит три директивы, описанные в табл. 12.1.
Дополнительная конфигурация X Windows
Глава 12.
Дополнительная конфигурация X Windows
Файл XF86Conf ig
Последовательность запуска X Windows
Х-ресурсы
Вероятно, вы обратили внимание, что среда X Windows обеспечивает степень гибкости и адаптируемости, на которые способна далеко не каждая операционная система с графическим пользовательским интерфейсом (GUI). Конечно, за эту гибкость пришлось заплатить некоторым усложнением системы - чтобы максимально использовать возможности X Windows, иногда приходится проходить непростые конфигурационные процедуры.
В этой главе подробно рассмотрены основные компоненты X Windows и способы их конфигурирования, начиная с версии 4 файла XF86Conf ig, который определяет поведение Х-сервера. В этом файле указано все: от типов видеоадаптера и монитора (в том числе требуемые разрешение и глубина цвета) до мыши и клавиатуры.
После полного конфигурирования Х-сервера понадобится указать способ запуска X Windows, программы, запускаемые автоматически, операции, выполняемые перед загрузкой X Windows, запуск диспетчера окон. Как механизм реализации установок (цветов и шрифтов в окнах, а также реакции окон на определенные операции) используется база данных Х-ресурсов. Любой из перечисленных (и других) параметров может быть глобальным или предназначаться отдельной программе.
Х-ресурсы
Х-ресурсы
База данных Х-ресурсов снабжает программы значениями параметров, определяющих, среди прочего, цвета и шрифты. Х-ресурсы используются в большинстве программ X Windows для определения всеми опциями, управляемыми флажками командной строки. В базе данных Х-ресурсов можно записать набор параметров программы по умолчанию, который будет удобнее ее собственного.
Input Device — Keyboard
Input Device — Keyboard
Раздел InputDevice описывает устройства целеуказания (мышь) и клавиатуру. Хотя по умолчанию в версии 4 XFree86-используется Input-Device, унаследованные от предыдущих версий модули Keyboard и Pointer также не запрещены. Обычно используется две секции InputDevice: одна для клавиатуры и одна для устройства целеуказания (мыши).
Нетрудно догадаться, что в разделе Keyboard приведена информация, определяющая режим работы клавиатуры. Это тип и протокол клавиатуры. Хотя по умолчанию эта секция больше не используется, она по прежнему распознается в XFree86 версии 4. Хотя Red Hat Linux 7.1 использует версию 4 XFree86, разделы Keyboard и Pointer (а не InputDevice) представляют собой часть используемого по умолчанию конфигурационного файла Red Hat I.inux 7.1 XF86Confiy. Типичный раздел InputDevice без комментариев приведен ниже.
Section InputDevice
# Option "Protocol" "Xqueue"
# Identifier "Keyboardl"
# Driver "keyboard"
# |
Option |
"AutoRepeat" |
"500 5" |
||
# |
Option |
"XkbDisable" |
|
||
# |
Option |
"xleds" |
"1 2 3" |
||
# |
Option |
"LeftAlt" |
"Meta" |
||
# |
Option |
"RightAlt" |
"ModeShift' |
||
# |
Option |
"RightCtl" |
"Control" |
||
# |
Option |
"ScrollLock" |
"Compose" |
||
# |
Option |
"XkbDisable" |
|
||
# |
Option |
"XkbModel" |
"pcl0l" |
||
# |
Option |
"XkbModel" |
"pel02" |
||
# |
Option |
"XkbModel" |
"pel04" |
||
# |
Option |
"XkbModel" |
"pc 10 5" |
||
# |
Option |
"XkbModel" |
"pcioe" |
||
# |
Option |
"XkbModel" |
"microsoft" |
||
# |
Option |
"XkbLayout" |
"us" |
||
# Option "XkbLayout" "de"
# Option "XkbVariant" "nodeadkeys"
# Option "XkbOptions" "ctrl:swapcaps"
# Option "XkbRules" "xfree86"
# Option "XkbKeymap" "xfree86(us) "
EndSection
Выглядит сложно, но вы убедитесь, что это не так, просмотрев табл. 12.4.
inputDevice — Pointer
inputDevice — Pointer
Второй подраздел раздела InputDevice конфигурирует мышь. Как уже упоминалось, для этой цели можно использовать раздел InputDevice или Pointer в версии 4 XFree86. Конфигурационный файл Red Hat Linux 7.1 по умолчанию (XF86Conf ig) содержит раздел Pointer. В этом разделе задается конфигурация мыши. В разделе Pointer указываются тип мыши, порт ее подключения и функции кнопок.
Section "InputDevice"
# Identifier "Mouse1"
# Driver "mouse"
# Option "Protocol" "PS/2"
# Option "Protocol" "Xqueue"
# Option "Device" "/dev/mouse"
# Option "BaudRate" "9600"
# Option "SampleRate" "150"
# Option "Emulate3Buttons"
# Option "Emulate3Timeout" "50"
# Option "ChordMiddle" EndSection .
Описание директив дано в табл. 12.5.
Более подробно конфигурирование других типов мыши, включая USB-мышь и мышь со скрол-лером или колесом прокрутки описано в гл. 7.
Как работают Х-ресурсы
Как работают Х-ресурсы
Всякий раз при запуске X Window в базу данных Х-ресурсов загружаются необходимые сведения. По умолчанию они берутся из файлов, перечислявшихся выше при рассмотрении xinitrc. Загруженные сведения модифицируются данными из файла .Xdefaults вашего исходного каталога. Структура этих данных достаточно сложна.
Х-ресурсы упорядочиваются так, чтобы они воздействовать только на определенные программы. Для этого последние пришлось классифицировать, причем большинство классов программ состоит из единственной программы. В документации на программу указана ее
принадлежность определенному классу. Например, программа xload принадлежит классу XLoaci xterm - классу XTerm. Программы одного назначения входят, как правило, в один класс (ос lock и xclock принадлежат классу Clock).
Примечание
Обратите внимание на использование прописных/строчных букв в названиях приложений и классов. Например, xterm представляет собой стандартное консольное приложение X Window, a XTerm - класс, которому оно принадлежит.
Стандартный набор ресурсов для каждого класса позволяет устанавливать цвета изображения (foreground) и фона (background), размеры и расположение окон (geometry) и шрифт по умолчанию (font). В некоторых классах ресурсов сгруппированы родственные ресурсы. Например, в класс ресурсов Foreground входят ресурсы фона (foreground) и любые дополнительные программные ресурсы, имеющие некоторое отношение к фону. Заниматься отдельными ресурсами, как правило, нет надобности: достаточно работать на уровне классов ресурсов.
Команда xrdb для записи Х-ресурсов
Команда xrdb для записи Х-ресурсов
Обычно файл .Xdefaults загружается при запуске X Windows в файле .xinitrc. Однако можно выполнять запись новых значений в базу данных после загрузки X Windows, для чего применяется команда xrdb. Этот способ особенно удобен при подборе параметров.
Если установленные значения были сохранены в файле experiment, то их можно загрузить в базу данных с помощью команды
$ xrdb -merge experiment
Проверив выполненные установки на практике, можете включить их в состав базы для будущих сеансов X Window, добавив содержимое файла experiment к файлу . Xdef aults.
Modes
Modes
Для каждого монитора, подключенного к компьютеру следует завести отдельный раздел Modes. Рассмотрим пример раздела Modes конфигурационного файла XF86Config.
Section "Modes"
Identifier "Modes[0] "
Modeline "640x480" 46.02 640 .656 760 832 480 490 498 522
Modeline "800x600" 71.91 800 808 928 1000 600 612 622 632
Modeline "1024x768" 117.53 1024 1088 1208 1360 768 783 796 829
Modeline "1600x1200" 200 1600 1616 1968 2080 1200 1200 1212 1253
EndSection
Эти строки Modeline определяют допустимые режимы работы монитора. Режим задает
разрешающую способность и частотные параметры, определяющие способ вывода на монитор. Х-сервер в момент загрузки отбросит все строки, задающие несовместимые режимы, указанные в файле XF86Config. Задать корректные значения для этих строк нелегко. Проще всего поручить их генерацию средствам конфигурирования XFree86 и затем не менять их.
Примечание
Если к компьютеру подключено несколько мониторов, следует во избежание ошибок включить сведения раздела Modes в соответствующий раздел Monitor.
Параметры первой строки Modeline приведенного примера рассмотрены в табл. 12.7.
Module
Module
В разделе Module задаются изменения, расширения и дополнения для заданных ранее базовых серверных и шрифтовых параметров. Для работы графического интерфейса пользователя не нужны никакие модули. Пример раздела без комментариев приведен ниже.
Section "Module"
# Load "dbe"
# Subsection "extmod"
# Option "omit XFree86-DGA"
# EndSubSection
# Load "typel"
# Load "freetype" EndSection
Чтобы задействовать любую директиву этого раздела, удалите из ее строки символ комментария. По умолчанию указанные директивы не задействованы. Описание директив приведено в табл. 12.3.
Monitor
Monitor
До сих пор смысл рассматриваемых директив был очевиден, и их правильное применение не составляло труда. Значительно сложнее отконфигурировать видеооборудование, вдпример мониторы. Рассмотрим пример раздела Monitor конфигурационного файла XF86Conf ig.
Section "Monitor" Identifier "monitor" VendorName "LG" ModelName "StudioWorks" HorizSync 30-70 VertRefresh 50-160 End Section Некоторые директивы раздела Monitor приведены в табл. 12.6.
Последовательность запуска X Windows
Последовательность запуска X Windows
Конфигурирование сервера XFree86 позволяет обеспечить оптимальное качество изображения на экране. Но иногда возникает потребность в конфигурировании способа запуска самой среды X Windows. Это может сделать любой пользователь, редактируя файлы . xinitrc и .Xclients в исходном каталоге. Параметры в этих файлах имеют более высокий приоритет, чем соответствующие параметры в системных файлах. В Linux Red Hat 7.1 последние находятся в каталогах /etc/X11/xinit/xinitrc и/etc/Xll/xinit/Xclients.
РегулированиеХ-ресурсов в файле .xdefaults
РегулированиеХ-ресурсов в файле .xdefaults
Редактирование Х-ресурсов связано с внесением записей в базу данных Х-ресурсов. Эти записи имеют следующий формат.
<КлассПрограммы>|<ИмяПрограммы>|<КлассРесурса>| <ИмяРесурса> : <значение>
В руководстве Linux и прочей документации вертикальная черта (|) обычно означает условие "или". Следовательно, в приведенном примере первое поле записи содержит класс или имя программы, второе - класс или имя ресурса.
Обычно эти данные помещаются в файл .Xdefaults, предназначенный для конкретного пользователя. Рассмотрим пример такого файла.
XTerm*background: Black
XTerm*foreground: Wheat
XTerm*cursorColor: Orchid
XTerm*reverseVideo: false
XTerm*scrollBar: true
XTerm*reverseWrap: true
XTerm*font: fixed
XTerm* fullCursor: true
XTerm*scrollTtyOutput: off
XTerm*scrollKey: on
XTerm*titleBar: false
xclock*Geometry: 100x100+100+100 xclock*
Foreground: purple xclock*Background: mauve
В этом файле установлены ресурсы для класса программ XTerm и программы xclock. Для класса XTerm определены цвета, параметры окон (например, наличие полосы прокрутки) и т.д. Для программы xclock - цвета и геометрия. Значения, присваиваемые этим ресурсам, совпадают с теми, которые были бы указаны в командной строке при флажках -f g и -geometry.
Screen
Screen
В разделе Screen
сведена вместе информация двух разделов -
Monitor и Device.
В файле
XF86Conf ig
может быть несколько разделов
Screen.
Рассмотрим пример раздела
Screen.
Server-Layout
Server-Layout
Раздел ServerLayout завершает конфигурирование, связывая разделы Screen и InputDevice. Выше указывалось, что раздел Screen связывает разделы Monitor и Device. Раздел ServerLayout в стандартной конфигурации не нужен. Если он не входит в состав файла XF86Conf ig, то используются активные разделы Screen, клавиатуры и мыши InputDevice.
Рассмотрим пример раздела ServerLayout:
Section "ServerLayout"
# Identifier "Configuration 1"
# Screen "Sony Setup"
# Screen "Samsung Setup" RightOf "Sony Setup"
# InputDevice "Mousel" "CorePointer"
# InputDevice "Keyboardl" "CoreKeyboard"
EndSection
Описание трех директив, составляющих этот раздел, дано в табл. 12.11.
ServerFlags
ServerFlags
В разделе ServerFlags включаются и отключаются некоторые функции Х-сервера. Пример раздела без,комментариев приведен ниже.
Section "ServerFlags"
# Option "NoTrapSignals"
# Option "DontZap"
# Option "DontZoom"
# Option "DisableVidModeExtension"
# Option "AllowNonLocalXvidtune"
# Option "DisableModlnDev"
# Option "AllowNonLocalModInDev"
# Option "AllowMouseOpenFail"
# Option "blank time" "10"
# Option "standby time" "20"
# Option "suspend time" "30"
# Option "off time" "60"
# Option "EstimateSizesAggresively" "0"
# Option "NoPM""false"
# Option "Xinerama" "true"
EndSection
Чтобы задействовать любую директиву этого раздела, удалите из ее строки символ коммен- , тария. По умолчанию указанные директивы не задействованы. Заданные в этом разделе значения опций заменяются значениями из раздела Server-Layout.
Описание директив приведено в табл. 12.2.
Имя файла базы данных RGB
Таблица 12.1.
Директивы раздела Files
Директива
|
Описание
|
||
RgbPath
FontPath ModulePath |
Имя файла базы данных RGB (red-green-blue - красный-зеленый-синий) без расширения . txt или . db. RGB-файл задает состав именованных цветов. Если база данных не перемещена и не переименована, то остается имя по умолчанию. Но этого не следует делать, поскольку многие программы будут искать ее в прежнем каталоге Эта директива может применяться многократно и задает каталог, в котором находятся Х-шрифты системы - масштабируемые или растровые. Имя подкаталога растровых шрифтов имеет окончание : unscaled. Установив в системе новый каталог шрифтов, необходимо внести в раздел Files новую директиву FontPath Это директива для тех операционных систем, которые, как и Linux, поддерживают динамически загружаемые модули. Она указывает путь к этим модулям. В большинстве версий XFree86 эта директива не используется, поэтому в примере она отмечена как комментарий. По умолчанию динамически загружаемые модули находятся в каталоге /usr/X11R6/lib/modules. Необходимость менять этот каталог и, следовательно, директиву возникает редко |
||
Эта директива применяется при отладке.
Таблица 12.2.
Директивы раздела ServerFlags
Директива
|
Описание
|
||
NoTrap
Signals |
Эта директива применяется при отладке. Когда поступает сигнал об ошибке, сервер выполняет дамп своего раздела памяти в файл на диске. Это может нарушить устойчивость системы, но полезно при поиске источников ошибок, особенно на стадии бета-тестирования Х-серверов. Лучше всего оставить эту директиву закомментированной |
||
Директива
|
Описание
|
||
DontZap |
Обычно сочетание клавиш Ctrl+Alt+Backspace применяется для завершения работы X Windows с возвратом к командной строке. Данная директива заставляет X Windows игнорировать указанное сочетание клавиш, позволяя его обработку активной программе. Директива используется редко — когда какая-либо программа не может работать без этого сочетания клавиш. |
||
DontZoom |
Обычно сочетание клавиш Ctrl+Alt+Цифровой Плюс ("плюс" цифровой клавиатуры) применяется для последовательного переключения разрешений, определенных при конфигурировании Х-сервера от меньшего к большему. Аналогично, сочетание Ctrl+Alt+ЦифровойМинус ("минус" цифровой клавиатуры) применяется для переключения разрешений от большего к меньшему. Если эти сочетания клавиш нужны какой-либо программе, удалите символ комментария в строке данной директивы. X Windows будет игнорировать указанные сочетания клавиш, и они будут доступны активной программе. |
||
DisableVidModeExtension |
Эта директива предотвращает настройку монитора клиентом xvidtune. В книге эта программа не рассмотрена, но ее документация выводится на экран по команде man xvidtune в окне xterm Нет необходимости использовать эту директиву. |
||
All owNonboca lXvidtune |
В отличие от предыдущей директивы, разрешает настройку монитора удаленным (то есть, находящимся где-то в сети) клиентом xvidtune. Из соображений безопасности эту директиву не следует задействовать. |
||
DisableModlnDev |
Если задействовать эту директиву, динамическая смена настроек клавиатуры и мыши в процессе работы X Windows станет невозможной. |
||
AllowNonLocalModlnDev |
Эта директива разрешает настройку клавиатуры и мыши с другого компьютера сети. Не используйте ее без особой необходимости. |
||
AllowMouseOpenFail |
Эта директива разрешает запуск даже если отсутствует работоспособная мышь (Pointer). |
||
"blank time" "10" |
Если ваш компьютер не проявляет активности в течение заданного времени (10 минут в приведенном примере), запускается программа экранной заставки. Выполняемые действия зависят от спецификаций вашего монитора. |
||
" standby time" "20" |
Если ваш компьютер не проявляет активности в течение заданного времени (20 минут в приведенном примере), монитор переключается в ждущий (standby) режим. Выполняемые действия зависят от спецификаций вашего монитора. |
||
Директива
|
Описание
|
||
" suspend' time" "30"
"off time" "60" EstimateSizesAggresively % NoPM "false" Xinerama "true" |
Если ваш компьютер не проявляет активности в течение заданного времени (30 минут в приведенном примере), монитор переключается в спящий (suspend) режим. Выполняемые действия зависят от спецификаций вашего монитора. Если ваш компьютер не проявляет активности в течение заданного времени (60 минут в приведенном примере), монитор отключается (off mode). Выполняемые действия зависят от спецификаций вашего монитора. Если BIOS вашего компьютера не может корректно определить второй видеоадаптер, установка значения 2 для этой опции может решить возникшую проблему. На момент написания книги сведения об этой опции в документации крайне скудны. Отключение управления питанием. Опция, необходимая для работы с несколькими мониторами (каждый со своим видеоадаптером). |
||
Загружает расширения Double Buffer Extensions,
Таблица 12.3.
Директивы раздела Module
Директива
|
Описание
|
||
Load "dbe" Option "omit XFree86-DGA" Load "typel" Load "freetype" |
Загружает расширения Double Buffer Extensions, позволяющие загружать последовательные изображения в разные буферы. Отключает расширение Direct Graphics Access. Загружает шрифтовой модуль для шрифтов PostScript type 1 . Загружает клон TrueType шрифтов. |
||
Протокол Xqueue используется для различных
Таблица 12.4.
Директивы раздела Keyboard
Директива
|
Описание
|
||
"Protocol" "Xqueue" |
Протокол Xqueue используется для различных серверов Sun Solaris (SRV3, SRV4). Если эта строка отсутствует, XFree86 использует значение по умолчанию Standard, которое вполне подходит для всех систем других типов. |
||
Identifier Driver |
Имена, назначенные администратором для клавиатуры и ее драйвера. |
||
AutoRepeat |
Задает задержку повтора вывода символа при нажатой клавише и частоту повтора. Оба значения указываются в миллисекундах. В примере AutoRepeat 500 5 означает повтор через полсекунды после нажатия клавиши с выводом символа каждые 5 миллисекунд. |
||
Xleds |
Определяет светодиоды клавиатуры, управляемые пользователем с помощью команды xset. Оставьте в строке символ комментария, указанный по умолчанию. |
||
LeftAlt, RightAlt, RightCtl , ScrollLock |
Система X Windows первоначально применялась на рабочих станциях Unix, клавиатуры которых отличались от стандартной клавиатуры ПК. На этих клавиатурах были специальные клавиши: Meta, ModeShift, Compose и ModeLock. Если окажется, что эти клавиши нужны какой-то из программ (что маловероятно), то удалите из этой строки символ комментария. |
||
XkbDisable |
Если удалить символ комментария из этой строки, то X Windows не будет использовать свое расширение ХКВ. Если ХКВ задействовано (строка начинается с символа комментария), то именно оно определяет отображение кодов клавиатуры для прежних версий Х-сервера с помощью последовательности директив. |
||
XkbModel |
Используется, если ХКВ может определять модель клавиатуры. Стандартные клавиатуры Standard U.S. обозначаются pc101. Клавиатура U.S. "Windows" обозначается рс104. Клавиатура Microsoft Natural обозначается microsoft. Большинство европейских клавиатур имеют обозначение рс102 или рс105. Стандартная японская клавиатура обозначается рс106 . |
||
XkbLayout |
Используется, если ХКВ может определять раскладку клавиатуры. Как правило, для клавиатуры определено несколько раскладок. Например, de, обозначает "немецкий" и соответствует немецкоязычной раскладке. |
||
XkbOptions |
Директива используется, когда ХКВ разрешается переключать положение клавиш CapsLock и Ctrl. Для этого ей присваивается значение "ctrl : swapcaps". |
||
XkbKeymap |
Применяется, если ХКВ может загружать сопоставление кодов клавиатуры. |
||
Устанавливая "не-английскую" клавиатуру, можно обратиться к документации HOWTO по адресу http: / /www. l inuxdoc. org. На этом узле собрано множество документов HOWTO для разных языков, позволяющих сконфигурировать клавиатуру в специфической языковой среде.
Указывает тип мыши. Возможные значения:
Таблица 12.5.
Директивы раздела Pointer
Директива
|
Описание
|
||
Identifier, Driver |
Имена, назначенные администратором для мыши и ее драйвера. |
||
Protocol |
Указывает тип мыши. Возможные значения: Microsoft, Logitech, MouseSystems, BusMouse, PS/2 и Auto (для Plug-and-Play мыши, которую может распознать Linux). |
||
Device |
Указывает порт подключения мыши. Если при установке Linux мышь была правильно конфигурирована, ей будет соответствовать логическое устройство /dev/mouse, и именно это имя можно указать в директиве. В противном случае укажите /dev/psaux для мыши PS/2, /dev/ttyS0 -для последовательной мыши, подключенной к порту СОМ 1 в DOS и Windows, и /dev/ttyS1 - к порту COM2. Предусмотрены опции для других типов устройств целеуказания, например, трекбола или тактильного экрана. |
||
BaudRate |
Используется с некоторыми разновидностями мыши Logitech (см. техническую документацию). |
||
SampleRate |
Используется с некоторыми разновидностями мыши Logitech (см. техническую документацию). |
||
Emulate3Buttons |
Эта директива применяется с 2-кнопочной Microsoft-совместимой мышью. Если она задействована, то одновременный щелчок правой и левой кнопками мыши воспринимается как щелчок средней кнопкой. Если у вас 2-кнопочиая Microsoft-совместимая мышь, целесообразно использовать эту директиву. |
||
Emulate3 Timeout |
Определяет, насколько одновременными должны быть щелчки двумя кнопками, чтобы восприниматься как щелчок средней кнопки. Имеет значение только при установке директивы EmulateBButtons. Значение по умолчанию - 50 мс. Если одновременные щелчки двумя кнопками удаются с трудом, увеличьте это значение. Время указывается в миллисекундах, но единицы времени не указываются. Директива "EmulateSTimeout 100" правильна, "Emulate3Timeout 100 ms''-нет. |
||
HorizSync VertRe fresh | Диапазон частот горизонтальной развертки монитора в кГц. Можно задать диапазон, как в примере, или перечислить допустимые значения через запятую. Обязательно изучите документацию на монитор, чтобы указать правильные значения - ошибки могут привести к его повреждению. Частота обновления экрана монитора в Гц. Можно задать диапазон, как в примере, или перечислить допустимые значения через запятую. Обязательно изучите документацию на монитор, чтобы указать правильные значения - ошибки могут привести к его повреждению. | ||
ChordMiddle |
Задействует среднюю кнопку некоторых разновидностей 3-кнопочной мыши Logitech. Если у вас мышь Logitech с неработающей средней кнопкой, попробуйте задействовать эту директиву. |
||
Параметры строки Modeline
Таблица 12.7.
Параметры строки Modeline
Директива |
Описание |
||
640x480
46:02 640 656 760 832 480 490 498 522 |
Разрешающая способность экрана в пикселах
Частота пикселов в МГц Число пикселов по горизонтали Начальное значение горизонтальной синхронизации Конечное значение горизонтальной синхронизации Общее значение горизонтальной синхронизации Число пикселов по вертикали Начальное значение вертикальной синхронизации Конечное значение вертикальной синхронизации Общее значение вертикальной синхронизации |
||
Modeline "640x480" 46. 02 640 656 760 832 480 490 498 522 можно задать и другим способом:
Mode "640x480"
DotClock 46.02
HTimings 640 656 760 832
VTimings 480 490 498 522
EndMode
в разделе Monitor, присваивает видеоадаптеру
Таблица 12.8.
Директивы раздела Device
Директива
|
Описание
|
||
Identifier |
Подобно аналогичной директиве, в разделе Monitor, присваивает видеоадаптеру имя, по которому на него можно ссылаться в других частях файла XF86Config. |
||
VendorName |
Имя изготовителя. Эта директива не влияет на работу Х-сервера, но в дальнейшем помогает идентифицировать оборудование. |
||
BoardName |
Название карты видеоадаптера. Эта директива не влияет на работу Х-сервера, но помогает идентифицировать оборудование. |
||
Chipset |
Микропроцессорный набор видеоадаптера. Если XFree86 не поддерживает микропроцессорный набор установленного видеоадаптера, укажите один из универсальных наборов (generic). |
||
VideoRam |
Объем видеопамяти в килобайтах. Если не указать это значение, сервер попытается определить его непосредственно из видеоадаптера. |
||
Clocks |
Параметры тактовых импульсов для видеооборудования.- Данную директиву не следует редактировать вручную; лучше предоставить это конфигурационным процедурам. |
||
ClockChip |
Генератор тактовых импульсов (если имеется) для видеооборудования. При отсутствии генератора тактовых импульсов эта директива не нужна. Если директива задана, то указывать директиву Clocks не нужно, поскольку генератор обеспечит установку всех необходимых параметров. |
||
Driver |
Определение имени драйвера для данного устройства. |
||
Option |
Некоторые драйверы допускают дополнительное конфигурирование. В приведенном примере "hw cursor" "off "касается специфической проблемы размещения курсора в X Window для некоторых разновидностей видеоадаптеров. |
||
BusID |
Задает положение PCI или AGP видеоадаптера. Имеет значение в случае использования более чем одного видеоадаптера. |
||
Identifier "Screen L"
Device "MGA Millenium I"
Monitor "monitor"
Subsection "Display" Depth 24
Modes "1024x768"
Viewport 0 0
EndSubsection
Subsection "Display" Depth 32
Modes "800x600"
- Viewport 0 0
EndSubs ection EndSection
Раздел Screen связывает выбранный Х-сервер с видеоадаптером и монитором, а затем определяет возможные режимы экрана (сочетания разрешения и глубины цвета). В табл. 12.9 описаны основные директивы раздела Screen.
Эта директива задает уникальное имя
Таблица 12.9.
Директивы раздела Screen
Директива
|
Описание
|
||
Identifier
Device Monitor DefaultColorDepth |
Эта директива задает уникальное имя для данного Screen. Если вы используете раздел ServerLayout, вы должны использовать эту директиву Identifier. Имя устройства (видеоадаптера). Оно должно совпадать с соответствующим именем в разделе Device. Имя монитора. Оно должно совпадать с соответствующим именем в разделе Monitor. Глубина цвета, если она не задана в директиве Depth раздела Display. |
||
8 бит обеспечивают 256 цветов,
Таблица 12.10.
Директивы подраздела Display
Директива
|
Описание
|
||
Depth Modes
ViewPort Virtual |
Глубина цвета (число бит на пиксель). Например, 8 бит обеспечивают 256 цветов, 16 бит — 65 536 цветов, 24 бит— 16,7 миллиона цветов. Разрешение экрана. -Наиболее распространенные значения: 1024x768, 800x600 и 640x480. Размер возможного виртуального стола. Например, на экране с разрешением 640x480 можно установить рабочий стол размером 1024x768. Когда указатель мыши достигает края экрана, изображение прокручивается, выводя скрытую часть виртуального рабочего стола. Директива ViewPort определяет размеры виртуального рабочего стола по горизонтали и вертикали, разделенные пробелом. Директива ViewPort 0 0 в примере означает отсутствие виртуального рабочего стола. Эта директива задает размер экрана больший, чем директива Modes. Если эта директива задана, то можно перемещаться с помощью мыши в рамках указанного виртуального пространства, которое больше, чем реальный экран. |
||
Эта директива задает уникальное имя
Таблица 12.11.
Директивы подраздела ServerLayout
Директива |
Описание |
||
Identifier
Screen InputDevice |
Эта директива задает уникальное имя для данного ServerLayout. Определяет используемый раздел Screen. В рассматриваемом случае должно быть два раздела Screen, с директивами Identifier, задающими имена "Sony Setup" и "Samsung Setup". Определяет используемый раздел InputDevice. В рассматриваемом случае должно быть два раздела InputDevice, с директивами Identifier, задающими имена "Mousel" и "Keyboardl". |
||