Solaris 公用桌面环境:高级用户和系统管理员指南

第 16 章 定制工作区管理器

本章描述如何定制桌面"工作区管理器"。

"工作区管理器"是桌面提供的窗口管理器。 类似于其他的窗口管理器,它控制:

另外,"工作区管理器"控制这些桌面组件:

其中许多可以用"式样管理器"更改。"式样管理器"能够使常用更改快速而不费力。其他资源必须手动设置。

"工作区管理器"是 dtwm。它基于"Motif 窗口管理器"。

有关设置资源的附加信息,请参见"设置应用程序资源"

工作区管理器配置文件

"工作区管理器"从配置文件得到有关窗口菜单、工作区菜单、按钮绑定以及键绑定的信息。

它使用下面的文件之一:

"工作区管理器"以上述次序搜索配置文件, 并使用最先找到的那个。

对于使用不止一个会话语言的用户,可以创建个人的、与语言相关的配置文件 HomeDirectory /.dt/language /dtwrmc,其优先级高于 HomeDirectory /.dt/dtwmrc

创建或修改个人配置文件

个人的工作区管理器配置文件是 HomeDirectory /.dt/dtwmrc。 若该文件存在,则它就是所使用的文件。

  1. 双击 Desktop_Tools 应用程序组中的 Edit Dtwmrc 。

    如果已有个人的 dtwmrc 文件,它就被装入编辑器。如果没有,那么 sys.dtwmrc 被复制到 HomeDirectory/.dt/dtwmrc 中,然后装入编辑器。

  2. 编辑文件。

  3. 退出编辑器。

    不管文件最初来源如何,它都被保存为个人 dtwmrc

创建系统范围的配置文件

系统范围的"工作区管理器"配置文件是 /etc/dt/config/language /sys.dtwmrc

    /usr/dt/config/language /sys.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 文件,以便为工作站上所有新用户更改缺省的工作区数目。

    使用 0*workspaceCount 资源在主屏幕上设置系统范围的缺省值:

    Dtwm*0*workspaceCount: 数目
    

例如,下面的资源在主屏幕上设置系统范围的工作区数目为 6 :

Dtwm*0*workspaceCount: 6

有关设置"工作区管理器"资源的信息,请参见"设置应用程序资源"

例如,下面的资源设置工作区数目为 6 :

 	Dtwm*workspaceCount: 6

提供系统范围的工作区名称

在内部,工作区按编号惯例 wsn 编号,其中 n 是 0、1、2 等等。例如,缺省的四个工作区在内部被编号为 ws0ws3

    使用标题资源以更改指定工作区的名称:

	Dtwm*wsn: 名称

有关设置"工作区管理器"资源的信息,请参见"设置应用程序资源".

例如,下面的资源将缺省的四个工作区设置为指定的名称:

Dtwm*ws0*title:	Anna 
Dtwm*ws1*title:	Don 
Dtwm*ws2*title:	Julia 
Dtwm*ws3*title:	Patti

创建附加的背景

  1. 创建背景图像。它们可以是位图或像素图文件。

  2. 将背景放进下面的目录之一。(可能需要创建此目录。)

    • 系统范围背景:/etc/dt/backdrops

    • 个人背景:HomeDirectory/.dt/backdrops

  3. 从"工作区"菜单中选择"重新启动工作区管理器"。

    将系统范围和个人背景添加到 /usr/dt/backdrops 的内置背景中。

    可以创建与其同名的个人或系统范围背景,来替换现有的内置背景。

用图形图像替换背景

背景被分层在显示的根窗口之上。"式样管理器背景"对话框提供"无背景"设置,在此设置下背景是透明的。

在所有的工作区背景后面只有一个根窗口。因此,放置在根窗口中的图形图像始终跨越在所有的工作区。可以指定哪些工作区用背景覆盖根窗口。然而,当"无背景"有效时,对每个工作区可见的图像是相同的。

  1. 创建图形图像。

    图像必须是有工具能够在根窗口中将其显示出来的格式。例如,如果要使用 xsetroot,必须创建一个位图文件。

  2. 如果它还不存在,就要创建一个可执行文件 HomeDirectory /.dt/sessions/sessionetc

    sessionetc 文件在用户每次登录时运行。

  3. 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 是 CtrlShiftAlt (扩展字符) 或 Lock。 有关所有可能键名称的列表,请参见 "X11 include"目录中的 keysymdef.h 文件。

function-作出该选择后要执行的功能。有关功能的列表,请参见 dtwmrc(4) 手册页。

argument-函数变量。有关详细细节,请参见 dtwmrc(4) 手册页。

例如,下面的标记为"恢复"的菜单项使窗口 normalize (规范化)。在显示菜单时,请键入"R"也将恢复窗口。按"扩展"字符 F5 键也将恢复窗口。

Restore   _R   Alt<Key> F5   f.normalize

注意:

有关"工作区管理器"菜单语法的完整信息,请参见 dtwmrc(4) 手册页。


在工作区菜单添加新的菜单项

  1. 单击"前面板"的"工具"子面板中的"向菜单添加项"控制。

    显示"向工作区菜单添加项"对话框。

    Graphic

  2. 键入完整路径,或者单击"浏览"并选择要运行新菜单项的文件的路径。

    所指向的文件在正常情况下应该可以为该主机所用。它应该是可执行文件或是已注册到主机的数据类型文件 (例如,"音频"或"手册页")。

    包含文件名的完整路径显示在文本框中。

  3. 单击"添加",向菜单中添加文件。

    文件被添加到"工作区菜单"的第一个位置。它的缺省图标 (如有) 和文件名将用作菜单项的图标和文本。


