stringtranslate.com

Менеджер сеансов X

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

Обзор

С точки зрения менеджера сеансов X, сеанс — это «состояние рабочего стола» в данный момент времени: набор окон с их текущим содержимым. Точнее, сеанс — это набор клиентов, управляющих этими окнами или связанных с ними, и информация, которая позволяет этим приложениям восстанавливать состояние этих окон при необходимости.

Наиболее узнаваемым эффектом использования менеджера сеансов является возможность выхода из интерактивного сеанса и последующего обнаружения точно таких же окон в том же состоянии при повторном входе. Чтобы это работало, программа менеджера сеансов сохраняет имена приложений, которые запущены при выходе из системы, и запускает их снова при входе в систему. Более того, для восстановления состояния приложений (что необходимо для восстановления содержимого окон) приложения должны иметь возможность сохранять свое состояние выполнения по запросу от менеджера сеансов и загружать его обратно при повторном запуске.

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

XSMP-протокол

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

Протокол

XSMP — это подпротокол протокола Inter-Client Exchange Protocol . Клиент запускает протокол, подключаясь к менеджеру сеансов. Расположение менеджера сеансов в сети зависит от системы: в системе POSIX окружение содержит переменную SESSION_MANAGER. Поэтому при запуске клиента его окружение должно содержать эту переменную с соответствующим значением.

Идентификаторы

Протокол учитывает два факта:

  1. для корректного перезапуска сеанса необходимо не только перезапустить работающие в нем приложения, но и перезапустить их таким образом, чтобы они восстановили свое предыдущее состояние;
  2. одно и то же приложение может быть запущено несколько раз в одном и том же или разных сеансах.
Сеанс с двумя экземплярами xedit, открытыми для разных файлов

Различные экземпляры одного и того же приложения могут быть активны в одно и то же время в одном и том же или в разных сеансах, и эти экземпляры, скорее всего, имеют разные состояния выполнения. Например, пользователь мог запустить текстовый редактор на файле /etc/passwd, затем на файле letter.txtв том же сеансе, а затем на файле todo.txtв другом сеансе.

Для того чтобы сеансы были восстановлены правильно, менеджер сеансов должен распознавать разные экземпляры одного и того же приложения как разные. По этой причине менеджер сеансов выбирает уникальный идентификатор для каждого экземпляра каждого приложения. Таким образом, менеджер сеансов может различать текстовый редактор, работающий на /etc/passwdи текстовый редактор, работающий на todo.txt, даже если это два экземпляра одной и той же программы.

Идентификаторы должны быть уникальными. В частности, они должны быть уникальными во всех сеансах, управляемых менеджером сеансов: идентификатор текстового редактора, работающего на , /etc/passwdотличается не только от того же текстового редактора, работающего на letter.txt, но и от текстового редактора, работающего на todo.txtв другом сеансе. Идентификатор клиента остается тем же, даже если сеанс завершается и перезапускается.

Основные части протокола

Основными частями протокола управления сеансом являются:

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

Последний пункт возможен, поскольку менеджер сеансов поддерживает набор свойств для каждого клиента (в терминологии X Window System свойство — это просто контейнер для данных). Эти фрагменты информации могут быть изменены клиентом в любое время. Одно из этих свойств называется RestartCommandи содержит информацию о том, как клиент должен быть запущен снова.

Когда менеджер сеансов запрашивает у клиента сохранение его состояния, приложение действует следующим образом:

  1. он сохраняет свое состояние таким образом, что состояния двух разных экземпляров можно различить; это можно получить, например, сохранив состояние в файле, имя которого содержит его идентификатор
  2. он сохраняет спецификацию того, как он должен быть запущен снова в RestartCommandсвойстве; это свойство должно содержать идентификатор клиента, потому что:
    1. приложение должно сохранять свой идентификатор при повторном запуске
    2. идентификатор необходим для восстановления состояния (например, он необходим для поиска файла, в котором хранится его состояние)

Менеджер сеансов поддерживает и другие свойства помимо RestartCommand. Например, свойство указывает, как запустить приложение, если сеанс уничтожен.

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

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

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

Пример

Ниже приведены основные этапы взаимодействия менеджера сеанса с гипотетическим текстовым редактором, xyzкогда это приложение запускается впервые в сеансе, затем пользователь выходит из системы и снова входит в нее:

  1. приложение подключается к менеджеру сеансов через протокол межклиентского обмена
  2. приложение сообщает менеджеру сеансов, что это первый его запуск, и поэтому у него нет предыдущего идентификатора (и, следовательно, предыдущего состояния)
  3. менеджер сеансов отвечает, отправляя клиенту свой уникальный идентификатор, например 4324;
  4. менеджер сеансов немедленно просит клиента сохранить свое локальное состояние (только потому, что клиент был запущен в первый раз)
  5. клиент сохраняет командную строку xyz -sid 4324как свойство RestartCommandв менеджере сеансов (это также зависит от системы: в системе POSIX это свойство фактически содержит массив argv )
  6. клиент хранит свое состояние локально; например, он может хранить имя редактируемого файла и всю другую информацию (такую ​​как текущая строка) в локальном файле.temp-4324
  7. когда пользователь выходит из системы, менеджер сеансов отправляет всем клиентам сообщение, уведомляющее их о необходимости сохранить свое состояние
  8. клиент 4324снова подчиняется
  9. когда все клиенты сообщили менеджеру сеанса, что их состояние сохранено, менеджер сеанса завершает сеанс

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

При повторном запуске сеанса происходит следующее:

  1. менеджер сеансов перезапускает клиент 4324, выполняя то, что хранится в свойстве, RestartCommandсвязанном с клиентом4324
  2. приложение поэтому запускается как xyz -sid 4324; таким образом, приложение знает свой идентификатор
  3. приложение извлекает информацию о состоянии из файла.temp-4324
  4. приложение подключается к менеджеру сеансов, указывая идентификатор 4324, так что менеджер сеансов знает, что это не новый клиент, а перезапускающийся старый

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

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

Реализации

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

КДЕ

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

Xfce

xfce4-sessionПрограмма является стандартным X Session Manager для DE на базе Xfce . Xfce позволяет создавать различные сеансы и выбирать их при запуске. [4] [5]

Гном

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

Поддержка всех приложений

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

Смотрите также

Ссылки

  1. ^ "Протокол управления сеансом X". www.x.org . Получено 2020-12-02 .
  2. ^ "Руководство пользователя рабочего стола KDE - KSMServer". www.linuxtopia.org . Получено 2021-10-05 .
  3. ^ "ksmserver · master · Plasma / Plasma Workspace". GitLab . Получено 2021-10-05 .
  4. ^ "xfce:xfce4-session:start [Xfce Docs]". docs.xfce.org . Получено 2021-10-05 .
  5. ^ "xfce:xfce4-session:preferences [Xfce Docs]". docs.xfce.org . Получено 2021-10-05 .
  6. ^ "Проекты/Управление сеансами/GnomeSession - GNOME Wiki!". wiki.gnome.org .
  7. ^ "Projects/SessionManagement/NewGnomeSession - GNOME Wiki!". wiki.gnome.org . Получено 2021-10-05 .
  8. ^ "Глава 6 Управление сеансами (Руководство по системному администрированию рабочего стола GNOME 2.0 для операционной среды Solaris)". docs.oracle.com . Получено 2021-10-05 .

Внешние ссылки