定制窗口管理器
本节介绍初级管理(LPIC-1)考试 101 的主题 1.110.4 的内容。这个主题的权重为 5。
在本节中,将学习如何:
- 定制系统范围的桌面环境或窗口管理器
- 定制窗口管理器菜单和桌面面板菜单
- 配置 X 终端
- 检查并解决 X 应用程序的库依赖性问题
- 导出 X 显示屏幕
窗口管理器
在上一节中,学习了有关显示管理器的知识,以及如何设置这些显示管理器。在本教程中,您还学到 X 是一个用来让应用程序可以创建图形窗口的工具包,它并没有规定用户界面。在本节中,将学习更多有关用户界面的知识,以及如何配置在 X 会话运行之后要发生的情况。
可以想象一下,如果没有任何用户界面规范,开发人员的创造力可能会产生不同风格的窗口,它们具有不同的击键、鼠标操作,按钮、对话框等等东西都有不同的风格。为了在这种混沌状态中建立秩序,就开发了高级的工具包。这产生了窗口管理器(window manager),例如 twm、fvwm 和 fvwm2,最后发展成为桌面,例如 KDE 和 GNOME。
桌面提供了一致的用户体验,但是也会消耗相当多的 CPU 和内存资源。在计算机具有了可以支持 KDE 和 GNOME 等桌面的处理能力之前,窗口管理器已经变得非常流行了,现在有很多用户还由于它们的轻巧和响应快速而对它们非常青睐。
如果已经安装了 X,并输入命令 startx,然后就会看到一个如图 5 所示的显示界面。
Y4sLinux联盟
图 5. 使用 startx 运行 twmY4sLinux联盟
Y4sLinux联盟
图 5 中显示的是 twm 窗口管理器,同时还有在背景上按鼠标的按钮 1(对于右手的用户来说通常是左键)所显示的菜单。您会注意到有 3 个终端窗口以及一个模拟时钟,但是没有任务条、启动器或其他桌面工具。
startx 命令实际上是 xinit 命令的一个前端,它负责启动 X 服务器进程和一些客户机应用程序。它实际上位于 /usr/X11R6/bin 目录中,就像 xinit 和很多其他 X 工具一样。X 应用程序可以从 X 资源数据库和命令行中获取设置。表 6 对 startx 或 xinit 使用的每个配置文件的名字和目的进行了总结。注意,在特定的系统中或用户主目录中某些文件可能并不存在。
表 6. startx 和 xinit 使用的配置文件 |
文件 | 说明 |
$HOME/.xinitrc | 用户定义的可执行脚本,它可以合并资源文件,并启动客户机应用程序 |
$HOME/.xserverrc | 用户定义的可执行脚本,它可以覆盖缺省的 X 服务器配置 |
/usr/X11R6/lib/X11/xinit/xinitrc | 系统缺省的可执行脚本,它可以合并资源文件,并启动客户机应用程序 |
/usr/X11R6/lib/X11/xinit/xserverrc | 系统缺省的可执行脚本,它可以覆盖缺省的 X 服务器配置 |
$HOME/.Xresources | 用户定义的用来为 X 应用程序描述资源的文件 |
$HOME/.Xmodmap | 用户定义的用来定义键盘和鼠标设置的文件 |
/usr/X11R6/lib/X11/xinit/.Xresources | 系统缺省的用来为 X 应用程序描述资源的文件 |
/usr/X11R6/lib/X11/xinit/.Xmodmap | 系统缺省的用来定义键盘和鼠标设置的文件 |
要特别注意系统的 xinitrc 和 xserverrc 文件没有前面的点号,而所有其他文件都有这个前面的点号。
屏幕上的每个窗口(实际上屏幕上的每个控件)都有自己的属性,例如高度、宽度、位置(几何位置),前景/背景颜色或图像、标题文本和颜色。对于新的客户机应用程序来说,大部分值都可以在命令行中提供。由于这些属性很多,因此设置缺省值会很方便。这些缺省值都保存在一个资源数据库(resource database) 中,它是使用 xrdb 命令从资源文件构建出来的。
清单 19 给出了 XFree86 4.5.0 所提供的缺省 xinit 文件。
Y4sLinux联盟
清单 19. 样例 xinit 文件 —— /usr/X11R6/lib/X11/xinit/xinitrc
#!/bin/sh
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# start some nice programs
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login
|
注意,xrdb 命令用来合并这些资源,xmodmap 用来更新键盘和鼠标的定义。最后,还会在后台启动几个程序,并使用 exec 命令在前台启动一个最终的程序,它会结束当前的脚本(xinitrc)并将控制权转交给几何位置为 80x66+0+0 的 xterm 窗口,当关闭 X 服务器时,就结束这个窗口。系统中必须存在这样一个应用程序,不过有些人可能会希望让窗口管理器(在本例中是 twm)来承担这个角色。所有其他应用程序都应该在后台启动,这样这个脚本就可以完成并退出了。
几何位置定义的前两个值定义了窗口的大小。对于一个时钟来说,这是以像素表示的;而对于 xterm 窗口来说,这是使用行和列来表示的。如果后面还有两个值,这两个值就定义了窗口的位置。如果第一个值是正数,那么这个窗口就是相对于屏幕的左边来放置的;如果第一个值是负数,那么就相对于屏幕的右边来放置这个窗口。类似地,第二个值为正数和负数分别表示窗口的位置是相对于屏幕的顶部和底部的。
假设希望时钟更大,具有不同的颜色,并且放到屏幕的右下角而不是右上角。如果只希望一个用户采用这种设置,可以将上面这个文件拷贝到用户主目录中保存成 .xinitrc(记住点号)并按照清单 20 所示来编辑这个时钟定义。在 X 安装目录树中的 rgb.txt(例如 /usr/X11R6/lib/X11/rgb.txt)文件中可以找到所有的颜色名。
Y4sLinux联盟
清单 20. 在 xinitrc 中修改 xclock 的启动
xclock -background mistyrose -geometry 100x100-1-1 &
|
如果希望更新整个安装的缺省设置,就应该更新 /usr/X11R6/lib/X11/xinit/.Xresources 和 /usr/X11R6/lib/X11/xinit/.Xmodmap 文件,而不是每个用户使用的带点号的文件。
有几个工具可以帮助定制窗口和击键。Y4sLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论