[ 上一篇 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ A ] [ B ] [ C ] [ D ] [ 下一篇 ]


Debian 教程 (已过时文档)
第 10 章 - X 窗口系统


本章介绍 X 窗口系统图形用户界面。它假设您已经按照安装手册中的描述成功配置了 X(同样,安装手册尚未编写完成;目前您需要使用 XFree86 HOWTO,/usr/doc/X11 的内容,以及本章)。一旦您安装了 X,您可以通过键入 startx 或通过 xdm 进入 X 环境,具体取决于您在配置期间的选择。


10.1 启动 X 环境

有两种启动 X 的方法。第一种是在您想使用 X 时手动启动它。为此,登录到文本控制台之一,然后键入 startx。这将启动 X 并将您切换到其虚拟控制台。

使用 X 的第二种(也是推荐的)方法是使用 xdm,即 X 显示管理器。基本上,xdm 在 X 虚拟控制台(可能是 VC 7)上为您提供一个漂亮的图形登录提示,您可以在那里登录。

默认情况下,这两种方法都会启动一个 xterm,这是一个包含 shell 提示符的小窗口。在 shell 提示符下,您可以像在文本 VC 上一样键入任何命令。因此,您可以使用 xterm 遵循本教程中的所有示例;xterm 和文本控制台之间的唯一区别是您不必登录到 xterm,因为您已经登录到 X。

还有很多事情您只能在 X 中完成,本章将介绍这些内容。

注意:默认的 xterm 字体较小。如果您的显示器较小或分辨率非常高或视力不佳,您可能需要修复此问题。请按照以下步骤操作

  1. 将鼠标指针移动到 xterm 窗口的中心。

  1. 同时按住 Control 键和鼠标右键。这将为您提供一个字体菜单。

  1. 指向您想要的字体并释放鼠标按钮。


10.2 简介:什么是 X

GUI(图形用户界面)是 Windows 或 Mac 操作系统不可或缺的一部分。基本上不可能为这些系统编写不使用 GUI 的应用程序,并且这些系统无法从命令行有效地使用。GNU/Linux 更模块化,也就是说,它由许多小的、独立的组件组成,这些组件可以根据一个人的需要和偏好来使用或不使用。其中一个组件是 X 窗口系统,或简称为 X[14]。

X 本身是程序与您的鼠标和显卡对话的一种方式,而无需知道您拥有哪种鼠标和显卡。也就是说,它是图形硬件的抽象。用户应用程序以 X 的语言与 X 对话;然后 X 将其转换为您的特定硬件的语言。这意味着程序只需编写一次,它们就可以在每个人的计算机上工作。

在 X 术语中,与硬件对话的程序称为 X 服务器。请求 X 服务器在屏幕上显示窗口或图形的用户应用程序称为 X 客户端。X 服务器包括一个视频驱动程序,因此您必须有一个与您的显卡匹配的 X 服务器。

X 服务器不提供人们可能期望从 GUI 获得的任何功能,例如调整窗口大小和重新排列窗口。一个特殊的 X 客户端,称为窗口管理器,为窗口绘制边框和标题栏,调整窗口大小和排列窗口,并提供从菜单启动其他 X 客户端的功能。特定的窗口管理器可能具有其他功能。

Debian 系统上可用的窗口管理器包括 fvwmfvwm2icewmafterstepolvwmwmakermwmtwmenlightenment 等。您可能需要尝试所有这些窗口管理器,并选择您最喜欢的。(有关窗口管理器以及其他有关 X 的有趣信息,X11.org 是一个不错的网站。)

X 服务器和窗口管理器都不提供文件管理器;也就是说,没有任何包含文件和目录图标的窗口。您可以启动文件管理器作为单独的应用程序;有很多文件管理器可用,但不幸的是,目前还没有任何好的基于图标的文件管理器。但是,GNOME 桌面项目正在开发基于图标的文件管理器和其他 GUI 功能。有关此方面的最新消息,请参阅 GNOME 项目主页

X 的最后一个功能是它的网络透明性,这意味着 X 客户端不关心它们是与同一台机器上的 X 服务器对话,还是与网络上的某个地方的 X 服务器对话。实际上,这意味着您可以在功能更强大的远程机器上运行程序,但将其显示在您的桌面计算机上。


10.3 X 基本操作


10.3.1 鼠标

X 中的鼠标工作方式与其他系统上的鼠标非常相似,只是它有三个按钮。如果您的鼠标只有两个按钮,您可以通过同时单击两个按钮来模拟第三个(中间)按钮。这有点棘手且令人讨厌,因此投资购买一个 15 美元的 3 按钮鼠标可能不是一个坏主意。这些鼠标可以从任何电脑零售商处购买到。

按钮从左到右编号,假设您使用的是右手鼠标,因此按钮一在左侧,按钮二在中间,按钮三在右侧。您可能会在文档中看到数字或位置。

