7.5. 启动 X 窗口系统

X 窗口系统通常是作为 X 会话启动的,X 会话是 由 X 服务器和连接客户端组成的。对于常规的桌面系统,它们两个都是在一个工作站上运行的。

X 会话 由以下方式之一启动。

  • 从命令行用 startx 命令启动

  • 基于”graphical.target“的依赖关系,一个 X 图形显示管理器 的后台守护程序*dm 通过 systemd 启动。

[提示]提示

显示管理器后台守护进程(daemon)的启动脚本在实际执行它们自己时会检查 “/etc/X11/default-display-manager” 文件的内容。这可以确保只有一个 X 显示管理器 后台守护进程(daemon)程序被激活。

[提示]提示

关于 X 显示管理器的初始环境变量,参见 第 8.4.5 节 “只用于 X 窗口的特定语言环境”

本质上,所有的这些程序都是执行 “/etc/X11/Xsession” 脚本。之后 “/etc/X11/Xsession” 脚本通过 run-parts(8) 执行 “/etc/X11/Xsession.d/” 目录中的脚本。这本质上是通过 内建的 exec 命令执行按下面顺序第一个被找到的程序。

  1. X显示管理器调用”/etc/X11/Xsession“ 的参数中指定的脚本, 如果他被定义了。

  2. ~/.xsession” 或 “~/.Xsession” 脚本,如果它被定义。

  3. /usr/bin/x-session-manager” 命令,如果它被定义。

  4. /usr/bin/x-window-manager” 命令,如果它被定义。

  5. /usr/bin/x-terminal-emulator” 命令,如果它被定义。

这个过程会受 “/etc/X11/Xsession.options” 的影响。“/usr/bin/x-*” 命令所指向的准确程序,是由 Debian 选择系统决定的,并且可以通过 “update-alternatives --config x-session-manager” 修改。

细节参见 Xsession(5).

7.5.1. 使用 gdm3 启动 X 会话

gdm3(1) 让你从它的菜单中选择会话类型(或桌面环境:第 7.2 节 “设置桌面环境”),还有 X 会话的语言(或语言环境:第 8.4 节 “语言环境”) 。它在 “~/.dmrc” 中像下面那样设定选择的默认值。

  1. [Desktop]
  2. Session=default
  3. Language=ja_JP.UTF-8

7.5.2. 自定义 X 会话(经典方式)

系统中的 “/etc/X11/Xsession.options” 包含没有前置 “#” 字符的 “allow-user-xsession” 行,则定义了 “~/.xsession” 或 “~/.Xsession” 的任何用户都能够通过完全覆盖系统代码来自定义 “/etc/X11/Xsession” 的动作。在 “~/.xsession” 文件中的最后一个命令应该使用 “exec some-window/session-manager” 这样的形式来启动你最喜欢的 X 窗口/会话管理器。

如果使用了这个特性,系统实用程序选择的显示 (或登录) 管理器 (DM), 会话管理器或者窗口管理器 (WM) 会被忽略。

7.5.3. 自定义 X 会话(新方式)

以下是自定义 X 会话的新方式,它不会像上面那样完全覆盖系统代码。

  • 显示管理器 gdm3 可以选择一个特定的会话并将它设置为 “/etc/X11/Xsession” 的参数。

    • /etc/profile“, “~/.profile“, “/etc/xprofile“, 和 “~/.xprofile“ 文件会被作为 gdm3 启动进程的一部分来执行。
  • ~/.xsessionrc” 文件作为启动进程的一部分被执行。(独立桌面)

    • /etc/X11/Xsession.options“ 中的 “#allow-user-xsession“ 不会限制 “~/.xsessionrc“ 文件的执行。
  • ~/.gnomerc” 文件作为启动进程的一部分被执行。(仅 GNOME 桌面)

系统实用程序选择的显示 (或登录) 管理器 (DM), 会话管理器或者窗口管理器 (WM) 是相当不错的。

在这些配置文件里面,不应当有 “exec …“ 或 “exit“.

7.5.4. 通过 SSH 连接一个远程 X 客户端

使用 “ssh -X” 可以启用一个来自本地 X 服务器到远程应用程序服务器的安全连接。

如果你想避免命令行选项 “-X”,你需要将远程主机的 “/etc/ssh/sshd_config” 文件中的 “X11Forwarding” 设置为 “yes”。

在本地主机上启动 X 服务器。

在本地主机中打开一个 xterm

通过下列命令,运行 ssh(1) 建立与远程站点的连接。

  1. localname @ localhost $ ssh -q -X loginname@remotehost.domain
  2. Password:

通过下列命令,在远程站点运行一个 X 应用程序,例如 “gimp”。

  1. loginname @ remotehost $ gimp &

这个方法可以显示来自远程 X 客户端的输出,相当于它是通过一个本地 UNIX 域名 socket 进行本地的连接。

7.5.5. 连接互联网的安全 X 终端

连接互联网的 X 安全终端,并且会显示在远程运行的整个 X 桌面环境,这可以通过使用特定软件包(例如 ldm)轻松地做到。通过 SSH,你的本地机器会变成连接到远程应用程序服务器的一个安全瘦客户端。