Linux 烹饪指南 - 桌面永不嫌多!

作者:Marcel Gagné

啊,François,我看到你决定运行 Window Maker 了——太棒了。这是一个很棒的窗口管理器,我想你会喜欢的。两周前,你还在运行 GNOME;上周是 KDE,现在又是 Window Maker。我很高兴你听取了我的建议,决定尝试其他桌面窗口管理器。毕竟,选择是运行 Linux 的一大乐趣。

Quoi?(什么?) 你问我正在运行哪个? 所有这些以及另外六个,mon ami(我的朋友)。François,我不是在开玩笑。我的主桌面是 KDE,但这边我运行着 GNOME,那边是 XFCE,而在那个虚拟桌面中,我运行着 Window Maker。此外,我在 Window Maker 会话中还运行着 IceWM。不,mon ami(我的朋友),这根本不复杂,等我们的客人到了我就告诉你它是怎么做到的。但是他们已经到了!François!Vite!(快点!) 去酒窖。考虑到今天的菜单甜点多于正餐,去拿 2001 年尼亚加拉半岛雷司令冰酒,tout de suite(立刻)带回来!

欢迎,mes amis(我的朋友们),来到 Chez Marcel(马塞尔之家)。请坐下,随意一点。我一直在鼓励我忠实的侍者尝试不同的桌面。尝试一些不同的东西总是好的,这就是我们时不时更换菜单的原因,non?(不是吗?) 你的桌面环境也是如此。KDE 或 GNOME 可能是你最喜欢的,但为什么不尝试一下 Window Maker、IceWM 或 XFCE 来换换口味呢?访问一下 Matt Chapman 的 Window Managers for X 网站:www.plig.org/xwinman,应该可以激起你对其他窗口管理器的兴趣。事实上,为什么不在你仍然运行着你最喜欢的桌面时尝试一下它们呢?Non, mes amis(不,我的朋友们),我没有过量饮用葡萄酒。同时运行多个桌面是可能的,而且一旦你掌握了窍门,就会觉得非常有趣。

正如开源世界中的许多事情一样,肯定不止一种方法可以做到这一点。第一种方法是跳出你当前的 X 会话,回到你的一个虚拟终端。如果你已经在运行 X 会话,请按 Ctrl-Alt-F1,你应该会回到文本屏幕。顺便说一句,F1 很容易也可以是 F2、F3、F4、F5 或 F6。如果你是从命令行启动 X 的(而不是使用像 gdm 或 kdm 这样的登录管理器),当你按下 Ctrl-Alt-F1 时,你应该会看到会话的对话框,屏幕上显示 X 的日志输出。任何其他功能键 F2-F6 都应该为你提供一个基于文本的登录屏幕。只需按 Ctrl-Alt-F2 进入虚拟终端二,依此类推。

你的图形会话仍然处于活动状态。它默认在系统称为 display :0 的显示器上运行,你可以通过键入以下命令来验证echo $DISPLAY在 shell 提示符下(当然是在你的图形会话中)。你应该看到你的 PC 的主机名带有显示后缀。按 Ctrl-Alt-F7 返回到你的 KDE、GNOME 或任何会话。去尝试一下,然后回到文本屏幕(Ctrl-Alt-F?)。那么,你的 X 会话在虚拟终端七上。从文本屏幕,以你自己的身份登录并键入以下内容

xinit /usr/X11R6/bin/xterm -- :1

注意-- :1在这行末尾。因为 X 已经在 display :0 上运行,我们需要在备用显示器上运行这个 X 终端,在本例中是 :1。现在一个新的 X 会话开始了,这个会话在虚拟终端八上运行。它看起来很无聊,因为你所拥有的只是一个在灰色背景上运行的简单 X 终端。没有什么可看的,甚至没有任何方法可以移动 X 终端窗口,但是你可以执行命令,甚至启动其他 X 程序,你也无法移动这些程序。要从你的新会话转到旧会话,请按 Ctrl-Alt-F7,然后按 Ctrl-Alt-F8 返回到你的 X 终端。很简单,non?(不是吗?) 使用这种技术,你可以启动一些更有趣的东西,比如另一个窗口管理器,例如 IceWM 或 XFCE,并愉快地在一个虚拟 X 会话和另一个会话之间来回切换。

Cooking with Linux - Can't Get Enough Desktops!

图 1. 有点乏味和空旷的 X 显示,带有一个 X 终端

要退出该 X 会话,你应该了解经典的 X 窗口逃生舱口,我称之为 “oh, mon Dieu(我的天啊),我已经尝试了一切,但我无法退出 X” 的逃生条款。只需按 Ctrl-Alt-Backspace。这,mes amis(我的朋友们),是一种相当粗鲁的退出 X 的方式,只应在没有其他选项可用时使用。

从一个 X 会话切换到另一个 X 会话是可以的,但是这样做很难继续在两个桌面上工作。为了避免不断来回切换,我一直在运行一个名为 Xnest 的程序。Xnest 是 XFree86 发行版的一部分,很有趣,因为它既是 X 客户端又是服务器。它实际上是一个嵌套的 X 服务器。在继续之前,我可能应该告诉你,虽然它是 X 的一部分,但它可能尚未安装在你的系统上;但是,该软件包 (XFree86-Xnest) 很可能在你的发行版 CD 上。

为了启动嵌套服务器,你必须提供一个备用的 DISPLAY 变量,就像我们之前对 X 终端所做的那样。因为你自己的 X 服务器可能作为 :0 运行,所以选择 :1。为了确保你可以从你的任何应用程序连接到这个新服务器,也请使用 -ac 选项。此选项禁用访问控制。& 符号将我的新服务器作为后台进程启动

