Компоненты среды рабочего стола | Linux

Последовательность запуска компонентов графической сессии kde-plasma: Все начинается с того, что запускается тот самый процесс инициализации системы в пространстве пользователя с pid = 1. Сейчас этот процесс называется systemd, но, все равно, во многих системах вы будете видеть в списке процессов экземпляр с названием init, который является символьной ссылкой на исполняемый файл systemd.

Untitled

init

Сейчас, для понимания того, как стартует графическое окружение, вам необходимо знать только то, что этот процесс запускает пулл программ на этапе инициализации системы, в том числе, он запускает дисплей менеджер, точнее, он запускает сервис display-manager.service, который, в свою очередь, запускает исполняемый файл дисплей менеджера. Основные пути, по которым лежат сервисы:»/etc/systemd/system» »/run/systemd/system» »/lib/systemd/system». Для окружения kde-plasma, стандартным dm является sddm. При инсталляции пакета, сервис данного дисплей менеджера попадет в директорию /lib/systemd/system. На самом деле »/etc/systemd/system/display-manager.service» является всего лишь символьной ссылкой на сервис текущего основного dm. Соответственно, systemd, при запуске дисплей менеджера, будет работать именно с сервисом, который лежит в /lib/systemd/system — в эту директорию записываются сервисы, которые предоставляются пакетами после установки — в нашем случае, systemd обработает /lib/systemd/system/sddm.service, который, если заглянуть внутрь, запустит /usr/bin/sddm.

Untitled

display-manager.service

Untitled

sddm.service

После запуска, для того, чтобы вывести пользователю интерфейс, sddm запускает Xorg сервер, грубо говоря — приложение, которое реализовывает взаимодействие с клиентами по протоколу X. На пример, для того, чтобы отобразить окно, клиентское приложение должно вызывает метод XMapWindow, Xorg сервер принимает запрос, обращается к графическому оборудованию и выводит изображение на экран. Это довольно примитивное объяснение того, реализована оконная система X — общее представление ее компонентов выглядит довольно комплексно и заслуживает подробного разбора в отдельной статье.

Untitled

Структура X Window System

После того, как пользователь успешно себя идентифицировал и выбрал окружение рабочего стола plasma, sddm, в зависимости от типа сессии X11/Wayland, запустит либо startplasma-x11, либо startplasma-wayland. С этого процесса начинается инициализация пользовательской сессии: выставляются глобальные переменные окружения, запускается набор ключевых для сессии сервисов через dbus и приложений из директорий автостарта. В случае, если systemd не запущен, либо отсутствуют необходимые таргеты (юниты, которые позволяют запускать сервисы группами), startplasma-x11 запускает процесс plasma-session, который является фоллбэком и запускает приложения без привязки к менеджеру systemd.

Untitled

startplasma.cpp

Untitled

Дерево запуска процессов

Далее, после того, как plasma определилась с тем, каким способом формировать костяк нашей сессии, происходит непосредственный запуск приложений и сервисов. Для приложений из директорий автостарта учитывается приоритет. В .desktop файлах можно указать фазу, на которой оно будет запущено. Для этого в kde-plasma существует переменная X-KDE-autostart-phase. Индексация идет с 0 до 2. Приложение с самым последним индексом будет запущено позже всего. Указывать приоритет запуска может быть полезно в случае, когда между приложениями происходит коммуникация (IPC). На этом этапе старта системы запускаются такие приложения как оконный менеджер (kwin), оболочка (plasmashell), менеджер сессии (ksmserver), сервис уведомлений, демон (kded5) и так далее: список всех запущенных процессов с демонстрацией вложенности вы можете посмотреть с помощью команды »ps -axjf». После того, как все готово, вы наконец-то входите в сессию, видите рабочий стол и все его графические компоненты.

Фуууух, на этом, наверное, можно закончить общее ознакомление с тем, из чего состоит «среднее по России» окружение рабочего стола. Надеюсь, вы почерпнули для себя что-то новое и сможете чуть более уверенно пользоваться системой. Если я где-то в технических разъяснениях допустил ошибку, не стесняйтесь меня править.

Услышимся в следующих статьях!

Habrahabr.ru прочитано 6946 раз