Графический интерфейс (X11)
Графический интерфейс в Linux
На протяжении предыдущих лекций Мефодию ни разу не потребовалось для выполнения своих задач покидать пределы текстового терминала. Что и понятно: в основном он занимался освоением самой системы Linux, а главные средства управления ею – командная строка и текстовый редактор. Тем не менее, для современного пользователя персональный (да и вообще любой) компьютер – это не в последнюю очередь устройство с широкими графическими возможностями, и часть задач, которые должен выполнять компьютер, – непосредственно графической природы, например, показ фильмов или создание изображений. Но такими специфическими задачами использование графического интерфейса не ограничивается.
Графические средства ввода-вывода позволяют организовать интерфейс, принципиально отличающийся от терминала – оконный. Сегодня любому пользователю компьютера знакома такая модель организации графического интерфейса: окна, меню, кнопки. Оконный интерфейс позволяет использовать пространство экрана гораздо более эффективно, чем обыкновенный текстовый терминал на виртуальной консоли: здесь одновременно можно открыть несколько окон, относящихся к разным задачам, и наблюдать за их работой одновременно. Собственно, в рамках окна может выполняться любая задача, в частности, текстовый терминал. При помощи оконного интерфейса пользователь Linux может следить за несколькими задачами на разных терминалах одновременно, а не по очереди.
Оконный интерфейс. Модель интерфейса, в которой пространством ресурсов является экран – прямоугольная область, в которой организуется ввод и вывод. Субъектами в оконном интерфейсе выступают задачи, вводящие и выводящие данные в рамках окна – области в рамках экрана .
Однако все задачи управления системой в Linux решаются посредством текстового терминала, да и очень многие задачи пользователя – как заметил Мефодий даже по своему небольшому опыту – тоже, поэтому никакой системной необходимости в графических средствах ввода-вывода в Linux нет. Графический интерфейс в Linux – это отдельная задача, наподобие системной службы или демона, поэтому в некоторых системах программное обеспечение для организации графического интерфейса1Такие системы – не выдумка, они вполне реальны и многочисленны. Например, графический интерфейс совершенно ни к чему на сервере, который занимается только маршрутизацией пакетов в сети. может вовсе отсутствовать. Такая задача получает единоличный доступ к устройству графического вывода (видеокарта), а программам, использующим графические ресурсы, она предоставляет объектную модель графических примитивов (функции рисования линий, прямоугольников, отображения цвета и т. п.), наподобие того, как ядро предоставляет доступ к ресурсам жесткого диска в терминах объектной модели файловой системы. Поэтому весь комплекс программ для работы с графическими устройствами принято называть графической подсистемой.
Пользователю домашнего настольного компьютера графический интерфейс почти наверняка понадобится при каждом сеансе работы. Можно настроить систему таким образом, чтобы процесс начальной загрузки завершался запуском графической подсистемы, так что даже регистрация пользователей будет происходить уже в графическом режиме при помощи специальной программы – экранного диспетчера (см. лекцию 10). Экранный диспетчер опознать очень просто: он всегда отображает окно с приглашением к регистрации login: и password:, которое может быть оформлено и минималистично, и с барочной пышностью. После регистрации в экранном диспетчере пользователю предоставляется сразу и доступ к системе, и доступ к графической подсистеме.
Однако ни в одной из систем, в которых работает Мефодий, ему не случалось встречаться с экранным диспетчером, и всюду он регистрировался в системе и работал только в текстовом режиме на виртуальной консоли. Поскольку графическая подсистема – отдельная задача, авторизованный пользователь может запустить ее из командной строки в любой момент2Каким пользователям разрешено запускать и останавливать графическую систему – зависит от профиля системы.: для этого используется команда startx, которую Мефодий и исполнил (рис. 16.1).
В некоторое недоумение ввел Мефодия предложенный ему выбор из нескольких кнопок. Проконсультировавшись у Гуревича, он выяснил, что каждая из кнопок соответствует программе, по-своему организующей графический интерфейс, и что он может попробовать их все по очереди и выбрать ту, которая будет наиболее подходящей для его стиля работы. Не мудрствуя лукаво, Мефодий нажал на первую же кнопку, "KDE" (см. рис. 16.2).
После некоторого ожидания на мониторе возникло все то, что Мефодий ожидал увидеть в графическом интерфейсе: иконки, панель с кнопками внизу экрана, меню. Однако если бы после запуска startx Мефодий выбрал другую кнопку вместо "KDE", графический интерфейс предстал бы перед ним совсем в другом виде и предоставлял бы несколько другие возможности и приемы работы. Далее в лекции объясняется устройство графической подсистемы в Linux. Из этого объяснения станет понятно, почему процесс запуска графического интерфейса оказался двухступенчатым и почему работа с графическим интерфейсом в Linux может быть организована по-разному.