Subsections

3 基本的 X 操作

您应该熟悉一些在 X 下的常用操作。该部分介绍了一些您可能发现有用的基本操作。

1 鼠标

X 下的鼠标的使用与在其它系统中是非常相似的,例外的是它要用到鼠标的三个按键。如果您的鼠标只有两个按键,您可以使用同时按下两个键来模拟中间键的效果。这需要点技巧,也有点麻烦,所以投资买一个 15 美元的三键鼠标可能不算一个坏主意。这些鼠标绝大多数计算机零售商那儿都有得卖。

假定您用右手使用鼠标,按键即按照从左到右的顺序进行编号。因此按键一指的是左边的按键,按键二指的是中间的按键,而按键三即指的是右边的按键。您可能会在文档中看到编号或者位置标识。

X 带有简单的内置的复制-粘贴功能。要选择文本进行复制,您可以用鼠标左键点击并拖曳。假定您所使用的应用程序具有复制-粘贴的功能支持,那么这样应该可以选定复制的文本。要粘贴该文本,您可以在一个不同的 X 应用程序下点击一下鼠标中间键。例如,如果您接收到一封包括一个 URL 的 e-mail,您可以用左键选中该 URL,然后在您的万维网浏览器的“位置”域中用中间键点击来进行粘贴。

2 X 客户程序

与 X 服务器进行通讯的程序称为 X 客户程序。大多数这类程序都会要求 X 服务器在屏幕上显示窗口。

您启动 X 客户程序的方式与启动任何其它 Debian 程序的方式一样。需在命令行中输入客户程序的名字即可。试着在一个已有的 xterm 窗口中输入 xterm,接着一个新的 xterm 客户程序就会出现在屏幕上。

您可能注意到原 xterm 现在已经无法使用了,这是因为您的 shell 在等待第二个 xterm 的完成。为了避免此种问题,您可以通过在命令名后添加 & 来后台运行 X 客户程序,就像这样:xterm &。如果您忘记这样做了,您可以把一个在运行的进程放到后台去。首先使用 CTRL-z 挂起进程,然后使用 bg 命令把它放到后台去。

如果您经常使用一个程序,您的窗口管理器通常会提供一种方法把该程序放到一个方便快捷的图形化菜单中。


3 发现问题

有时当您从一个图形化的菜单中启动一个 X 客户程序的时候,如果失败了,那么您不能看到任何错误消息。您可以在文件 ~/.xsession-errors 中找到它们。

4 离开 X 环境

要离开 X,您需要用到一个菜单。不幸的是,对于新手来说,每个窗口管理器的情况都各有不同,而且针对于大多数窗口管理器,这可以使用许多种方式来进行配置。如果有一个明显的菜单,那么可以查看一个类似于 ``Exit'' 或者 ``Close Window Manager'' 的条目。如果您不能找到一个菜单,试着在屏幕背景上点击一下每个鼠标按键。如果所有这些都失败了,您可以通过按下 CTRL-ALT-Backspace 来强制杀死 X 服务器。强制杀死服务器会破坏在打开的应用程序中尚未保存的数据。

5 定制您的 X 启动方式

当您启动 X 时,Debian 运行一些 shell 脚本来启动您的窗口管理器和其它 X 客户程序。默认地,会为您启动一个窗口管理器,一个 xconsole 和一个 xterm

要定制您的 X 启动方式,那么文件 /etc/X11/config 必须包括行 allow-user-xsession。如果没有此项,登录为 root 并添加此行。然后登录返回为您自己,继续往下看。

您可以看到在文件 /etc/X11/Xsession 中 Debian 的 X 启动是怎么工作的。注意您可以通过修改文件 /etc/X11/config 来修改 /etc/X11/Xsession 的行为,它提供了一些系统级的参数选择。

要在 X 启动时运行您所选择的客户程序,您可以在您的 home 目录下创建一个可执行的 shell 脚本 .xsession

