X会话管理器在X Window系统中,X会话管理器是一个会话管理程序,这个程序能够保存和恢复一组程序的当前运行状态。 概述从X会话管理器的角度来看,一个会话是指给定时间的桌面状态:一组窗口以及它当前的内容。更精确的说,一个会话是一组管理窗口或与窗口有关的客户端以及允许这些程序恢复所需窗口的相关信息。 使用会话管理器最显著的效果是再次登录进入时所有窗口和状态与登出时完全一致。为达到这一点,会话管理器程序存储在登出时运行的程序名称并在再次登录时启动它们。此外,为了能较好的恢复程序的状态(恢复窗口内容是必需的),当会话管理器要求时程序必须能保存它们的运行状态并在重启时重新装载它们。 通常,会话能在任意时刻保存或装载,即使用户没有登录或登出。保存一系列不同的会话并按用户的选择装载其中一个,这是可能的。也可以将一系列程序组合成一个会话。结果是,用户能够保存一些不同的会话,也能存储当前运行程序的状态或明确的将一些程序组合为一个会话。这样,用户可稍后决定装载某个会话。 为了能让会话包括程序的状态,程序必须能在适当的时候保存和装载它当前的状态。X 会话管理协议 (XSMP)指定程序与会话管理器该如何交互。特别重要的是窗口管理器能够与会话管理器通信,因为窗口管理器对窗口的位置和最小化有管理的责任。不能保存状态的程序也包括在会话中,但它们不能在会话中维持自己的状态。 X Window系统包含了默认的会话管理器,名字叫 协议XSMP是客户间交换协议的子协议。客户端连接到会话管理器时开始协议。如何在网络中定位会话管理器是依赖系统的:对POSIX系统来说,环境变量包含了一个 标识符该协议要考虑两方面:
同一个程序的不同实例可能会在同一个或不同会话中同时运行,这些会话大多具有不同的运行状态。例如,用户可用文本编辑器打开 为了能完全的恢复会话,会话管理器必须认定同一个程序的不同实例是不同的。基于这一原因,会话管理器为每一个程序的每一个实例选择一个唯一的标识符。这样,会话管理器就能区分打开 标识符必须唯一。特别是,在由会话管理器管理的所有会话中他们也必须是唯一的:打开 协议主体会话管理协议的主要部分是:
最后一点是可行的,因为会话管理器维护每个客户端的一组属性(在X Window系统中,属性是数据的简单容器)。客户端可在任何时刻修改信息。其中一个属性是 当会话管理器需要客户端保存其状态时,程序按以下步骤运行:
除了 本地和全局状态当请求客户端保存状态时,窗口管理器会指定保存本地状态还是全局状态,或者都保存。两者的区别是保存的状态对其他程序是否可见。 以文本编辑器为例,保存全局状态意味着正常保存文件,其他程序都能看到被文本编辑器修改后的新文件。保存本地状态意味着保存一个文件的本地复本,其他程序都看不到文件新修改的部分。 一个例子以下是超文本编辑器
当客户端被告知要保存状态时,它有可能还能与用户进行有限的交互(例如,询问用户是否保存正在编辑的文件)。不管怎样,状态保存后,它会向会话管理器发送适当的消息。 当会话再次启动时,发生以下步骤:
客户端管理会话依照XSMP协议,只要能够运行和控制其他程序状态的程序都可以是会话管理器。所以,一个客户端本身可以成为其他客户端的会话管理器。例如,Email客户端能启动一个文本编辑器来编写邮件,并在编辑器前表现的像会话管理器。因此,如果电邮客户端并闭后再启动时,它能恢复文本编辑器的状态。 历史
GNOME的会话管理器用D-Bus(版本2.24.[1])取代了XSMP 参见参考文献外部链接 |
Portal di Ensiklopedia Dunia