Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В системе X Window, менеджер сеансов X — это программа управления сеансами, способная сохранять и восстанавливать текущее состояние набора запущенных приложений, включая менеджер окон.
In the X Window System, an X session manager is a session management program, a program that can save and restore the current state of a set of running applications, including window manager.
Обзор
С точки зрения менеджера сеансов X, сеанс представляет собой "состояние рабочего стола" в определенный момент времени: набор окон с их текущим содержимым. Более точно, сеанс – это совокупность клиентов, управляющих этими окнами или связанных с ними, а также информация, позволяющая этим приложениям восстановить состояние окон при необходимости. Наиболее заметным преимуществом использования менеджера сеансов является возможность выхода из интерактивного сеанса и последующего возврата к точно тем же окнам в том же состоянии при повторном входе в систему. Для этого программа менеджера сеансов сохраняет имена запущенных приложений при выходе из системы и перезапускает их при входе. Более того, для восстановления состояния приложений (что необходимо для восстановления содержимого окон), приложения должны уметь сохранять свое состояние по запросу менеджера сеансов и загружать его при повторном запуске. В целом, сеанс можно сохранять или загружать в любое время, даже без выхода или входа пользователя в систему. Также возможно сохранение нескольких различных сеансов и выбор одного из них для загрузки. Сеансы могут быть определены и путем указания списка приложений, из которых они состоят. В результате пользователь получает возможность сохранять различные сеансы, либо сохраняя состояние выполняющихся приложений, либо явно перечисляя приложения, составляющие сеанс. Таким образом, пользователь может впоследствии выбрать и загрузить нужный сеанс.
From the point of view of an X session manager, a session is a “state of the desktop” at a given time: a set of windows with their current content. More precisely, a session is the set of clients managing these windows or related to them and the information that allows these applications to restore the condition of these windows if required. The most recognizable effect of using a session manager is the possibility of logging out from an interactive session and then finding exactly the same windows in the same state when logging in again. For this to work, the session manager program stores the names of applications that are running at logout and starts them again at login. Moreover, for the state of the applications to be restored as well (which is needed to restore the content of windows), the applications must be able to save their state of execution upon request from the session manager and load it back when started again. In general, a session can be saved or loaded at any time, even if the user is not logging in or out. It is also possible to save a number of different sessions and loading one of them at user's choice. Sessions can also be specified by providing the list of applications that compose the session. As a result, the user has the possibility of saving a set of different sessions, either by storing the state of execution of the currently running applications or by explicitly listing the applications that compose a session. This way, the user can later decide to load a given session.
Протокол XSMP
Для того чтобы сеанс включал в себя состояние приложения, приложение должно уметь сохранять и загружать своё текущее состояние по запросу менеджера сеансов (обычно при входе или выходе пользователя из системы). Протокол X Session Management Protocol (XSMP) определяет взаимодействие между приложениями и менеджерами сеансов. Формат сообщений XSMP соответствует формату сообщений Inter Client Exchange (ICE). Особенно важно, чтобы менеджер окон мог взаимодействовать с менеджером сеансов, так как менеджер окон отвечает за размещение окон и отображение значков. Приложения, не способные сохранять своё состояние, могут быть включены в сеанс, но не сохраняют своё состояние между сеансами.
In order for a session to include the state of an application, the application must be able to store and load its current state when session manager request to do so (usually on user login or logout). A protocol named X Session Management Protocol (XSMP) specifies how applications and session managers interact. The XSMP message format is the same as the Inter Client Exchange (ICE) message format. Of particular importance is that the window manager is able to communicate with the session manager, as the window manager is responsible for the placement of windows and the existence of icons. Applications that cannot store their state can be included in a session, but they do not preserve their state across sessions.
Протокол
XSMP является подпротоколом протокола обмена между клиентами. Клиент начинает работу протокола, подключаясь к менеджеру сеансов. Способ определения местоположения менеджера сеансов в сети зависит от операционной системы: в POSIX-системах окружение содержит переменную SESSION MANAGER. Следовательно, при запуске клиента его окружение должно содержать эту переменную с корректным значением.
The XSMP is a subprotocol of the Inter Client Exchange Protocol. The client starts the protocol by connecting to the session manager. How the session manager is located on the network is system dependent: in a POSIX system, the environment contains a variable SESSION MANAGER. Therefore, when a client is launched, its environment must contain this variable with an appropriate value.
Местное и глобальное состояние
При запросе у клиента сохранения состояния, оконный менеджер может указать, нужно ли сохранить локальное или глобальное состояние (или оба). Разница заключается в том, будет ли результат сохранения виден другим приложениям или нет. В случае текстового редактора, сохранение глобального состояния означает обычное сохранение файла, чтобы другие приложения могли использовать его новую версию. Сохранение локального состояния означает, что должна быть сохранена локальная копия файла, чтобы другие приложения продолжали видеть файл в его исходной версии.
When asking a client to save its state, the window manager can specify whether the local or global state (or both) has to be saved. The difference is whether the result of the save should be visible to the other applications or not. In the case of the text editor, saving the global state means saving the file normally, so that other applications can use the new version of the file. Saving the local state means that a local copy of the file has to be saved, so that other applications can see the file in its original version.
Сессии управления клиентами
Согласно протоколу XSMP, менеджер сеансов – это произвольная программа (сервер), которая запускает и управляет состоянием других приложений. В результате, клиент может сам выступать в роли менеджера сеансов для других клиентов. Например, почтовый клиент может запустить текстовый редактор для написания электронного письма и управлять им как сеансом. Таким образом, если почтовый клиент будет закрыт и затем перезапущен, он сможет восстановить состояние текстового редактора.
According to the XSMP protocol, a session manager is an arbitrary program (server) that runs and controls the state of other applications. As a result, a client can itself be a session manager of other clients. For example, a mail client can start a text editor for the sake of writing an email, and behave as a session manager with respect to the editor. This way, if the mail client is closed and then restarted again, it can restore the state of the text editor.
Реализация
Система X Window включает в себя менеджер сеансов по умолчанию — xsm. Для определенных сред рабочего стола были разработаны другие менеджеры сеансов.
The X Window System includes a default session manager called xsm. Other session managers have been developed for specific desktop environments.
KDE
является менеджером сеансов по умолчанию для среды рабочего стола KDE Plasma 5.
is a default session manager of KDE Plasma 5 Desktop environment.
Xfce
Программа является менеджером сеансов X по умолчанию для сред рабочего стола на базе Xfce. Xfce позволяет создавать различные сеансы и выбирать их при загрузке системы.
program is a default X Session Manager for Xfce based DEs. Xfce allows to create different sessions and choose them at startup.
Гном
является менеджером сеансов по умолчанию для среды GNOME. GNOME поддерживает XSMP начиная с версии 1.x. В 2013 году GNOME планировал заменить менеджер сеансов GNOME XSMP интерфейсом D-Bus в версии 2.24. В конечном итоге было решено объединить оба интерфейса и предоставить адаптер (клиент) для приложений, использующих устаревшие технологии. Однако на тот момент он не был полностью реализован и не использовался приложениями, не относящимися к GNOME. По состоянию на 2021 год кодовая база по-прежнему включает клиентов менеджера X-сессий.
is a default session manager for Gnome DE. Gnome has supported XSMP since v1. x. 2013 GNOME had intention to replace GNOME session manager XSMP with a D Bus interface in version 2.24. It was eventually decided to combine both interfaces and provide an adapter (client) for legacy applications. At the time it wasn't feature complete however, nor used by non GNOME applications. As of 2021 the codebase still includes X session manager clients.
Поддержка в различных приложениях
Исполняемые приложения обычно не включают (подключают библиотеки для) поддержки сеансов (взаимодействия с менеджером сеансов) напрямую, а реализуют это через SDK, такие как KDE Plasma или GTK, которые предоставляют функции для управления сеансами и обмена данными между клиентом и сервером. Некоторые приложения могут не поддерживать такую возможность.
Executable applications usually do not embed (link against libraries) support for sessions support (interaction with session manager) directly, but do this via some SDK like KDE Plasma or GTK, which provides routines for session management and client server exchange. Some applications may not support.