本章描述如何定制桌面"工作区管理器"。
"工作区管理器"是桌面提供的窗口管理器。 类似于其他的窗口管理器,它控制:
窗框组件的外观
窗口的性能,包括它们的堆叠次序和聚焦性能
键绑定和按钮绑定
最小化窗口的外观
"工作区"和"窗口"菜单
另外,"工作区管理器"控制这些桌面组件:
工作区。 "工作区管理器"控制工作区的数目,并跟踪每个工作区中所打开的窗口。
工作区背景。用户使用"式样管理器"更改背景。但是,背景管理是"工作区管理器"的一个功能。
前面板。尽管"前面板"使用自身的配置文件,但是,它由"工作区管理器"创建和管理。
其中许多可以用"式样管理器"更改。"式样管理器"能够使常用更改快速而不费力。其他资源必须手动设置。
"工作区管理器"是 dtwm。它基于"Motif 窗口管理器"。
有关"工作区管理器"的参考信息,请参见 dtwm(1) 和 dtwmrc(4) 手册页。
有关设置"工作区管理器"资源的信息,请参见"设置应用程序资源"。
有关"前面板"配置文件的信息,请参见第 15 章,高级前面板定制。
有关设置资源的附加信息,请参见"设置应用程序资源"。
"工作区管理器"从配置文件得到有关窗口菜单、工作区菜单、按钮绑定以及键绑定的信息。
它使用下面的文件之一:
内置文件: /usr/dt/config/language /sys.dtwmrc
"工作区管理器"以上述次序搜索配置文件, 并使用最先找到的那个。
对于使用不止一个会话语言的用户,可以创建个人的、与语言相关的配置文件 HomeDirectory /.dt/language /dtwrmc,其优先级高于 HomeDirectory /.dt/dtwmrc。
个人的工作区管理器配置文件是 HomeDirectory /.dt/dtwmrc。 若该文件存在,则它就是所使用的文件。
双击 Desktop_Tools 应用程序组中的 Edit Dtwmrc 。
如果已有个人的 dtwmrc 文件,它就被装入编辑器。如果没有,那么 sys.dtwmrc 被复制到 HomeDirectory/.dt/dtwmrc 中,然后装入编辑器。
编辑文件。
退出编辑器。
不管文件最初来源如何,它都被保存为个人 dtwmrc。
系统范围的"工作区管理器"配置文件是 /etc/dt/config/language /sys.dtwmrc。
如果 HomeDirectory/.dt/dtwmrc 存在,则不使用此文件。
使用语法:
include { path path ... }
例如,下面的行源在文件 /users/ellen/mymenu 中:
include { /users/ellen/mymenu }
对于没有复制整个配置文件提供的附加功能而言,包括语句很有用。例如,用户可能想没有管理整个配置文件而创建新的键绑定。用户可以创建含有下面的内容的文件 HomeDirectory/.dt/dtwmrc:
include { /etc/dt/config/C/sys.dtwmrc } Keys DtKeyBindings { Alt<Key>F5 root f.menu Applications
}
Menu Applications { "GraphicsApp" f.exec "/usr/bin/GraphicsApp/GApp" ... }
为了使对配置文件所作的更改生效,必须重新启动"工作区管理器"。
从"工作区"菜单选择"重新启动工作区管理器" (当指针落在背景上时,按鼠标按钮 3)。
用户可以用桌面的界面完成大多数工作区定制,比如更改工作区名称和工作区的数目等。但是,"工作区管理器"为设置系统范围的缺省值提供了资源。
缺省的桌面配置提供四个工作区。用户可使用与工作区切换相关联的弹出式菜单来添加和删除工作区。
/usr/dt/app-defaults/C/Dtwm 文件将 workspaceCount 资源设置成下面的缺省数目的工作区:
Dtwm*0*workspaceCount: 4 Dtwm*workspaceCount: 1
在屏幕 0 上指定多个工作区。在任何其他屏幕上指定单个的工作区。
可创建 (或修改现有的) /etc/dt/config/C/sys.resources 文件,以便为工作站上所有新用户更改缺省的工作区数目。
例如,下面的资源在主屏幕上设置系统范围的工作区数目为 6 :
Dtwm*0*workspaceCount: 6
有关设置"工作区管理器"资源的信息,请参见"设置应用程序资源" 。
例如,下面的资源设置工作区数目为 6 :
Dtwm*workspaceCount: 6
在内部,工作区按编号惯例 wsn 编号,其中 n 是 0、1、2 等等。例如,缺省的四个工作区在内部被编号为 ws0 到 ws3。
Dtwm*wsn: 名称
有关设置"工作区管理器"资源的信息,请参见"设置应用程序资源".
例如,下面的资源将缺省的四个工作区设置为指定的名称:
Dtwm*ws0*title: Anna Dtwm*ws1*title: Don Dtwm*ws2*title: Julia Dtwm*ws3*title: Patti
创建背景图像。它们可以是位图或像素图文件。
系统范围背景:/etc/dt/backdrops
个人背景:HomeDirectory/.dt/backdrops
从"工作区"菜单中选择"重新启动工作区管理器"。
将系统范围和个人背景添加到 /usr/dt/backdrops 的内置背景中。
可以创建与其同名的个人或系统范围背景,来替换现有的内置背景。
背景被分层在显示的根窗口之上。"式样管理器背景"对话框提供"无背景"设置,在此设置下背景是透明的。
在所有的工作区背景后面只有一个根窗口。因此,放置在根窗口中的图形图像始终跨越在所有的工作区。可以指定哪些工作区用背景覆盖根窗口。然而,当"无背景"有效时,对每个工作区可见的图像是相同的。
创建图形图像。
图像必须是有工具能够在根窗口中将其显示出来的格式。例如,如果要使用 xsetroot,必须创建一个位图文件。
如果它还不存在,就要创建一个可执行文件 HomeDirectory /.dt/sessions/sessionetc。
sessionetc 文件在用户每次登录时运行。
在 sessionetc 文件中放置用于显示图像的命令。
例如,下面的命令用指定的位图平铺显示根窗口:
xsetroot -bitmap /users/ellen/.dt/icons/root.bm
"工作区管理器"有三个缺省菜单:
工作区菜单-又称作根菜单。当指针位于背景上时,用户按鼠标按钮 3,即显示该菜单。该菜单通过按钮绑定与鼠标按钮相关联。
窗口菜单-用户在指针位于"窗口"菜单按钮 (窗框的左上角) 上时按鼠标按钮 1 或 3,即显示该菜单。该菜单通过 windowMenu 资源与按钮相关联。
"前面板"菜单-用户在指针位于"前面板"的"窗口"菜单按钮上时按鼠标按钮 1 或 3,即显示该菜单。
"工作区管理器"菜单具有下面的语法:
Menu MenuName { selection1 [mnemonic] [accelerator] function [argument] selection2 [mnemonic] [accelerator] function [argument] ... }
其中:
selection-出现在菜单中的文本或位图。如果文本包含空格,就用引号将文本括起。对于位图,使用语法 @/path。
mnemonic-是显示菜单时用作键盘简捷方式的单个字符。在 form _character 中指定。
accelerator-无论菜单是否显示,键盘简捷方式都是活动的。加速器具有语法 modifier<Key> Keyname,其中 modifier 是 Ctrl、 Shift、Alt (扩展字符) 或 Lock。 有关所有可能键名称的列表,请参见 "X11 include"目录中的 keysymdef.h 文件。
function-作出该选择后要执行的功能。有关功能的列表,请参见 dtwmrc(4) 手册页。
argument-函数变量。有关详细细节,请参见 dtwmrc(4) 手册页。
例如,下面的标记为"恢复"的菜单项使窗口 normalize (规范化)。在显示菜单时,请键入"R"也将恢复窗口。按"扩展"字符 F5 键也将恢复窗口。
Restore _R Alt<Key> F5 f.normalize
有关"工作区管理器"菜单语法的完整信息,请参见 dtwmrc(4) 手册页。
单击"前面板"的"工具"子面板中的"向菜单添加项"控制。
显示"向工作区菜单添加项"对话框。
键入完整路径,或者单击"浏览"并选择要运行新菜单项的文件的路径。
所指向的文件在正常情况下应该可以为该主机所用。它应该是可执行文件或是已注册到主机的数据类型文件 (例如,"音频"或"手册页")。
包含文件名的完整路径显示在文本框中。
单击"添加",向菜单中添加文件。
文件被添加到"工作区菜单"的第一个位置。它的缺省图标 (如有) 和文件名将用作菜单项的图标和文本。
要更改"工作区菜单"中的菜单项位置,请参见"修改工作区菜单"。
单击"前面板"的"工具"子面板上的"定制工作区菜单"控制。
所显示"文件管理器"显示出"工作区菜单"的配置文件夹。注意,该文件夹中的文件代表每个菜单项,子文件夹代表每个子菜单。 通过重新安排"工作区菜单"文件夹的内容,可重新安排"工作区菜单"。
有关在"树视图"模式下使用"文件管理器"的帮助,请参见 《Solaris 公共桌面环境:用户指南》。
把不需要的菜单项文件拖到"前面板"的"垃圾篓"中,将其删除。
通过编辑其文件或文件夹名称,来重命名需要重命名的任何菜单项。
对作出的更改感到满意后,从"文件管理器"的"文件"菜单中选择"更新工作区菜单",并退出"文件管理器"。
"工作区菜单"现在反映出在"工作区菜单"文件夹中所作的更改。
打开相应的文件,以便进行编辑:
个人:HomeDirectory /.dt/dtwmrc
系统范围:/etc/dt/config/language /sys.dtwmrc
有关创建这些文件的信息,请参见"工作区管理器配置文件"。
创建新菜单:
Menu menu_name { ... }
请参见 "工作区管理器菜单语法"。
创建或编辑按钮绑定来显示新菜单。
如果该菜单替换了现有的菜单,则编辑显示"工作区"菜单的键绑定。
<Btn3Down> root f.menu menu_name
如果该菜单是附加菜单,则创建一个新的鼠标按钮绑定。例如,在背景上同时按 Shift 键和鼠标按钮 3 ,下面的按钮绑定就显示该菜单:
Shift<Btn3Down> root f.menu menu_name
从"工作区"菜单中选择"重新启动工作区管理器"。
"窗口"菜单内置在"工作区管理器"中,通常不被定制。为保持窗口性能在应用程序间的一致性,应该避免对"窗口"菜单进行大量的修改。
打开相应的文件,以便进行编辑:
个人: HomeDirectory /.dt/dtwmrc
系统范围:/etc/dt/config/language /sys.dtwmrc
有关创建这些文件的信息,请参见"工作区管理器配置文件"。
创建新的菜单:
Menu menu_name { ... }
使用 windowMenu 资源指定新的菜单:
Dtwm*windowMenu: menu_name
从"工作区"菜单中选择"重新启动工作区管理器"。
按钮绑定及可能的键盘修改键与窗口管理器功能相关联。按钮绑定适用于所有的工作区。
桌面缺省按钮绑定定义在"工作区管理器"配置文件中的名为 DtButtonBindings 按钮绑定集之中:
按钮 DtButtonBindings { ... }
按钮绑定的语法是:
Buttons ButtonBindingSetName { [modifier]< button_nameMouse_action> context function [argument] [modifier]< button_nameMouse_action> context function [argument]
其中:
button_name -Btn1-鼠标左键 Btn2-中间键 (三键鼠标) 或两键 (双键鼠标) Btn3-右键 Btn4-在三键鼠标上同时按住键 1 和键 2 Btn5-在三键鼠标上同时按住键 2 和键 3
modifier -Ctrl、Shift、Alt、Lock
mouse_action -Down-按住鼠标;键 Up-释放鼠标按钮;Click-按下然后释放鼠标键;Click2-双击鼠标键; Drag-当按住鼠标键时拖动鼠标
context-表示绑定生效时指针必须在的位置。必要时,使用"|"字符将多个内容分开。
root-工作区窗口;window-客户窗口或窗框;frame-窗框架,不包括内容;icon-图标;title-标题栏;app-客户窗口 (不包括框架)
function-窗口管理器功能之一。有关有效功能的列表,请参考 dtwmrc(4) 手册页。
argument-任何需要的窗口管理器的功能变量。有关详细信息,请参考 dtwmrc(4) 手册页。
例如,当指针位于工作区窗口 (而不在客户窗口) 中,按鼠标键 3 时,下面的行显示 DtRootMenu 中描述的菜单。
<Btn3Down> root f.menu DtRootMenu
有关按钮绑定语法的完整信息,请参见 dtwmrc(4) 手册页。
打开相应的文件,以便进行编辑:
个人: HomeDirectory /.dt/dtwmrc
系统范围:/etc/dt/config/language /sys.dtwmrc
有关创建这些文件的信息,请参见 "工作区管理器配置文件"。
将按钮绑定添加到 DtButtonBindings 定义中。
不要将相同按钮绑定到单击和按下操作的不同的功能。也不要将多个功能绑定到相同的按钮和上下文。
从"工作区"菜单中选择"重新启动工作区管理器"。
打开相应的文件,以便进行编辑:
个人: HomeDirectory /.dt/dtwmrc
系统范围:/etc/dt/config/language /sys.dtwmrc
有关创建这些文件的信息,请参见"工作区管理器配置文件"。
创建新的按钮绑定集。请参见 "按钮绑定语法"。
Dtwm*buttonBindings: ButtonBindingsSetName
从"工作区"菜单中选择"重新启动工作区管理器"。
新的按钮绑定将替换现有的按钮绑定。从 DtButtonBindings 复制要保留的按钮绑定。
键盘绑定,也称作键绑定,将键的组合与"工作区管理器"功能相关联。 键绑定适用于所有工作区。
使用公共键组合作为键盘绑定时要小心。例如,Shift-A 一般是在当前窗口中输入字母"A"。如果将 Shift-A 绑定到某功能,将失去它的正常用法。
桌面缺省的键绑定定义在"工作区管理器"配置文件中,在名为 DtKeyBindings 键绑定集中:
Keys DtKeyBindings { ... }
键绑定的语法是:
Keys KeyBindingSetName { [Modifiers]<Key>key_name context function [argument] [Modifiers]<Key>key_name context function [argument] ... }
其中:
Modifiers-Ctrl、Shift、 Alt 和 Lock。允许多个修饰符;用空格把它们分开。
key_name-功能所映射的键。对于字母键或数字键,key_name 名称通常打印在键上。例如,"a"键的名称为"a",而"2"键的名称为"2"。"Tab"键名为"Tab"。"F3"键名为"F3"。
至于其他键,其名称被拼写出来-例如,plus 为"+"键。位于与系统相关的目录中的文件 keysymdef.h,包含了有关键名的附加信息。
context-该元素必须具有使该操作生效的键盘焦点。如果绑定适用于不止一个上下文,则这些可并置在一起。多个上下文用"|"字符分开。
root-工作区背景; window-客户窗口; icon-图标
function-窗口管理器功能。有关有效功能的列表,请参考 dtwmrc(4) 手册页。
argument-任何需要的窗口管理器的功能变量。有关详细信息,请参考 dtwmrc(4) 手册页。
例如,下面的键绑定使用户通过按 Alt+F6 ,将键盘焦点切换到应用程序中下一个瞬态窗口。
Alt<Key>F6 window f.next_key transient
有关键绑定的完整信息,请参见 dtwmrc(4) 手册页。
打开相应的文件,以便进行编辑:
个人: HomeDirectory /.dt/dtwmrc
系统范围:/etc/dt/config/language /sys.dtwmrc
有关创建这些文件的信息,请参见"工作区管理器配置文件"。
用专用的 KeyBindingSetName 创建新的键绑定集。使用桌面缺省的键绑定集 DtKeyBindings 作为指南。
Dtwm*keyBindings: KeyBindingSetName
从"工作区"菜单中选择"重新启动工作区管理器"。
新的键绑定将替换现有的键绑定。将任何要保留的键绑定从 DtKeyBindings 复制到新集中。
在 Motif 缺省和 CDE 桌面窗口性能之间切换: