stringtranslate.com

Administrador de sesiones X

En el sistema X Window , un administrador de sesiones X es un programa de gestión de sesiones , un programa que puede guardar y restaurar el estado actual de un conjunto de aplicaciones en ejecución, incluido el administrador de ventanas .

Descripción general

Desde el punto de vista de un gestor de sesiones X, una sesión es un «estado del escritorio» en un momento dado: un conjunto de ventanas con su contenido actual. Más concretamente, una sesión es el conjunto de clientes que gestionan estas ventanas o están relacionados con ellas y la información que permite a estas aplicaciones restablecer el estado de estas ventanas en caso necesario.

El efecto más reconocible de utilizar un administrador de sesiones es la posibilidad de cerrar sesión en una sesión interactiva y luego encontrar exactamente las mismas ventanas en el mismo estado al iniciar sesión nuevamente. Para que esto funcione, el programa de administrador de sesiones almacena los nombres de las aplicaciones que se están ejecutando al cerrar sesión y las inicia nuevamente al iniciar sesión. Además, para que también se restaure el estado de las aplicaciones (lo cual es necesario para restaurar el contenido de las ventanas), las aplicaciones deben poder guardar su estado de ejecución cuando lo solicite el administrador de sesiones y volver a cargarlo cuando se inicien nuevamente.

En general, una sesión se puede guardar o cargar en cualquier momento, incluso si el usuario no está iniciando o cerrando sesión. También es posible guardar varias sesiones diferentes y cargar una de ellas a elección del usuario. Las sesiones también se pueden especificar proporcionando la lista de aplicaciones que componen la sesión. Como resultado, el usuario tiene la posibilidad de guardar un conjunto de sesiones diferentes, ya sea almacenando el estado de ejecución de las aplicaciones que se están ejecutando actualmente o enumerando explícitamente las aplicaciones que componen una sesión. De esta manera, el usuario puede decidir más tarde cargar una sesión determinada.

Protocolo XSMP

Para que una sesión incluya el estado de una aplicación, la aplicación debe poder almacenar y cargar su estado actual cuando el administrador de sesiones lo solicite (normalmente, cuando el usuario inicia o cierra sesión). Un protocolo denominado Protocolo de administración de sesiones X (XSMP) especifica cómo interactúan las aplicaciones y los administradores de sesiones. El formato de mensaje XSMP es el mismo que el formato de mensaje de Intercambio entre clientes (ICE). [1] Es de particular importancia que el administrador de ventanas pueda comunicarse con el administrador de sesiones, ya que este último es responsable de la ubicación de las ventanas y de la existencia de iconos. Las aplicaciones que no pueden almacenar su estado pueden incluirse en una sesión, pero no conservan su estado entre sesiones.

El Protocolo

XSMP es un subprotocolo del Protocolo de intercambio entre clientes . El cliente inicia el protocolo conectándose al administrador de sesiones. La ubicación del administrador de sesiones en la red depende del sistema: en un sistema POSIXSESSION_MANAGER , el entorno contiene una variable . Por lo tanto, cuando se inicia un cliente, su entorno debe contener esta variable con un valor apropiado.

Identificadores

El protocolo tiene en cuenta dos hechos:

  1. para que una sesión se reinicie correctamente, no sólo se deben reiniciar las aplicaciones que se ejecutan en ella, sino que también se deben reiniciar de tal forma que restablezcan su estado anterior;
  2. La misma aplicación puede ejecutarse más de una vez en la misma sesión o en diferentes sesiones.
Una sesión con dos instancias de xedit abiertas en archivos diferentes

Es posible que distintas instancias de la misma aplicación estén activas al mismo tiempo en la misma sesión o en sesiones diferentes, y es muy probable que estas instancias tengan distintos estados de ejecución. Por ejemplo, el usuario puede haber iniciado un editor de texto en file /etc/passwd, luego en file letter.txten la misma sesión y luego en file todo.txten otra sesión.

Para que las sesiones se restablezcan correctamente, el administrador de sesiones debe reconocer como diferentes las distintas instancias de la misma aplicación. Por este motivo, el administrador de sesiones elige un identificador único para cada instancia de cada aplicación. De esta manera, el administrador de sesiones puede distinguir entre el editor de texto que se está ejecutando en /etc/passwdy el editor de texto que se está ejecutando en todo.txt, incluso si son dos instancias del mismo programa.

Los identificadores deben ser únicos. En particular, deben ser únicos en todas las sesiones administradas por el administrador de sesiones: el identificador del editor de texto que se está ejecutando /etc/passwdno solo es diferente del mismo editor de texto que se está ejecutando letter.txt, sino también del editor de texto que se está ejecutando todo.txten otra sesión. El identificador de un cliente sigue siendo el mismo incluso si la sesión se cierra y se reinicia.

Las partes principales del protocolo

Las partes principales del protocolo de gestión de sesiones son:

  1. El administrador de sesiones elige un identificador único para cada cliente
  2. El administrador de sesiones solicita a los clientes que guarden su estado.
  3. un cliente especifica cómo debe iniciarse nuevamente para que se restaure el estado (por ejemplo, la línea de comando que se utilizará para iniciar el proceso)

El último punto es posible porque el administrador de sesiones mantiene un conjunto de propiedades para cada cliente (en la terminología del sistema X Window, una propiedad es simplemente un contenedor de datos). El cliente puede modificar estos datos en cualquier momento. Una de estas propiedades se denomina RestartCommand, y contiene la información sobre cómo debe reiniciarse el cliente.

Cuando el administrador de sesiones solicita a un cliente que guarde su estado, la aplicación procede de la siguiente manera:

  1. guarda su estado de tal manera que se puedan distinguir los estados de dos instancias diferentes; esto se puede obtener, por ejemplo, guardando el estado en un archivo cuyo nombre contenga su identificador
  2. almacena la especificación de cómo debe iniciarse nuevamente en la RestartCommandpropiedad; esta propiedad debe contener el identificador del cliente porque:
    1. La aplicación debe conservar su identificador cuando se inicie nuevamente.
    2. El identificador es necesario para restaurar el estado (por ejemplo, es necesario para encontrar el archivo donde se almacena su estado)

El administrador de sesiones mantiene otras propiedades además de RestartCommand. Por ejemplo, una propiedad especifica cómo ejecutar la aplicación si se destruye la sesión.

Estado local y global

Al solicitar a un cliente que guarde su estado, el administrador de ventanas puede especificar si se debe guardar el estado local o global (o ambos). La diferencia es si el resultado del guardado debe ser visible para las demás aplicaciones o no.

En el caso del editor de texto, guardar el estado global significa guardar el archivo de forma normal, para que otras aplicaciones puedan utilizar la nueva versión del archivo. Guardar el estado local significa que se debe guardar una copia local del archivo, para que otras aplicaciones puedan ver el archivo en su versión original.

Un ejemplo

Los siguientes son los pasos principales en la interacción de un administrador de sesiones con el editor de texto hipotético xyzcuando esta aplicación se inicia por primera vez en una sesión, luego el usuario cierra la sesión y luego vuelve a iniciarla:

  1. La aplicación se conecta al administrador de sesiones a través del Protocolo de intercambio entre clientes.
  2. la aplicación le dice al administrador de sesiones que es la primera vez que se inicia y, por lo tanto, no tiene un identificador previo (y, por lo tanto, no tiene un estado previo)
  3. El administrador de sesiones responde enviando al cliente su identificador único, por ejemplo 4324;
  4. El administrador de sesiones solicita inmediatamente al cliente que guarde su estado local (solo porque el cliente se ha iniciado por primera vez)
  5. El cliente almacena la línea de comando xyz -sid 4324como propiedad RestartCommanden el administrador de sesiones (esto también depende del sistema: en un sistema POSIX , esta propiedad en realidad contiene la matriz argv )
  6. El cliente almacena su estado localmente; por ejemplo, puede almacenar el nombre del archivo editado y toda la demás información (como la línea actual) en el archivo local..temp-4324
  7. Cuando el usuario cierra sesión, el administrador de sesión envía un mensaje a todos los clientes notificándoles que deben guardar su estado.
  8. El cliente 4324vuelve a cumplir
  9. Cuando todos los clientes han comunicado al administrador de sesiones que su estado está guardado, el administrador de sesiones cierra la sesión.