注意:

要更改"工作区菜单"中的菜单项位置,请参见"修改工作区菜单"


修改工作区菜单

  1. 单击"前面板"的"工具"子面板上的"定制工作区菜单"控制。

    所显示"文件管理器"显示出"工作区菜单"的配置文件夹。注意,该文件夹中的文件代表每个菜单项,子文件夹代表每个子菜单。 通过重新安排"工作区菜单"文件夹的内容,可重新安排"工作区菜单"。

    Graphic

  2. 将任何想要移动的菜单项拖放到该子文件夹下的新位置。

    有关在"树视图"模式下使用"文件管理器"的帮助,请参见 《Solaris 公共桌面环境:用户指南》

  3. 把不需要的菜单项文件拖到"前面板"的"垃圾篓"中,将其删除。

  4. 通过编辑其文件或文件夹名称,来重命名需要重命名的任何菜单项。

  5. 对作出的更改感到满意后,从"文件管理器"的"文件"菜单中选择"更新工作区菜单",并退出"文件管理器"。

    "工作区菜单"现在反映出在"工作区菜单"文件夹中所作的更改。

创建新的工作区 (根) 菜单

  1. 打开相应的文件,以便进行编辑:

    • 个人:HomeDirectory /.dt/dtwmrc

    • 系统范围:/etc/dt/config/language /sys.dtwmrc

      有关创建这些文件的信息,请参见"工作区管理器配置文件"

  2. 创建新菜单:

    	Menu menu_name
     	{
     	        ...
     	}

    请参见 "工作区管理器菜单语法"

  3. 创建或编辑按钮绑定来显示新菜单。

    如果该菜单替换了现有的菜单,则编辑显示"工作区"菜单的键绑定。

    <Btn3Down> root  f.menu  menu_name
    

    如果该菜单是附加菜单,则创建一个新的鼠标按钮绑定。例如,在背景上同时按 Shift 键和鼠标按钮 3 ,下面的按钮绑定就显示该菜单:

    	Shift<Btn3Down> root  f.menu  menu_name
    
  4. 从"工作区"菜单中选择"重新启动工作区管理器"。

创建新的窗口菜单


注意:

"窗口"菜单内置在"工作区管理器"中,通常不被定制。为保持窗口性能在应用程序间的一致性,应该避免对"窗口"菜单进行大量的修改。


  1. 打开相应的文件,以便进行编辑:

    • 个人: HomeDirectory /.dt/dtwmrc

    • 系统范围:/etc/dt/config/language /sys.dtwmrc

      有关创建这些文件的信息,请参见"工作区管理器配置文件"

  2. 创建新的菜单:

    	Menu menu_name
     	{
     	        ...
     	}
  3. 使用 windowMenu 资源指定新的菜单:

    Dtwm*windowMenu: menu_name
    
  4. 从"工作区"菜单中选择"重新启动工作区管理器"。

定制按钮绑定

按钮绑定及可能的键盘修改键与窗口管理器功能相关联。按钮绑定适用于所有的工作区。

桌面缺省按钮绑定定义在"工作区管理器"配置文件中的名为 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 -CtrlShiftAltLock

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) 手册页。


添加按钮绑定

  1. 打开相应的文件,以便进行编辑:

    • 个人: HomeDirectory /.dt/dtwmrc

    • 系统范围:/etc/dt/config/language /sys.dtwmrc

      有关创建这些文件的信息,请参见 "工作区管理器配置文件"

  2. 将按钮绑定添加到 DtButtonBindings 定义中。

    不要将相同按钮绑定到单击和按下操作的不同的功能。也不要将多个功能绑定到相同的按钮和上下文。

  3. 从"工作区"菜单中选择"重新启动工作区管理器"。

创建新的按钮绑定集

  1. 打开相应的文件,以便进行编辑:

    • 个人: HomeDirectory /.dt/dtwmrc

    • 系统范围:/etc/dt/config/language /sys.dtwmrc

      有关创建这些文件的信息,请参见"工作区管理器配置文件"

  2. 创建新的按钮绑定集。请参见 "按钮绑定语法"

  3. buttonBindings 资源设置为新的名称:

     	Dtwm*buttonBindings: ButtonBindingsSetName 
    
  4. 从"工作区"菜单中选择"重新启动工作区管理器"。


    注意:

    新的按钮绑定将替换现有的按钮绑定。从 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-CtrlShiftAltLock。允许多个修饰符;用空格把它们分开。

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) 手册页。


创建定制键绑定集

  1. 打开相应的文件,以便进行编辑:

    • 个人: HomeDirectory /.dt/dtwmrc

    • 系统范围:/etc/dt/config/language /sys.dtwmrc

      有关创建这些文件的信息,请参见"工作区管理器配置文件"

  2. 用专用的 KeyBindingSetName 创建新的键绑定集。使用桌面缺省的键绑定集 DtKeyBindings 作为指南。

  3. keyBindings 资源设置为新的集名称:

    	Dtwm*keyBindings: KeyBindingSetName 
    
  4. 从"工作区"菜单中选择"重新启动工作区管理器"。


    注意:

    新的键绑定将替换现有的键绑定。将任何要保留的键绑定从 DtKeyBindings 复制到新集中。


在缺省和定制的性能之间切换

在 Motif 缺省和 CDE 桌面窗口性能之间切换:

  1. 按 Alt+Shift+Ctrl+!

  2. 在对话框中单击"确定"。

    切换到缺省性能的操作会去除"前面板"和任何定制键和按钮绑定。