|
Устройство системы X Window.
Графический интерфейс в Linux строится на основе стандарта X Window System (заметьте, что Window, а не Windows) или просто "X" (в просторечии — "иксы"), разработка которого была начата в 1984 году. Первые 10 версий X Window System были разработаны всего тремя людьми - Робертом Шейфлером (Robert Sheifler), Джимом Геттисом (Jim Gettys) и Роном Ньюменом (Ron Newman). Двое из них были сотрудниками Массачусетского технологического института, а третий – сотрудником корпорации DEC. Начиная с 1988 г. этот стандарт поддерживался консорциумом X, созданным с целью унификации графического интерфейса для ОС UNIX. В 1997 году консорциум X был преобразован в X Open Group (http://www.x.org). В настоящее время действует 6-ой релиз (выпуск) 11-ой версии стандарта на графическую подсистему для UNIX-систем, который кратко обозначается как X11R6.
Свободно распространяемая реализация стандарта X11R6 была создана группой программистов, которую вначале возглавлял Дэвид Вексельблат (David Wexelblat). Эта реализация известна как XFree86 (http://www.xfree86.org), и может использоваться не только в Linux, но и в других версиях UNIX
Операционная система UNIX с самого начала была многопользовательской, многозадачной системой, работавшей в режиме разделения времени. При этом она позволяла пользователям работать в удаленном режиме, либо через терминалы, либо с использованием сетевых технологий. Эти основные концепции были учтены при создании графического интерфейса для UNIX и поэтому система X Window построена на основе модели "клиент/сервер" [1]. Правда, модель эта в данном случае используется как бы в "перевернутом" виде. Дело в том, что X-сервер запускается на компьютере пользователя (а не на каком-то удаленном "сервере") и обеспечивает вывод изображения на экран монитора. Эта программа работает непосредственно с "железом" и обеспечивает управление как устройствами ввода (клавиатура, мышь и так далее), так и устройствами вывода (дисплей, монитор, динамик). X-сервер "захватывает" оборудование и предоставляет его возможности другим программам (клиентам сервера) как ресурсы (собственно, именно поэтому он и считается сервером) по особому протоколу, который называется X-протокол, или протокол сетевой связи (X Network Protocol).
Если запустить только X-сервер, вы увидите просто серый экран с характерным крестиком курсора посредине. С помощью мыши этот крестик можно перемещать по экрану. И все! На нажатие кнопок мыши и клавиш никакой видимой реакции не следует. И невидимой - тоже! Дело в том, что сам X-сервер изображение не формирует, он только "доставляет" графику видеоадаптеру и передает сообщения о событиях от аппаратной части (в частности, от клавиатуры и мыши, то есть сообщения о действиях пользователя) своим клиентам, а клиенты пока не запущены. Хотя на самом деле некоторые комбинации клавиш X перехватывает и обрабатывает. Это <Ctrl>+<Alt>+<Backspace> — завершение работы сервера (если эта возможность не запрещена при конфигурации), <Ctrl>+<Alt>+<+> и <Ctrl>+<Alt>+<-> — "горячее" переключение доступных видеорежимов, и <Ctrl>+<Alt>+<F#> — переключение в другую виртуальную консоль.
Чтобы получить на экране какие-то более содержательные изображения, одного X-сервера недостаточно, надо запустить менеджер окон и хотя бы одну программу-клиент, которая будет формировать изображение и обрабатывать сообщения о действиях пользователя (например, щелчок кнопкой мыши и т.п.). В роли "клиентов" X-сервера выступают приложения, работающие с X Window, например, графический редактор GIMP, текстовый редактор OpenOffice.org, эмулятор терминала xterm и другие.
Между клиентами и сервером стоят еще два очень важных компонента графического интерфейса: библиотека графических функций X-Lib и менеджер окон.
Менеджер окон – это особое приложение, которое тоже является клиентом X-сервера, но выполняет особую роль – оно управляет другими клиентами. Одна из основных функций, которые выполняет любой менеджер окон – это обеспечение возможности запуска других приложений. Кроме того, менеджер окон обеспечивает выполнение всех операций с окнами: прорисовку рамок, меню, иконок, полос прокрутки и других элементов окна, предоставляет возможность изменять вид и положение окна в процессе работы в соответствии с потребностями пользователя, а также обеспечивает вывод информации от приложения в соответствующее окно. Можно запустить X-сервер без оконного менеджера, но не наоборот. Именно с менеджером окон взаимодействует пользователь при работе в графическом режиме. Менеджер окон вызывает соответствующие функции для программ-клиентов в тех случаях, когда пользователь работает с приложением с помощью клавиатуры и мыши.
Надо сказать, что хотя элементы графического интерфейса (иконки, кнопки, диалоговые окна, линейки прокрутки, различные рамки и оконные меню) и прорисовываются на экране с помощью низкоуровневых функций из библиотеки X-Lib, но приложения не вызывают эти функции непосредственно, а обращаются к функциям более высокого уровня, которые в англоязычной документации называют виджетами – "widgets”. Ведь чтобы нарисовать, например, с помощью X-Lib простую кнопку с надписью «Ввод», необходимо прорисовать два прямоугольника, скруглить углы, изобразить тень, вывести надпись, обеспечить изменение вида кнопки при наведении мыши и так далее. Чтобы не повторять каждый раз работу по программированию часто используемых элементов графического интерфейса, были разработаны несколько отдельных библиотек таких элементов (виджетов). Если теперь все сказанное выше изобразить графически, получим рис.1.
Рис.1. Архитектура системы X Window
“Экран” ("screen") по отношению к X-серверу означает то изображение, которое вы видите, когда запускаете X Window. “Экранов” тоже может быть несколько, так же, как и “дисплеев”. Дополнительные “экраны" используются в случае “дисплеев с многими экранами”. Фактически имеется возможность использовать один X-сервер на несколько компьютеров.
Приложения можно запустить, например, на мейнфрейме, а картинка будет выводиться на экран персонального компьютера. Отметим еще, что в стандартном режиме запросы и сообщения буферизуются и обрабатываются сервером в асинхронном режиме, что позволяет повысить скорость работы и снизить нагрузку на сеть.
Один и тот же X-сервер может одновременно использоваться многими приложениями. Для того, чтобы обеспечить одновременную работу различных приложений и уменьшить объем информации, передаваемой по сети, сервер для каждого из приложений хранит данные об используемых приложением шрифтах, информацию о цвете и многое другое. Эти данные в совокупности называются ресурсами сервера [2].
Запуск системы X Window.
Существует два основных варианта запуска графического интерфейса пользователя в системе Red Hat Linux. В первом варианте X-сессия запускается менеджером дисплея xdm, после чего пользователь получает возможность войти в систему (логироваться) непосредственно в графическом режиме. Во втором варианте пользователь вначале входит в систему в текстовом режиме, а потом запускает X-сессию с помощью программы xinit (чаще всего для этого используется скрипт startx, который является просто оболочкой для программы запуска графического режима xinit). В любом случае система X Window запускается с правами суперпользователя, поскольку ей требуется доступ к аппаратным устройствам.
Именно выбор между этими двумя способами запуска X-ов вы делаете, когда при инсталляции Linux задаете (или не задаете) автоматический запуск графического режима. Недостатком первого варианта (через xdm) является то, что если возникнут какие-то проблемы с переходом в графику, вы оказываетесь в затруднительном положении – ведь вы еще не вошли в систему и поправить что-либо нет возможности. Эта ситуация, конечно, не является безвыходной, однако начинающему пользователю все же лучше при инсталляции системы отказаться от автоматической загрузки графического режима и запускать его «вручную» из текстового. Как же это сделать?
Более правильный способ перехода из текстового в графический режим состоит в том, что вы даете команду xinit. Программа xinit (она расположена в каталоге /usr/X11R6/bin) предназначена для запуска сервера системы X Window и хотя бы одной программы-клиента в ситуациях, когда X-сервер не запущен непосредственно из /etc/init (то есть при старте системы) или тогда,когда используются несколько экземпляров оконной системы.
Если в командной строке не указано, какой именно X-сервер запускать, xinit ищет в домашнем каталоге пользователя файл .xserverrc, чтобы выполнить содержащийся в нем скрипт запуска сервера. Если такого файла нет, xinit по умолчанию выполняет следующий скрипт:
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|