X 具有一个简单的内置复制和粘贴功能。要选择要复制的文本,您可以使用鼠标左键单击并拖动。这应该会选择要复制的文本,前提是您正在使用的应用程序具有复制和粘贴支持。要粘贴文本,您可以在不同的 X 应用程序中单击鼠标中键。例如,如果您收到一封包含 URL 的电子邮件,您可以使用左键选择 URL,然后在中键单击 Web 浏览器的“位置”字段以将其粘贴到其中。


10.3.2 X 客户端

与 X 服务器通信的程序称为 X 客户端。这些程序中的大多数将请求 X 服务器在屏幕上显示窗口。

您启动 X 客户端的方式与启动任何其他 Debian 程序的方式相同。只需在命令行中键入客户端的名称即可。尝试在现有的 xterm 中键入 xterm,屏幕上将出现一个新的 xterm 客户端。

您可能会注意到,原始的 xterm 现在没有用处了,因为您的 shell 正在等待第二个 xterm 完成。为了避免这个问题,您可以让 X 客户端在后台运行 --- 在命令名称后添加 &,如下所示:xterm &。如果您忘记了,您可以将正在运行的进程置于后台。首先使用 C-z 挂起进程,然后使用 bg 命令将其置于后台。

如果您经常使用某个程序,您的窗口管理器通常会提供一种方法将该程序放在方便的图形菜单上。


10.3.3 故障排除

有时,当您从图形菜单启动 X 客户端时,如果它失败,您将无法看到任何错误消息。您可以在文件 ~/.xsession-errors 中找到任何错误消息。


10.3.4 离开 X 环境

要离开 X,您需要使用菜单。不幸的是,对于初学者来说,每个窗口管理器都不同,并且对于大多数窗口管理器,可以通过多种方式进行配置。如果有明显的菜单,请查找类似“退出”或“关闭窗口管理器”的条目。如果您没有看到菜单,请尝试单击屏幕背景上的每个鼠标按钮。如果所有方法都失败,您可以通过按 C-A-Backspace 强制终止 X 服务器。强制终止服务器将销毁打开的应用程序中任何未保存的数据。


10.4 自定义您的 X 启动

当您启动 X 时,Debian 将运行一些 shell 脚本,这些脚本会启动您的窗口管理器和其他 X 客户端。默认情况下,将为您启动一个窗口管理器、一个 xconsole 和一个 xterm

要自定义您的 X 启动,文件 /etc/X11/config 必须包含行 allow-user-xsession。如果它不包含,请成为 root 用户并立即添加该行。然后以您自己的身份重新登录并继续教程。[15]

要在 X 启动时运行您选择的客户端,请在您的主目录中创建一个名为 .xsession 的可执行 shell 脚本。

  1. touch ~/.xsession

    这将创建文件。

  1. chmod u+x ~/.xsession

    使文件可执行。

一旦创建了 .xsession,您需要使用您最喜欢的文本编辑器编辑它以执行一些有用的操作。您可以在此脚本中执行任何您想执行的操作。但是,当脚本的进程终止时,X 也会终止。

实际上,这意味着您通常以调用 exec 结束脚本。您 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,并且 .xsession 将在 fvwm 执行后退出。使用 exec 稍微好一点,因为 fvwm 替换了 .xsession 而不是让它等待。您可以使用 pstop 命令来验证这一点。

一个更有用的 .xsession 在启动窗口管理器之前运行一些客户端。例如,您可能希望在每次启动 X 时都启动一些 xterm 和一个 xclock。没问题

     xterm &
     xterm &
     xclock &
     exec fvwm

两个 xterm 和一个 xclock 在后台启动,然后启动窗口管理器。当您退出窗口管理器时,您也将退出 X。

您可以尝试在不进行后台处理的情况下执行此操作,看看会发生什么。这样做

     xterm
     xclock
     exec fvwm

xterm 将启动,并等待您退出它。然后 xclock 将启动;您必须退出 xclock 才能启动 fvwm。命令按顺序运行,因为脚本等待每个命令退出。

您可以利用顺序执行的优势。也许您想跟踪您每天停止工作的时间

     xterm &
     xclock &
     fvwm
     date >> ~/logout-time

这将 fork 出一个 xterm 和一个 xclock,然后运行 fvwm 并等待它完成。当您退出 fvwm 时,它将移动到最后一行,该行将当前日期和时间附加到文件 ~/logout-time

最后,您可以让窗口管理器以外的程序决定 X 何时退出

     xclock &
     fvwm &
     exec xterm

此脚本将在后台运行 xclock 和 fvwm,然后用 xterm 替换自身。当您退出 xterm 时,您的 X 会话将结束。

学习如何使用 .xsession 的最佳方法是尝试其中一些操作。再次强调,请务必使用 chmod 使其可执行 --- 这是一个常见的错误。


[ 上一篇 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ A ] [ B ] [ C ] [ D ] [ 下一篇 ]


Debian 教程 (已过时文档)

2009 年 12 月 29 日

Havoc Pennington hp@debian.org