| |
Занятие 13.
Тема: Система X Window.
Вид занятия: лекция, практическое занятие.
Учебные вопросы:
1. Система X Window. Демон X.
2. Запуск X. Скрипт startx. 5-й уровень инициализации.
Время: 90 минут
Литература:
1. Системная справочная служба Linux Man
2. http://www.unix.org.ua/solaris/xwindows.htm
Ход занятия.
1. Давайте для начала окунемся в само понятие X Window (или как его еще называют - X11, X). X11 - это протокол графического интерфейса, основанный на сетевой модели “клиент-сервер”.
В качестве сервера может выступать несколько программ, как коммерческих, так и открытых. Долгое время стандартом X-сервера для Linux был XFree86 (о котором мы с вами и поговорим), однако сейчас довольно популярным X-сервером становится XOrg, обладающим намного большими возможностями.
Программы с графическим интерфейсом выступают в качестве клиентов для Х-сервера.
Сервер Х умеет рисовать на экране точки и простейшие геометрические фигуры, опрашивать устройства ввода (клавиатура, мышь и т.п.) и сообщать об этом клиенту в виде “пользователь нажал на правую кнопку мыши в точке экрана такой-то”, а клиенты давать ему команды, типа “нарисуй прямоугольник с координатами такими-то”, “Назови-ка мне текущие координаты мыши”, причем все эти команды способны передаваться не только на локальной машине, но и по сети! Таким образом, для работы самой программы, которая в большинстве случаев выполняет вычисления (или другую полезную работу, в отличие от сервера), можно использовать мощную рабочую станцию, а вот вывод на экран производить на совсем другом ПК, с которого будет также происходить и управление программой (ввод с клавиатуры, мыши, светового пера и т.п.).
Х-сервер может обслуживать несколько клиентов одновременно. Так каждое открытое на вашем экране окно - отдельный Х-клиент.
Однако Х-сервер предоставляет окружению верхнего уровня полную свободу в отношении оформления окон, точнее сказать Х-сервер просто их не прорисовывает. Всем этим управляют особые программы - оконные менеджеры, которых существует бесчисленное множество. Наиболее популярными оконными менеджерами для Linux являются kwm (используется в KDE), metacity (используется в GNOME), twm (стандартный для XFree86), icewm, fluxbox, openbox, fvwm, WindowMaker, Enlightenment и другие. Каждая из этих программ предоставляет различные внешние виды, удобства использования и конфигурации, и каждый из пользователей волен выбирать их на свой вкус.
Основными свойствами оконного менеджера можно считать:
Другой важной возможностью оконного менеджера является управление фокусировкой мыши - каждый из них должен иметь способ выбора активного окна, а также визуально выделить такое окно. Самым популярным является метод “фокус по щелчку”. При использовании этого метода фокус получает то окно, по которому был произведен щелчок мыши. Подобный метод используется в Microsoft Windows. Его так же поддерживают большинство оконных менеджеров для X.
Другим распространенным методом является “фокус, следующий за мышью”. При использовании этого метода, активным считается то окно, над которым находится мышь. При этом, если мышь попадает на пустое место на экране, то фокус теряют все окна.
Еще один из методов называется “нечеткий фокус”. Он аналогичен “фокусу, следующему за мышью” за исключением того, что окно потеряет фокус только тогда, когда фокус получит другое окно.
Однако оконными менеджерами не обеспечивается инструментальная база для построения приложений. В Х эта инструментальная база называется “widget”. Это непереводимый термин Х, который составлен из двух слов - window (окно) и gadget (приспособление). Виджеты - это кнопки, менюшки, выпадающие списки и т.п. Обычно виджеты собраны в библиотеки. Наиболее часто используемые из них такие:
В Linux систему XWindow обслуживает демон Х (/usr/bin/X11/X). В случае с XFree86 он использует конфигурационный файл /etc/X11/XF86Config.
Формат файла имеет следующий вид:
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Эта часть конфигурационного файла описывает, дисплей с каким номером должен использовать сервер, а также используемые устройства ввода.
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection
Здесь описывается путь к набору палитр для вывода информации (RgbPath), а также путь к каталогам со шрифтами (FontPath). Строка “unix/:7100” говорит о том, что запущен сервер шрифтов X (xfs) и он будет доступен по локальному unix-сокету с номером 7100.
Section "Module"
Load "GLcore"
Load "dbe"
Load "dri"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "pex5"
Load "record"
Load "xie"
Load "v4l"
Load "type1"
EndSection
В разделе Module описываются расширения, которые будет использовать сервер.
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "Protocol" "Standard"
Option "XkbModel" "pc104"
Option "XkbRules" "xfree86"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection
Section "InputDevice"
Identifier "DevInputMice"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "no"
EndSection
Секция InputDevice (устройство ввода) описываетъ клавиатуру, раскладку, а также тип и свойства мыши. Мышь и клавиатуру необходимо описывать в разных секциях.
Section "Monitor"
#1024x768 @ 70.1 Hz, 56.5 kHz hsync
Identifier "Monitor"
VendorName "SAM"
ModelName "Samsung SyncMaster 550(M)s"
HorizSync 30.0 - 62.0
VertRefresh 50.0 - 121.0
ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
ModeLine "640x480" 31.5 640 680 720 864 480 488 491 521
EndSection
В разделе описания свойств монитора описываются поддерживаемые монитором режимы, а также название монитора и производитель.
Section "Device"
Identifier "nVidia Corporation|NV4 [RIVA TNT]"
Driver "nvidia"
BoardName "RIVA TNT"
BusID "PCI:1:0:0"
EndSection
В разделе Device описывается используемый видеоадаптер, а также параметры видеовывода, которые он поддерживает, обслуживающий драйвер.
Section "Screen"
Identifier "Screen0"
Device "nVidia Corporation|NV4 [RIVA TNT]"
Monitor "Monitor"
DefaultDepth 24
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
EndSection
А вот секция Screen как раз описывает выбранный пользователем режим.
Сначала указываются используемые видеоадаптер и монитор, а также глубину цветовой палитры (DefaultDepth). При запуске сервер Х будет пытаться инициализировать работу в режимах (Modes), указанных в подсекциях (subsection) Display начиная с наибольшего.
2. Для запуска Х в Linux могут быть использованы два разных метода. Первый из них используется в пятом уровне инициализации - скрипт prefdm (/etc/X11/prefdm). При этом будет использоваться какой-либо менеджер входа в систему (xdm, kdm, gdm или другой), с помощью которого вы сможете выбрать используемую рабочую среду или оконный менеджер.
Однако существует и другой способ запуска системы. Если Вы загрузитесь с уровнем инициализации, не использующим графический вход в систему (например 3 или 2), то запустить Х можно будет скриптом startx (/usr/bin/X11/startx). Используемый по умолчанию менеджер окон (или среда окружения рабочего стола) описываются в файле Xclients (/etc/X11/xinit/Xclients). Для установки своего клиента, установите переменную скрипта PREFERRED в значение, которое описывает строку запуска оконного менеджера (среды окружения рабочего стола), например:
PREFERRED=startkde #запуск KDE
или
PREFERRED=gnome-session #запуск GNOME
или
PREFERRED=icewm #запуск оконного менеджера icewm
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |