The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа

Занятие 13.

Тема: Система X Window.

Вид занятия:  лекция, практическое занятие.

Учебные вопросы:

1. Система X Window. Демон X.

2. Запуск X. Скрипт startx. 5-й уровень инициализации.

Время: 90 минут

Литература:

1. Системная справочная служба Linux Man

2. http://www.unix.org.ua/solaris/xwindows.htm

3. http://www.xfree.org

4. http://www.x.org


Ход занятия.

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру