En el sistema X Window , un administrador de sesiones X es un programa de administració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 .
Desde el punto de vista de un administrador 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 precisamente, 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 restaurar el estado de estas ventanas si es 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 administrador de sesión 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 Windows), las aplicaciones deben poder guardar su estado de ejecución cuando lo solicite el administrador de sesión 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 inicia ni cierra 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 actualmente en ejecución o enumerando explícitamente las aplicaciones que componen una sesión. De esta forma, el usuario puede decidir posteriormente cargar una sesión determinada.
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 la sesión lo solicite (normalmente al iniciar o cerrar sesión el usuario). Un protocolo llamado X Session Management Protocol (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 Inter-Client Exchange (ICE). [1] Es de particular importancia que el administrador de ventanas pueda comunicarse con el administrador de sesiones, ya que el administrador de ventanas es responsable de la ubicación de las ventanas y la existencia de los iconos. Las aplicaciones que no pueden almacenar su estado se pueden incluir en una sesión, pero no conservan su estado entre sesiones.
El XSMP es un subprotocolo del Protocolo de intercambio entre clientes . El cliente inicia el protocolo conectándose al administrador de sesión. La ubicación del administrador de sesiones en la red depende del sistema: en un sistema POSIX , el entorno contiene una variable SESSION_MANAGER
. Por tanto, cuando se lanza un cliente, su entorno debe contener esta variable con un valor adecuado.
El protocolo tiene en cuenta dos hechos:
Diferentes instancias de la misma aplicación pueden estar activas al mismo tiempo en la misma sesión o en diferentes sesiones, y lo más probable es que estas instancias tengan diferentes estados de ejecución. Por ejemplo, es posible que el usuario haya iniciado un editor de texto en un archivo /etc/passwd
, luego en un archivo letter.txt
en la misma sesión y luego en un archivo todo.txt
en otra sesión.
Para que las sesiones se restablezcan correctamente, el administrador de sesiones debe reconocer como diferentes diferentes instancias de la misma aplicación. Por este motivo, el administrador de sesión elige un identificador único para cada instancia de cada aplicación. De esta manera, el administrador de sesión puede distinguir entre el editor de texto que se está ejecutando /etc/passwd
y el editor de texto que se está ejecutando 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 sesión: el identificador del editor de texto que se ejecuta /etc/passwd
es diferente no sólo del mismo editor de texto que se ejecuta letter.txt
sino también del editor de texto que se ejecuta todo.txt
en 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 de gestión de sesiones son:
El último punto es posible porque el administrador de sesión mantiene un conjunto de propiedades para cada cliente (en la terminología del sistema X Window, una propiedad es simplemente un contenedor de datos). Estos datos pueden ser modificados por el cliente en cualquier momento. Una de estas propiedades se llama RestartCommand
y contiene información sobre cómo se debe iniciar nuevamente el cliente.
Cuando el administrador de sesión solicita a un cliente que guarde su estado, la aplicación procede de la siguiente manera:
RestartCommand
propiedad; esta propiedad debe contener el identificador del cliente porque:El administrador de sesión mantiene otras propiedades además de RestartCommand
. Por ejemplo, una propiedad especifica cómo ejecutar la aplicación si se destruye la sesión.
Cuando le pide 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 de guardar debe ser visible para las otras aplicaciones o no.
En el caso del editor de texto, guardar el estado global significa guardar el archivo normalmente, para que otras aplicaciones puedan usar 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.
Los siguientes son los pasos principales en la interacción de un administrador de sesión con el hipotético editor de texto xyz
cuando esta aplicación se inicia por primera vez en una sesión, luego el usuario cierra sesión y luego vuelve a iniciarla:
4324
;xyz -sid 4324
como propiedad RestartCommand
en el administrador de sesión (esto también depende del sistema: en un sistema POSIX , esta propiedad en realidad contiene la matriz argv ).temp-4324
4324
vuelve a cumplirCuando se le dice al cliente que guarde su estado, puede tener la posibilidad de tener una interacción limitada con el usuario o no (por ejemplo, preguntarle al usuario si desea guardar el archivo editado). De todos modos, el estado se guarda, se lo informa al administrador de la sesión enviando un mensaje apropiado).
Al iniciarse nuevamente la sesión ocurre lo siguiente:
4324
ejecutando lo que está almacenado en la propiedad RestartCommand
asociada con el cliente4324
xyz -sid 4324
; De esta manera, la aplicación conoce su identificador..temp-4324
4324
, para que el administrador de sesión sepa que no se trata de un cliente nuevo sino de uno antiguo que se reiniciaSegún el protocolo XSMP, un administrador de sesión es un programa arbitrario (servidor) que ejecuta y controla el estado de otras aplicaciones. Como resultado, un cliente puede ser él mismo un administrador de sesiones de otros clientes. Por ejemplo, un cliente de correo puede iniciar un editor de texto con el fin de escribir un correo electrónico y comportarse como un administrador de sesión con respecto al editor. De esta forma, si el cliente de correo se cierra y luego se reinicia nuevamente, puede restaurar el estado del editor de texto. [ cita necesaria ]
El sistema X Window incluye un administrador de sesión predeterminado llamado xsm
. Se han desarrollado otros administradores de sesiones para entornos de escritorio específicos .
ksmserver
es un administrador de sesión predeterminado del entorno de escritorio KDE Plasma 5 . [2] [3]
xfce4-session
El programa es un administrador de sesiones X predeterminado para DE basados en Xfce . Xfce permite crear diferentes sesiones y elegirlas al inicio. [4] [5]
gnome-session
es un administrador de sesión predeterminado para Gnome DE. Gnome ha soportado XSMP desde v1.x. 2013 GNOME tenía la intención de reemplazar el administrador de sesiones de GNOME XSMP 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 tenía todas las funciones ni era utilizado por aplicaciones que no fueran GNOME. [8] A partir de 2021, el código base todavía incluye clientes del administrador de sesiones X.
Las aplicaciones ejecutables generalmente no incorporan (enlazan con bibliotecas ) soporte para sesiones (interacción con el administrador de sesiones) directamente, sino que 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. Es posible que algunas aplicaciones no sean compatibles.