Варианты работы с окнами могут показаться сбивающими с толку, поскольку не существует общего способа запустить оконную среду в Linux. В следующей главе описаны некоторые из множества возможностей. Тем не менее, когда вы определяете, что должна делать ваша система, вас могут немного увести в сторону файлы, относящиеся к графическому окружению. Это нормально, но не взваливайте эту работу на новых пользователей. Принцип, согласно которому файлы запуска оболочки следует делать как можно проще, творит также чудеса и для файлов запуска графического интерфейса пользователя. На самом деле вам, наверное, вовсе не требуется изменять эти файлы запуска.
14. Краткий обзор рабочего стола Linux
Эта глава является кратким описанием компонентов, которые расположены на рабочем столе типичной системы Linux. Среди различных типов программного обеспечения, которое можно найти в Linux, область рабочего стола является одной из самых необузданных и красочных, поскольку для выбора существует очень много сред и приложений, и в большинстве версий ОС сравнительно легко их опробовать.
В отличие от других частей системы Linux, таких как хранилища и сеть, при создании структуры рабочего стола не сильно задействована иерархия слоев. Вместо этого каждый компонент выполняет определенную задачу, взаимодействуя по мере необходимости с другими компонентами. Некоторые компоненты все же используют совместно общие строительные блоки (в частности, библиотеки для графического инструментария), которые можно представлять себе как простые уровни абстракции, но не более того.
В этой главе в общих чертах затронуты высокоуровневые компоненты рабочего стола, однако мы более подробно рассмотрим два из них: систему X Window, являющуюся основной инфраструктурой для большинства рабочих столов, и шину D-Bus, службу межпроцессного взаимодействия, которая использована во многих частях системы. Мы сведем практические вопросы и примеры к рассмотрению нескольких диагностических утилит, которые, хоть и не слишком полезны в повседневной работе (чтобы взаимодействовать с большинством графических интерфейсов пользователя, нет необходимости вводить команды оболочки), но помогут вам понять лежащие в их основе механизмы системы и, возможно, попутно немного развлекут вас. Мы также вкратце рассмотрим печать.
14.1. Компоненты рабочего стола
Конфигурация рабочего стола Linux является очень гибкой. Большая часть того, с чем приходится иметь дело пользователю Linux («впечатления и ощущения» от использования рабочего стола), исходит от приложений или их строительных блоков. Если вам не нравится какое-либо приложение, то, как правило, можно найти ему замену. Если то, что вы ищете, пока еще не существует, вы можете создать это самостоятельно. Разработчики Linux стремятся к тому, чтобы у рабочего стола было большое разнообразие возможных вариантов настройки, это приводит к большему выбору.
Для совместной работы всем приложениям необходимо иметь что-либо общее, и в сердцевине почти всего в большинстве рабочих столов Linux находится X-сервер (сервер системы X Window). Рассматривайте его как своего рода «ядро» рабочего стола, которое управляет всем, начиная с рендеринга окон и конфигурирования дисплеев и завершая обработкой ввода от таких устройств, как клавиатура и мышь. X-сервер является также тем компонентом, которому вы с трудом сможете подыскать замену (см. раздел 14.4).
X-сервер — это всего лишь сервер, и он не навязывает способ действия или отображения чего-либо. Вместо него с пользовательским интерфейсом работают команды X-клиента. Базовые приложения X-клиента, например окна терминала и браузеры, подключаются к X-серверу и просят его нарисовать окна. В ответ на это X-сервер выясняет, где разместить эти окна, и выполняет рендеринг. Когда требуется, X-сервер отправляет также ввод обратно клиенту.
14.1.1. Менеджеры окон
X-клиенты не должны действовать подобно приложениям, реализованным с помощью окон; они могут действовать как службы для других клиентов или обеспечивать другие функции интерфейса.