7. X 窗口系统和命令行

如果类 Unix 操作系统没有命令行界面会是什么样子?命令行非常有用,并且在 X 窗口系统中随时可用。事实上,对于许多人来说,它是他们 X 工作环境不可或缺的一部分。

任何 X 程序都可以直接从命令行启动,只需在 xterm 或其他终端窗口的 shell 提示符下键入程序名称即可。大多数应用程序都有一组非常丰富的命令行“选项”,例如背景颜色、字体、几何形状(屏幕位置)等等。命令行选项会覆盖编译时默认值或其他系统启用的“资源”

许多传统的 X 程序将对命令行选项使用相同的基本名称。所有使用 MIT X Toolkit Intrinsics (Xt) 编写的应用程序(例如 XFree86 附带的那些)都会自动接受以下选项。一些非 Xt 应用程序也使用这些选项,或类似的选项。例如,“geometry” 几乎是一个普遍接受的选项。

-display [主机]:显示器[.屏幕]

此选项指定要使用的 X 服务器显示器。这通常用于应用程序在一个系统上运行,并在另一个系统上显示的情况。应用程序需要知道在哪里显示。有时也可以通过设置 "$DISPLAY" 变量来实现,该变量使用相同的语法。

-geometry 几何形状

窗口的初始大小和位置,格式如下宽度 x 高度 +水平偏移量 +垂直偏移量+水平偏移量 -垂直偏移量。请注意,如果您输入负的水平或垂直偏移量,窗口将从屏幕的右侧或底部向后计数放置,而不是从左上角开始。

-font 字体名称

用于在窗口中显示文本的字体(请参阅下面的字体部分)。

-bg 颜色

用于窗口背景的颜色。通常这是一个“颜色名称”(见下文)。

-fg 颜色

用于窗口前景色(即字体等)的颜色。

-name 资源名称

用于指定将在此名称下找到此应用程序的资源(例如,在.Xdefaults)中指定的)。这对于区分同一应用程序的不同调用很有用。例如,可以为两个 xterm “命名”不同的名称,以便它们可以根据资源数据库中指定的名称继承不同的资源。

-title 字符串

这是用于窗口在显示器上的标题,通常由窗口管理器使用,以在窗口顶部放置描述性标题。不要与 “-name” 选项混淆。

-iconic

以图标化状态打开窗口。

-xrm 资源字符串

此选项指定资源名称和值,以覆盖可能已设置的任何默认值(即通过.Xresources或类似的文件)。也适用于设置没有显式命令行选项的 X 资源。例如,命令行 “xterm -xrm xterm*background: blue &” 在功能上与 “xterm -bg blue &” 相同。

这些是最值得注意的。还有其他选项。许多程序将有自己额外的特定于应用程序的选项。如今,许多较新的应用程序不一定遵守 Xt 标准,并且将使用它们自己的选项,或其各自工具包提供的选项。退一步说,man 手册是命令语法的良好参考,并且在这里是您的朋友。或者,应用程序将具有 “--usage”“--help” 命令行开关来列出可用选项

 $ gnome-terminal --usage
 Usage: gnome-terminal [-?] [--disable-sound] [--enable-sound]
   [--espeaker=HOSTNAME:PORT] [--version] [--usage] [--gdk-debug=FLAGS]
   [--gdk-no-debug=FLAGS] [--display=DISPLAY] [--sync] [--no-xshm]
   [--name=NAME] [--class=CLASS] [--gxid_host=HOST] [--gxid_port=PORT]
   [--xim-preedit=STYLE] [--xim-status=STYLE] [--gtk-debug=FLAGS]
   [--gtk-no-debug=FLAGS] [--g-fatal-warnings] [--gtk-module=MODULE]
   [--disable-crash-dialog] [--sm-client-id=ID] [--sm-config-prefix=PREFIX]
   [--sm-disable] [--tclass=TCLASS] [--font=FONT] [--nologin] [--login]
   [--geometry=GEOMETRY] [-e COMMAND] [-x COMMAND] [--foreground=COLOR]
   [--background=COLOR] [--solid] [--pixmap=PIXMAP] [--bgscroll]
   [--bgnoscroll] [--shaded] [--noshaded] [--transparent] [--utmp]
   [--noutmp] [--wtmp] [--nowtmp] [--lastlog] [--nolastlog] [-t TITLE]
   [--icon=ICON] [--termname=TERMNAME] [--start-factory-server]
   [--use-factory]

 

7.1. xterm 和它的朋友们

迟早,我们大多数人出于某种原因需要访问“命令行”。对于某些人来说,这甚至可能是在 X 窗口系统中工作的常用方式。除了能够从命令提示符启动 X 应用程序外,还有大量程序在 Linux 的 “文本模式”下运行。

这可以通过 “终端模拟器”(例如 xterm)来实现。微软最接近的对应物是所谓的 DOS-box,但相比之下,DOS-box 简直是小菜一碟。Linux 终端支持颜色、完整的鼠标复制/粘贴(以及一些滚轮鼠标)、伪透明和像素图背景、滚动条、菜单以及通常大量其他功能。虽然 xterm 是最著名的此类终端模拟器,但还有许多类似的程序。仅举几例:Etermrxvtatermkonsole (KDE) 和 gnome-terminal

在典型用法中,当打开终端模拟器窗口时,会为用户启动一个 shell 以进行交互。几乎所有 Linux 系统的默认 shell 都是 bash shell。因此,当一切都完成时,用户同时与 X 窗口系统、终端和 shell 进行交互。每个都可能有自己的影响。例如,击键如何处理,因为它们从硬件移动到 X 服务器,再到终端,再到 shell,最后回显给用户。

快速简便的终端配置是通过 "$TERM" 变量完成的,该变量通常在用户的 shell 配置文件之一中设置。或者终端本身将具有编译时默认值。此默认值通常为 “xterm”

 $ echo $TERM
 xterm

 

通常这已经足够了,因为您的供应商已经以合理的方式设置了它。"$TERM" 变量实际上是对 “termcap” 数据库(man termcap)中的条目的引用,该数据库通常安装为/etc/termcap。除非您正在做一些非常不寻常的事情,否则您可能不需要更改此设置。可以使用 stty 命令(请参阅 man 手册)完成一些额外的终端配置。终端配置实际上超出了本文档的范围。

终端应用程序本身(例如 xterm)也将具有各种配置选项。永久设置最好存储在~/.Xdefaults或类似的文件中,对于那些支持此功能的应用。一般来说,具有 GUI 配置的应用程序(例如 gnome-terminal)将通过其自己的菜单驱动配置进行配置。

此外,您也在与 shell 交互,这也会产生自己的影响,尤其是在 shell 提示符下如何处理击键方面。对于 bash,这可以在~/.inputrc。同样,这超出了本文档的范围,但请查阅本地或在线的 bash(或其他 shell)参考资料。

xterm 这样的终端模拟器需要等宽字体。因此,请忘记 TrueType 或 Type 1 字体。