Xnest :1 -ac &

现在,桌面上出现一个空白窗口,中心是基本的 X 光标。在我的 Mandrake 系统上,它是一个深蓝色正方形。在另一个运行 Red Hat 的服务器上,它是黑色的。它看起来不太起眼,所以让我们在新服务器上启动一个 X 应用程序。我们从一些简单的东西开始,比如我们久经考验的 Xclock

xclock -display :1

当你按下 Enter 键时,经典的 Xclock 会出现在你的第二个 X 服务器窗口中。这也是玩弄 X 资源的好方法。例如,让我们装饰一下那个相当无聊的时钟,并将其移动到显示器的另一个部分

xclock -foreground "Red" \
-geometry +450+250 -display :1
Cooking with Linux - Can't Get Enough Desktops!

图 2. 填充你的嵌套 X 服务器

你可以一个接一个地用应用程序填充这个新服务器——这里的 X 标志和那里的 Eterm。当然,在这种环境中移动窗口是不可能的,因此这个想法只能说是有一定的用处。要真正体验桌面狂热的味道,你需要整个自助餐,这意味着一个窗口管理器,当然,还有更多的葡萄酒来搭配它。

启动一个功能齐全的窗口管理器是一个类似的过程,对于下一步,我们从基本的 Tabbed Window Manager (TWM) 开始。这是你拥有的最基本的窗口管理器,并且是 XFree86 的一部分。首先关闭你的 Xnest 中的应用程序,以便你可以从头开始。你应该看到那个空白的正方形,中心是 X 光标。现在,从命令行键入

twm -display :1

如果没有任何变化,请按下鼠标左键,TWM 的菜单应该会出现。我说过这是一个基本的窗口管理器,non?(不是吗?) 让我们这次尝试运行 Window Maker

wmaker -display :1

正如你所看到的,格式基本上是相同的,在每种情况下都将 -display 参数传递给窗口管理器的命令名称。当然,我应该在这里告诉你,并非每个窗口管理器都使用相同的开关。以下是一些更流行的窗口管理器的列表以及启动它们所需的命令

  • Motif 窗口管理器mwm -display :1

  • F 虚拟窗口管理器fvwm2 -display :1

  • GNOME (注意双连字符)gnome-session --display :1

  • AfterStepafterstep -d :1

在某些情况下,你将无法使用某种显示重定向开关来启动窗口管理器。KDE、AmiWM、XFCE 和其他一些窗口管理器就是这种情况。要运行这些窗口管理器,请首先在你的嵌套 X 服务器中启动一个简单的 X 终端

xterm -display :1

从该命令行,只需键入其命令名称即可启动你的窗口管理器或桌面,例如xfce4-session适用于 XFCE,amiwm适用于 AmiWM,等等。

在你以这种方式玩过几个窗口管理器之后,你可能会发现自己面临一些障碍。有时,在这样做时,我遇到了一个消息(特别是来自 GNOME 的消息),表明它无法启动,具体来说是gnome-session: 你已经在运行会话管理器。因为我知道情况并非如此,所以我检查了 SESSION_MANAGER 指向的位置

$ echo $SESSION_MANAGER
local/ultraman:/tmp/.ICE-unix/3132

正如你所看到的,我从之前运行嵌套窗口管理器遗留了一些会话信息。一种选择是取消设置 SESSION_MANAGER 变量。另一种选择是简单地删除这些有问题的的文件,当然,前提是你不再运行你的窗口管理器

$ rm /tmp/.ICE-unix/3132
rm: remove socket `/tmp/.ICE-unix/3132'? y

看来,mes amis(我的朋友们),闭店时间正在迅速逼近,所以现在是 la pièce de résistance(压轴大戏)——你的桌面甜点,如果你愿意的话。你们中的一些人可能会问,“如果我可以运行一个嵌套服务器,为什么不运行两个或三个呢?” 启动第二个嵌套服务器只是分配一个不同的显示编号的问题。对于第二个,键入Xnest -ac :2或者Xnest -ac :3对于第三个,依此类推。事实上,你可以在另一个 Xnest 内部运行一个 Xnest。图 3 显示了一个 IceWM 会话运行在 GNOME 会话内部,GNOME 会话运行在 KDE 会话内部。

Cooking with Linux - Can't Get Enough Desktops!

图 3. 嵌套在 GNOME 内部的 IceWM,嵌套在 KDE 内部

正如你所看到的,mes amis(我的朋友们),这里有足够的东西来满足你们中最伟大的桌面美食家,non?(不是吗?) 正如罗伯特·海因莱因可能说过的那样,“要享受生活的全部风味,就要大口咀嚼”,或者在这种情况下,运行许多不同的窗口管理器和许多桌面。

现在,闭店时间真的到了,但请多花一点时间探索。François 会在你离开之前最后一次为你续杯。直到下次,mes amis(我的朋友们),让我们为彼此的健康干杯。A vôtre santé! Bon appétit!(祝您健康!祝您好胃口!)

资源

X 的窗口管理器:www.plig.org/xwinman

XFree86 网站:www.xfree86.org

Marcel 的网站(查看葡萄酒页面):www.marcelgagne.com

Marcel Gagné (mggagne@salmar.com) 居住在安大略省密西沙加市。他是新出版的 Moving to Linux: Kiss the Blue Screen of Death Goodbye! (ISBN 0-321-15998-5) 的作者,该书由 Addison Wesley 出版。他的第一本书是广受好评的 Linux System Administration: A User's Guide (ISBN 0-201-71934-7)。在现实生活中,他是系统集成和网络咨询公司 Salmar Consulting, Inc. 的总裁。

加载 Disqus 评论