touch ~/.xsession
这样就创建了文件。

chmod u+x ~/.xsession
这样使得文件成为可执行的。

一旦创建了 .xsession,您就需要使用您心爱的文本编辑器来编辑它以完成一些有用的工作。您可以在该脚本中做您所想做的任何事。但是,当脚本的进程中断了,那么 X 也会中断。

在实际应用中,您通常需要使用一个对 exec 的调用来终结脚本。无论您 exec 的是什么程序,它都将覆盖脚本的进程,这样在 exec 行后面的命令都将被忽略。您执行的程序将成为该脚本进程的新的所有者,这意味着 X 会在新程序的进程中断时中断。

假定您使用行 exec fvwm 来终结 .xsession。这表示当 X 启动时会运行 fvwm 窗口管理器。当您退出 fvwm 窗口管理器时,您的 X 会话进程也将结束,而且所有其它客户程序都将关闭。您不需要一定在这里使用一个窗口管理器;您也可以 exec xterm,在这种情况下,在特定的 xterm 中输入 exit 就会导致整个 X 会话进程的结束。

如果您想要在使用 exec 之前运行其它客户程序,那么您就需要在后台运行它们。否则,.xsession 将直到每个客户程序退出,才继续下一行的执行。参看前面的关于在后台运行作业的章节(一般您会想放一个 & 标识符在末尾,如 xterm &)。

不过,您可以充分利用这种行为。如果您想在 X 会话进程的结尾运行命令,那么您可以使您的 .xsession 运行一个窗口管理器或类似的程序,并等待其完成。也就是说,不要使用 exec&;只输入 fvwm。然后把您选择的命令置于 fvwm 之后。

看看一些示例的 .xsession 文件可能会有些帮助。在所有的例子中,可以使用您选择的窗口管理器来替换其中的 fvwm

最简单的 .xsession 只运行一个窗口管理器:

exec fvwm
这将运行 fvwm,而当 fvwm 退出时,X 会话进程也就结束了。如果您不使用 exec,所有的执行看上去都一样,但是 .xsession 会暂时挂起等待 fvwm,并且在 fvwm 完成后才退出。使用 exec 会要好一些,因为 fvwm 替换了 .xsession 而不需要它进行等待。您可以使用 ps 或者 top 命令来验证此。

一个更为实用的 .xsession 会在启动窗口管理器之前运行一些客户程序。例如,您可能想要每当启动 X 时,运行一些 xterm 和一个 xclock。没问题;只需输入 xterm & xterm & xclock & exec fvwm 即可。两个 xterm 和一个 xclock 在后台启动,然后是窗口管理器的启动。当您退出窗口管理器时,您也将退出 X。

您可能想尝试一下不在后台运行,以看看会有什么情况发生。输入命令:xterm; xclock; exec fvwmxterm 将会启动,并且等待您退出它。然后 xclock 启动;您在 fvwm 启动之前不得不退出 xclock。命令是顺序执行的,因为脚本在等待每个程序的退出。

您可以按您的需要使用顺序的执行方式。可能您想查查每天您什么时候停止工作。

xterm &

xclock &

fvwm 

date >> ~/logout-time

这将并行在后台运行一个 xterm 和一个 xclock,然后运行 fvwm 并等待其完成。当您退出 fvwm 时,它会执行最后一行,这行把当前的日期和时间添加到文件 ~/logout-time 中。

最后,您可以使用一个不使用窗口管理器来决定何时 X 退出的程序:

xclock &

fvwm &

exec xterm

该脚本会在后台运行 xclockfvwm,然或使用 xterm 替换它自己。当您退出 xterm 时,您的 X 会话进程即结束。

最好的学习怎样使用 .xsession 的方法即是尝试一些情况的结果。另外,确保您使用了 chmod 来使之可执行;忘记执行此步骤是经常犯的错误。


John Goerzen / Ossama Othman / Debian 中文计划