Введение

В системе X Window, менеджер сеансов X — это программа управления сеансами, способная сохранять и восстанавливать текущее состояние набора запущенных приложений, включая менеджер окон.

Обзор

С точки зрения менеджера сеансов X, сеанс представляет собой "состояние рабочего стола" в определенный момент времени: набор окон с их текущим содержимым. Более точно, сеанс – это совокупность клиентов, управляющих этими окнами или связанных с ними, а также информация, позволяющая этим приложениям восстановить состояние окон при необходимости. Наиболее заметным преимуществом использования менеджера сеансов является возможность выхода из интерактивного сеанса и последующего возврата к точно тем же окнам в том же состоянии при повторном входе в систему. Для этого программа менеджера сеансов сохраняет имена запущенных приложений при выходе из системы и перезапускает их при входе. Более того, для восстановления состояния приложений (что необходимо для восстановления содержимого окон), приложения должны уметь сохранять свое состояние по запросу менеджера сеансов и загружать его при повторном запуске. В целом, сеанс можно сохранять или загружать в любое время, даже без выхода или входа пользователя в систему. Также возможно сохранение нескольких различных сеансов и выбор одного из них для загрузки. Сеансы могут быть определены и путем указания списка приложений, из которых они состоят. В результате пользователь получает возможность сохранять различные сеансы, либо сохраняя состояние выполняющихся приложений, либо явно перечисляя приложения, составляющие сеанс. Таким образом, пользователь может впоследствии выбрать и загрузить нужный сеанс.

Протокол XSMP

Для того чтобы сеанс включал в себя состояние приложения, приложение должно уметь сохранять и загружать своё текущее состояние по запросу менеджера сеансов (обычно при входе или выходе пользователя из системы). Протокол X Session Management Protocol (XSMP) определяет взаимодействие между приложениями и менеджерами сеансов. Формат сообщений XSMP соответствует формату сообщений Inter Client Exchange (ICE). Особенно важно, чтобы менеджер окон мог взаимодействовать с менеджером сеансов, так как менеджер окон отвечает за размещение окон и отображение значков. Приложения, не способные сохранять своё состояние, могут быть включены в сеанс, но не сохраняют своё состояние между сеансами.

Протокол

XSMP является подпротоколом протокола обмена между клиентами. Клиент начинает работу протокола, подключаясь к менеджеру сеансов. Способ определения местоположения менеджера сеансов в сети зависит от операционной системы: в POSIX-системах окружение содержит переменную SESSION MANAGER. Следовательно, при запуске клиента его окружение должно содержать эту переменную с корректным значением.

Местное и глобальное состояние

При запросе у клиента сохранения состояния, оконный менеджер может указать, нужно ли сохранить локальное или глобальное состояние (или оба). Разница заключается в том, будет ли результат сохранения виден другим приложениям или нет. В случае текстового редактора, сохранение глобального состояния означает обычное сохранение файла, чтобы другие приложения могли использовать его новую версию. Сохранение локального состояния означает, что должна быть сохранена локальная копия файла, чтобы другие приложения продолжали видеть файл в его исходной версии.

Сессии управления клиентами

Согласно протоколу XSMP, менеджер сеансов – это произвольная программа (сервер), которая запускает и управляет состоянием других приложений. В результате, клиент может сам выступать в роли менеджера сеансов для других клиентов. Например, почтовый клиент может запустить текстовый редактор для написания электронного письма и управлять им как сеансом. Таким образом, если почтовый клиент будет закрыт и затем перезапущен, он сможет восстановить состояние текстового редактора.

Реализация

Система X Window включает в себя менеджер сеансов по умолчанию — xsm. Для определенных сред рабочего стола были разработаны другие менеджеры сеансов.

KDE

является менеджером сеансов по умолчанию для среды рабочего стола KDE Plasma 5.

Xfce

Программа является менеджером сеансов X по умолчанию для сред рабочего стола на базе Xfce. Xfce позволяет создавать различные сеансы и выбирать их при загрузке системы.

Гном

является менеджером сеансов по умолчанию для среды GNOME. GNOME поддерживает XSMP начиная с версии 1.x. В 2013 году GNOME планировал заменить менеджер сеансов GNOME XSMP интерфейсом D-Bus в версии 2.24. В конечном итоге было решено объединить оба интерфейса и предоставить адаптер (клиент) для приложений, использующих устаревшие технологии. Однако на тот момент он не был полностью реализован и не использовался приложениями, не относящимися к GNOME. По состоянию на 2021 год кодовая база по-прежнему включает клиентов менеджера X-сессий.

Поддержка в различных приложениях

Исполняемые приложения обычно не включают (подключают библиотеки для) поддержки сеансов (взаимодействия с менеджером сеансов) напрямую, а реализуют это через SDK, такие как KDE Plasma или GTK, которые предоставляют функции для управления сеансами и обмена данными между клиентом и сервером. Некоторые приложения могут не поддерживать такую возможность.