Cuando se le indica al cliente que guarde su estado, puede tener la posibilidad de tener una interacción limitada con el usuario o no (por ejemplo, preguntar al usuario si se debe guardar el archivo editado). De todas formas, el estado se guarda, se lo dice al administrador de la sesión enviando un mensaje apropiado).

Al reiniciar la sesión se produce lo siguiente:

  1. El administrador de sesiones reinicia el cliente 4324ejecutando lo que está almacenado en la propiedad RestartCommandasociada con el cliente.4324
  2. Por lo tanto, la aplicación se inicia como xyz -sid 4324; de esta manera, la aplicación conoce su identificador
  3. La aplicación recupera la información de estado del archivo..temp-4324
  4. La aplicación se conecta al administrador de sesiones especificando el identificador 4324, para que el administrador de sesiones sepa que no se trata de un cliente nuevo sino de uno antiguo que se reinicia.

Sesiones de gestión de clientes

Según el protocolo XSMP, un administrador de sesiones es un programa arbitrario (servidor) que se ejecuta y controla el estado de otras aplicaciones. Como resultado, un cliente puede ser a su vez un administrador de sesiones de otros clientes. Por ejemplo, un cliente de correo puede iniciar un editor de texto para escribir un correo electrónico y comportarse como un administrador de sesiones con respecto al editor. De esta manera, si el cliente de correo se cierra y luego se reinicia nuevamente, puede restaurar el estado del editor de texto. [ cita requerida ]

Implementaciones

El sistema X Window incluye un administrador de sesiones predeterminado llamado xsm. Se han desarrollado otros administradores de sesiones para entornos de escritorio específicos .

KDE

ksmserveres un administrador de sesiones predeterminado del entorno de escritorio KDE Plasma 5. [ 2] [3]

Xfce

xfce4-sessionEl programa es un gestor de sesiones X predeterminado para los entornos de escritorio basados ​​en Xfce . Xfce permite crear diferentes sesiones y elegirlas al iniciar. [4] [5]

Gnomo

gnome-sessiones un gestor de sesiones predeterminado para Gnome DE. Gnome ha soportado XSMP desde la v1.x. En 2013, GNOME tenía la intención de reemplazar el gestor de sesiones XSMP de GNOME con una interfaz D-Bus en la versión 2.24. [6] Finalmente, se decidió combinar ambas interfaces y proporcionar un adaptador (cliente) para aplicaciones heredadas. [7] Sin embargo, en ese momento no estaba completo en cuanto a funciones ni lo utilizaban aplicaciones que no fueran de GNOME. [8] A partir de 2021, el código base todavía incluye clientes de gestor de sesiones X.

Soporte entre aplicaciones

Las aplicaciones ejecutables normalmente no incorporan (enlace con bibliotecas ) soporte para sesiones (interacción con el administrador de sesiones) directamente, pero lo hacen a través de algún SDK como KDE Plasma o GTK, que proporciona rutinas para la administración de sesiones y el intercambio cliente-servidor. Algunas aplicaciones pueden no soportarlo.

Véase también

Referencias

  1. ^ "Protocolo de gestión de sesiones X". www.x.org . Consultado el 2 de diciembre de 2020 .
  2. ^ "Guía del usuario del escritorio KDE - KSMServer". www.linuxtopia.org . Consultado el 5 de octubre de 2021 .
  3. ^ "ksmserver · master · Plasma / Plasma Workspace". GitLab . Consultado el 5 de octubre de 2021 .
  4. ^ "xfce:xfce4-session:start [Documentación de Xfce]". docs.xfce.org . Consultado el 5 de octubre de 2021 .
  5. ^ "xfce:xfce4-session:preferences [Documentación de Xfce]". docs.xfce.org . Consultado el 5 de octubre de 2021 .
  6. ^ "Proyectos/Gestión de sesiones/GnomeSession - Wiki de GNOME!". wiki.gnome.org .
  7. ^ "Proyectos/Gestión de sesiones/NewGnomeSession - Wiki de GNOME!". wiki.gnome.org . Consultado el 5 de octubre de 2021 .
  8. ^ "Capítulo 6 Administración de sesiones (Guía de administración del sistema del escritorio GNOME 2.0 para el entorno operativo Solaris)". docs.oracle.com . Consultado el 5 de octubre de 2021 .

Enlaces externos