“会话管理器”负责启动桌面并能够自动保存和恢复运行的应用程序、颜色、字体、鼠标性能、音频音量及键盘击键。
使用“会话管理器”可以:
为所有桌面用户定制初始会话
为所有桌面用户定制环境和资源
更改会话启动消息
更改会话启动工具和守护程序的参数
为所有用户定制桌面颜色用法
会话是在用户的桌面上所给出的应用程序、设置及资源的集合。会话管理是一套惯例和协议,它们启用“会话管理器”保存和恢复用户的会话。用户能够登录到系统,并且提供给用户的处于运行状态的应用程序、设置和资源的集合与用户注销时提供给用户的相同。用户第一次登录到桌面时,会装入缺省的初始会话。此后,“会话管理器”便支持当前和起始会话的概念。
当用户第一次登录到桌面时,“会话管理器” 将使用系统缺省值生成该用户的初始会话。在缺省情况下,“文件管理器”及“桌面介绍” (帮助卷) 将启动。
无论在登录时是从保存的起始会话、保存的当前会话,还是从系统缺省初始会话恢复,用户正在运行的会话总视为当前会话。当用户退出会话时, 基于用户的“式样管理器启动”设置,“会话管理器”会自动保存当前会话。用户下次登录到桌面时,“会话管理器”会重新启动先前保存的当前会话,这意味着桌面将恢复到与用户上次注销时相同的状态。
还可以让桌面在用户每次登录时都恢复为相同的状态,不管用户注销时桌面是什么状态。用户可以保存当前会话的状态,然后使用“式样管理器启动”设置,使“会话管理器”在用户每次登录时启动该会话。
要为特定的显示器运行专用会话,用户可以创建显示器专用会话。若想这样,用户可以将 HomeDirectory /.dt/sessions 目录复制到 HomeDirectory /.dt/display 中,其中display 是实际的、无限定的主机名 (例如,pablo:0 是有效的,而 pablo.gato.com:0 和 unix:0 是无效的)。用户在显示器 pablo:0 上登录时,“会话管理器” 将启动该显示器专用会话。
“会话管理器”是通过 /usr/dt/bin/Xsession 启动的。当用户使用“登录管理器”登录时,在缺省情况下,启动 Xsession。
或者,用户也可以使用传统的字符模式 (getty) 登录进行登录,并使用启动 X 服务器的工具,例如 xinit,来手动启动“会话管理器”。例如:xinit /usr/dt/bin/Xsession。
“会话管理器”启动时,它经过下面的步骤启动用户的会话:
会话一启动,Xsession 脚本便开始查找用户的 HomeDirectory/.dtprofile 脚本。HomeDirectory /.dtprofile 脚本是一个 /bin/sh 或 /bin/ksh 脚本,它使用户可以为自己的会话设置环境变量。 有关设置环境变量的详细信息,请参阅附加的会话启动定制 。
如果 HomeDirectory/.dtprofile 脚本不存在,例如当用户第一次登录到桌面时,Xsession 将把桌面缺省文件 sys.dtprofile 复制到 HomeDirectory /.dtprofile。
桌面缺省值为 /usr/dt/config/sys.dtprofile。要定制 sys.dtprofile 脚本,需将 sys.dtprofile 从 /usr/dt/config 复制到 /etc/dt/config 中,并编辑新文件。
查找 HomeDirectory/.dtprofile 脚本之后,Xsession 脚本查找 Xsession.d 脚本。这些脚本用来设置附加的环境变量,并为用户的会话启动可选守护程序。缺省的 Xsession.d 脚本为:
0010.dtpaths—将可定制的桌面查找路径记入文档
0020.dtims—启动可选的输入方法服务器
0030.dttmpdir—创建每个用户、每个会话的临时目录
0040.xmbind—将 $XMBINDDIR 设置为桌面缺省值
在 Xsession.d 中还可能另外附有一些供应商专用脚本。
Xsession 首先查找 /etc/dt/config/Xsession.d 目录中的所有文件,然后是 /usr/dt/config/Xsession.d 目录中的所有文件。
桌面缺省的 Xsession.d 脚本位于 /usr/dt/config/Xsession.d 目录。要定制 Xsession.d 脚本,需将脚本从 /usr/dt/config/Xsession.d 复制到 /etc/dt/config/Xsession.d 中, 并编辑新文件。必须具有执行许可才能执行该任务。
同样,要使 Xsession 自动查找您自己的脚本,需将该脚本复制到 /etc/dt/config/Xsession.d 中。
修改或创建 Xsession.d 脚本时,要确保发出的任何前台命令持续时间不长,因为命令所占用的时间将直接影响会话启动时间。如果前台命令不退出,则会话启动将挂起。如果想要 Xsession.d 脚本中运行的命令在会话期间继续运行,就应该在后台运行它们。
查找 HomeDirectory/.dtprofile 和 Xsession.d 脚本之后,Xsession 显示覆盖屏幕的欢迎消息。可以定制显示的欢迎消息,或完全关闭消息。dthello 客户机被用来显示消息。
要更改信息文本,可以通过修改 dtstart_hello[0] 变量来更改 dthello 选项。
要更改 dtstart_hello[0],需创建设置新值的 /etc/dt/config/Xsession.d 脚本。要为所有用户显示当日的消息,需创建可执行的 sh 或 ksh 脚本 (例如 /etc/dt/config/Xsession.d/myvars),并将 dtstart_hello[0] 设置如下:
dtstart_hello[0]="/usr/dt/bin/dthello -file /etc/motd &"
类似地,用户可通过设置 HomeDirectory/.dtprofile 中的 dtstart_hello[0] 来更改它们的会话的欢迎消息。
要关闭欢迎消息,需设置 dtstart_hello[0]=" "。
有关 dthello 的详细内容,请参阅 dthello 手册页。
桌面查找路径由 dtsearchpath 在登录时创建。dtsearchpath 使用两类环境变量:
输入变量—全系统的及个人的环境变量,它们的值由系统管理员或最终用户设置。
输出变量—由 dtsearchpath 创建并赋值的变量。每个变量的值都是桌面会话的查找路径。
要更改 dtsearchpath 的命令行选项,需修改 dtstart_searchpath 变量。要为所有用户更改 dtstart_searchpath 变量,需创建可执行的 sh 或 ksh 脚本 (例如 /etc/dt/config/Xsession.d/myvars),并将 dtstart_searchpath设置如下:
dtstart_searchpath="/usr/dt/bin/dtsearchpath"
类似地,用户可以通过设置 HomeDirectory/.dtprofile 中的 dtstart_searchpath 来只为自己的会话更改 dtsearchpath 选项。
有关 dtsearchpath 的详细信息,请参阅第 9 章,桌面查找路径。有关 dtsearchpath 选项的详细信息,请参阅 dtsearchpath 手册页。
设置桌面查找路径后的下一步是使用 dtappgather 收集可用的应用程序。更改 dtappgather 的命令行选项,需修改 dtstart_appgather 变量。要为所有用户更改 dtstart_appgather 变量,需创建可执行的 sh 或 ksh 脚本 (例如 /etc/dt/config/Xsession.d/myvars) ,并将 dtstart_appgather 设置如下:
dtstart_appgather="/usr/dt/bin/dtappgather &"
类似地,通过设置 HomeDirectory/.dtprofile 中的 dtstart_appgather,用户可以仅改变自己会话的 dtappgather 选项。
有关 dtappgather 选项的详细信息,请参阅 dtappgather(4) 手册页。
Xsession 能够查找用户的传统 HomeDirectory /.profile 或 HomeDirectory /.login 脚本。在缺省情况下禁用该能力。要告知 Xsession 查找 .profile 或 .login 脚本,需将 DTSOURCEPROFILE
设置为 true。
要为所有用户更改 DTSOURCEPROFILE
,需创建设置新值的 /etc/dt/config/Xsession.d脚本。为所有用户将 DTSOURCEPROFILE
设置为 true,需创建可执行的 sh 或 ksh 脚本,例如 /etc/dt/config/Xsession.d/myvars,并将 DTSOURCEPROFILE
设置如下:
DTSOURCEPROFILE=true
类似地,通过在 HomeDirectory/.dtprofile 中将 DTSOURCEPROFILE
设置为 true, 用户可以为自己的会话更改 DTSOURCEPROFILE
。
ToolTalk 消息传送守护程序,ttsession,使独立的应用程序可以在相互不直接了解的情况下通信。应用程序创建并发送 ToolTalk 消息来互相通信。ttsession 在网络上通信以传送消息。
要更改 ttsession 的命令行选项,需更改 dtstart_ttsession 变量。要为所有用户更改 dtstart_ttsession 变量,需创建可执行的 sh 或 ksh 脚本 (例如 /etc/dt/config/Xsession.d/myvars),并将 dtstart_ttsession 设置如下:
dtstart_ttsession="/usr/dt/bin/ttsession -s"
类似地,通过设置 HomeDirectory/.dtprofile 中的 dtstart_appgather,用户可以仅改变自己会话的 dtappgather 选项。
有关 ttsession 选项的详细信息,请参阅 ttsession 手册页。有关 ttsession 的详细信息,请参阅Common Desktop Environment: ToolTalk Messaging Overview。
此时,Xsession 启动 /usr/dt/bin/dtsession,使会话启动进程继续下去。
“会话管理器”使用 X服务器的 RESOURCE_MANAGER
属性以使桌面资源可用于所有应用程序。“会话管理器”通过下面的方法装入 RESOURCE_MANAGER
:
装入系统缺省资源
合并由系统管理员指定的所有全系统的资源
合并所有用户指定的资源
桌面缺省资源可以在 /usr/dt/config/language/sys.resources找到。通过 RESOURCE_MANAGER
特性,使这些资源可用于每个用户的会话。不应编辑此文件,因为它会被后续的桌面安装覆盖。
可以通过创建 /etc/dt/config/language/sys.resources 来增加系统缺省资源。在此文件中,您可以覆盖所有桌面用户的缺省资源或为所有桌面用户指定附加的资源。因为在会话启动过程中此文件被合并到桌面缺省资源中,所以只有新的或更新过的资源规范才能放到此文件中。通过 RESOURCE_MANAGER
特性,该文件中指定的资源可用于每个用户的会话。该文件中指定的资源优先于桌面缺省资源文件中所指定资源。
用户可以使用其 HomeDirectory/.Xdefaults 文件增加桌面缺省的和全系统的资源。通过 RESOURCE_MANAGER
特性,将使该文件中指定的资源用于该用户的会话。该文件中指定的资源优先于桌面缺省资源或系统管理员资源文件中所指定资源。
“X 工具包内置工具”公用程序指定将从 RESOURCE_MANAGER
或者从 HomeDirectory /.Xdefaults 为应用程序装入资源,但是不可同时从二者装入资源。一般,这意味着会忽略用户的 HomeDirectory /.Xdefaults 文件。但是,如上所述,在会话启动时“会话管理器”通过将 HomeDirectory/.Xdefaults 合并到 RESOURCE_MANAGER
中来调整前者。如果用户更改 RESOURCE_MANAGER
/.Xdefaults,那么在用户调用“重新装入资源”操作之前,所做的更改对新的应用程序是看不到的。“重新装入资源”操作将命令“会话管理器”重新装放带有缺省的、全系统的及用户指定资源的 RESOURCE_MANAGER。这样,对全系统的及个人的资源文件所做的更改就可用于应用程序。
有关详细信息,请参阅:
dtresourcesfile(4) 手册页
“会话管理器”用作桌面的颜色服务器并提供下面的 dtsession 资源集,这些资源集可用来配置 “会话管理器”。
dynamicColor—指定是否分配只读颜色
shadowPixmaps—指定是否为顶部阴影或底部阴影分配颜色
writeXrdbColors—指定是否在资源数据库中放置 *background 和 *foreground 资源
通过创建 /etc/dt/config/language /sys.resources, 并在该文件中指定颜色服务器,为所有用户设置颜色服务器资源。
用户也可以类似地通过在 HomeDirectory/.Xdefaults 指定颜色服务器资源来为自己的会话设置颜色服务器资源。
有关设置颜色服务器资源的详细信息,请参阅管理颜色。
“会话管理器”负责启动“工作区管理器”。在缺省情况下会启动 /usr/dt/bin/dtwm。可以使用 wmStartupCommand 资源指定替代窗口服务器。
可以通过创建 /etc/dt/config/language /sys.resources,并用该文件中的 Dtsession*wmStartupCommand 资源为窗口管理器指定全路径名及选项,来为所有用户指定替代窗口管理器。
用户可以类似地通过在 HomeDirectory/.Xdefaults 指定 Dtsession*wmStartupCommand 资源只为自己的会话指定替代窗口管理器。
有关“窗口管理器”的详细信息,请参阅第 16 章,定制工作区管理器。
会话一启动,“会话管理器”将重新启动被保存为会话的一部分的任何应用程序。即将被恢复为用户初始会话一部分的系统缺省应用程序集可在 /usr/dt/config/language /sys.session 中找到。不应编辑此文件,这是因为在后续的桌面安装过程中,它将被无条件覆盖。
有关详细信息,请参阅 dtsessionfile(4) 手册页。
系统管理员可以将 /usr/dt/config/language /sys.session 复制到 /etc/dt/config/language/sys.session,并修改后面这个文件,这样即可替换作为用户初始会话的一部分而启动的应用程序集。与资源文件不同,该文件将用作桌面缺省文件的完整替换,所以您可以复制一份系统缺省文件,并做任何必要的修改。
本节包括:
设置环境变量
设置资源
使用与显示器相关的会话
在登录时运行脚本
恢复备份会话
例如,如果创建可执行的 ksh 脚本,/etc/dt/config/Xsession.d/myvars, 它包含:
export MYVARIABLE="value"
那么变量 MYVARIABLE
在下次登录时将被设置到每个用户的环境中。
例如:
export MYVARIABLE="value"
在下次登录时会把变量 MYVARIABLE
设置到每个用户的环境中。
“会话管理器”不自动读取 .profile 或 .login 文件。然而,可以对它进行配置来使用这些文件,参见 可选地查找 .profile 或 .login 脚本。
.dtprofile 只支持 /bin/sh 或 /bin/ksh 语法。
例如,如果在 /etc/dt/config/C/sys.resources 中指定:
AnApplication*resource: value
那么资源 AnApplication*resource在下次登录时,将被设置在每个用户的RESOURCE_MANAGER
属性中。
设置个人资源,请将资源添加到文件 HomeDirectory/.Xdefaults 中。
可为系统上的所有桌面用户设置显示器专用资源。用户也可设置仅限于自己的会话的显示器专用资源。这样用户就可以根据用户登录到桌面时使用的显示器来指定资源。
要为系统上的所有桌面用户设置显示器专用资源, 需创建指定显示器专用资源的文件 /etc/dt/config/language /sys.resources。
要设置个人的显示器专用资源,需在主HomeDirectory/.Xdefaults 中指定此资源。
通过将这些资源放入 cpp 条件语句中来界定它们。DISPLAY_
displayname 宏是根据 $DISPLAY
变量的值来定义的。这是通过将所有 . (句点) 和 : (冒号) 字符转换为 _ (下划线) ,去掉所有屏幕说明,最后给结果加上 DISPLAY_
前缀来实现的。
例如 :0 的 $DISPLAY
为 DISPLAY_0
;blanco.gato.com:0.0 的 $DISPLAY
则是 DISPLAY_blanco_gato_com_0。结果值可用作会话资源文件中的 cpp 测试的一部分。例如,如果在 /etc/dt/config/C/sys.resources 中指定:
Myapp*resource: value
#ifdef DISPLAY_blanco_gato_com_0 Myapp*resource: specialvalue1 #endif
#ifdef DISPLAY_pablo_gato_com_0 Myapp*resource: specialvalue2 #endif
当用户登录到显示器 blanco.gato.com:0上时,资源 MyApp*resource 将在 RESOURCE_MANAGER
中被设置为 specialvalue1 ;当用户登录到显示器 pablo.gato.com:0 上时设置为 specialvalue2;当用户登录到另一个显示器上时设置为 value。
可以指定替代应用程序,把它作为用户初始会话的一部分来启动。
将 /usr/dt/config/language /sys.session 复制为 /etc/dt/config/language/sys.session。
sys.session 中的每项都显现为:
dtsmcmd -cmd command_and_options
要把附加应用程序作为用户初始会话的一部分来启动,需以全路径名指定新的 sys.session 项。例如,要把 /usr/bin/X11/xclock 作为用户初始会话的一部分,需将 xclock 项添加到 /etc/dt/config/C/sys.session 中:
# # Start up xclock... # dtsmcmd -cmd "/usr/bin/X11/xclock -digital"
用户可设置显示器专用会话,以便将会话调节到特定的显示器。
将 HomeDirectory /.dt/sessions 目录复制到 HomeDirectory /.dt/display ,其中 display 为实际的、无限定的主机名 (pablo:0 是有效的,而 pablo.gato.com:0 或 unix:0 无效)。
例如,要为显示器 pablo.gato.com:0 创建显示器专用会话:
cp -r HomeDirectory/.dt/sessions HomeDirectory/.dt/pablo:0
用户下次登录到显示器 pablo.gato.com:0 上时,“会话管理器”将启动该显示器专用会话。
当用户登录到其桌面会话后,便可指定启动附加的命令。这对于设置未被“会话管理器”保存的 X 设置是有用的。例如,用户可使用 xsetroot 来定制根 (工作区) 指针。另一种使用方法 是启动不能被“会话管理器”保存及恢复的应用程序。另一个用途是启动“会话管理器”不能保存和恢复的应用程序。如果应用程序在会话恢复时没有重新启动,用户可以使用这种方法启动客户机。
该文件通常是脚本而且必须具有执行许可。应在后台运行在 sessionetc 中启动的进程。
不要使用 sessionetc 来启动由“会话管理器”自动恢复的客户机。这样的操作可能导致启动应用程序的多个副本。也许不能立即看到副本,因为窗口可能会互相堆叠 。
sessionetc 的伴侣文件为 sessionexit。在会话退出时使用 sessionexit 来执行一些不是由“会话管理器”处理的操作。
创建包含命令的文件 HomeDirectory/.dt/sessions/sessionexit。
类似于 sessionetc,该文件通常是具有执行许可的脚本。
当“会话管理器”保存会话时,会话信息被存储在 HomeDirectory/.dt/sessions 目录中;如果使用显示器专用会话,则存储在 HomeDirectory/.dt/display 目录中。在这些目录中,“会话管理器”创建名为 current 或 home 的子目录来分别为相应的当前或起始的会话存储信息。在会话信息被存储之前,“会话管理器”以所创建的名称为前会话做备份,并将它存储在 current.old 或 home.old 中。
从登录屏幕,通过使用“失败安全会话”或“命令行登录”进行登录。
将备份会话目录复制到活动名中。例如,要恢复备份起始会话:
cp -r HomeDirectory/.dt/sessions/home.old \ HomeDirectory/.dt/sessions/home
显示器专用会话可使用相同方式恢复。
“会话管理器”在该文件中记录每个用户的会话启动进度。
/usr/dt/bin/Xsession
/usr/dt/config/Xsession.d/*
/usr/dt/bin/dtsession
/usr/dt/bin/dtsession_res
HomeDirectory /.dt/sessions/current
HomeDirectory /.dt/sessions/home
HomeDirectory /.dt/display /current
HomeDirectory /.dt/display/home