Однако стандарт Wayland является не единственной альтернативой системе X. На момент написания этой книги известно, что другой проект, Mir, имеет похожие цели, хотя в его архитектуре использован немного другой подход. Когда-нибудь произойдет повсеместное принятие хотя бы одной новой системы, которая может оказаться или не оказаться какой-либо из упомянутых.
Эти новые разработки важны, так как они не будут ограничены лишь рабочим столом Linux. Вследствие своего малого быстродействия и гигантского объема используемого дискового пространства система X Window непригодна для таких сред, как планшеты и смартфоны, поэтому производителям до сих пор приходилось использовать альтернативные системы, чтобы привести в действие встроенные дисплеи Linux. Тем не менее стандартизированный прямой рендеринг может содействовать появлению менее затратных способов поддержки таких дисплеев.
14.5. Шина D-Bus
Одной из самых важных разработок, которая возникла из рабочего стола Linux, является
Эта шина состоит из библиотеки, которая стандартизирует межпроцессное взаимодействие с помощью протокола и функций поддержки, позволяющих любым двум процессам взаимодействовать друг с другом. Сама по себе эта библиотека представляет не что иное, как специальную версию обычных функций IPC, таких как сокеты домена Unix. Шину D-Bus делает полезной наличие центрального «концентратора», который называется dbus-daemon. Процессы, которым необходимо реагировать на события, могут подключаться к этому демону и регистрироваться для получения различных типов событий. Процессы могут также создавать события. Например, процесс udisks-daemon прослушивает службу ubus на наличие дисковых событий, а затем отправляет их демону dbus-daemon, который передает их приложениям, заинтересованным в дисковых событиях.
14.5.1. Системный и сеансовый экземпляры
Шина D-Bus стала неотъемлемой частью Linux, и сейчас она выходит за рамки рабочего стола. Например, в системах systemd и Upstart есть каналы коммуникации шины D-Bus. Тем не менее добавление в ядро системы зависимостей от инструментов рабочего стола идет вразрез с основным замыслом Linux.
Чтобы решить эту проблему, есть два типа экземпляров (процессов) dbus-daemon, которые можно запустить. Первый является системным экземпляром, запускаемым системой init во время загрузки системы с помощью параметра —system. Системный экземпляр обычно работает как пользователь D-Bus, и его файлом конфигурации является /etc/dbus-1/system.conf (хотя, возможно, вам не придется его менять). Процессы могут подключаться к системному экземпляру через сокет домена Unix /var/run/dbus/system_bus_socket.
Независимо от системного экземпляра шины D-Bus существует необязательный сеансовый экземпляр, который работает только тогда, когда вы запускаете сеанс рабочего стола. Приложения рабочего стола подключаются к этому экземпляру.
14.5.2. Отслеживание сообщений шины D-Bus
Одним из лучших способов увидеть различия между системным и сеансовым экземплярами демона dbus-daemon является отслеживание событий, которые проходят по шине. Попробуйте применить утилиту dbus-monitor в системном режиме следующим образом:
$ dbus-monitor —system
signal sender=org.freedesktop.DBus - dest=:1.952 serial=2 path=/org/
freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
string ":1.952"
Стартовое сообщение говорит о том, что монитор подключен и получил имя. При подобном запуске вы не должны увидеть большую активность, поскольку системный экземпляр обычно не очень занят. Чтобы увидеть какие-либо события, попробуйте подключить USB-накопитель.
По сравнению с этим сеансовому экземпляру приходится выполнять многое. При условии, что вы вошли в сеанс рабочего стола, попробуйте ввести такую команду:
$ dbus-monitor —session
Теперь проведите указателем мыши над разными окнами; если ваш рабочий стол знает о шине D-Bus, вы должны получить шквал сообщений об активизированных окнах.
14.6. Печать
Печать документа в Linux является многоэтапным процессом. Он протекает следующим образом.
1. Программа, выполняющая печать, обычно конвертирует документ в формат PostScript. Этот шаг необязателен.
2. Программа отправляет документ на сервер печати.
3. Сервер печати получает документ и помещает его в очередь печати.
4. Когда доходит очередь до этого документа, сервер печати отправляет документ в фильтр печати.
5. Если документ не в формате PostScript, фильтр печати может выполнить его конвертацию.