艺术家的桌面指南,第 2 部分
这是桌面世界的一个简单事实:艺术家,像所有其他用户一样,想要大量的屏幕空间。 Enlightenment 在他们需要时,并且按照他们的条件,给予了他们。 Enlightenment,通常被称为 E,允许用户比几乎任何其他窗口管理器都更好地控制他们的桌面。Window Maker 和 AfterStep 非常可配置,而 E 则非常具有延展性,弯曲和扭曲以使其用户感到高兴。
今天的窗口管理器共享一些共同点。它们通常允许对标题栏进行某种程度的配置。大多数都有某种形式的页面调度器,允许用户在虚拟桌面之间切换,在某些情况下,还可以在每个桌面内的多个页面之间切换。它们都支持图标,并且大多数都有某种形式的图标框或指定图标应显示在桌面上的方式。所有窗口管理器都有用于访问应用程序和管理整个系统的菜单。
E 将所有这些都更进一步。也许您已经看到了 E 成名的花哨窗口边框。这些是您听过很多次的主题,Windows 世界称之为“皮肤”的个性化。您可能没有看到的是您可以从一个桌面跳转到另一个桌面的各种方式。您可以使用完全可配置的页面调度器(每个桌面一个页面调度器)在任何桌面上的任何页面之间拖动窗口。您还可以像巨大的纸张一样滑动桌面,使顶部的纸张仅部分遮盖下面的纸张。没有其他窗口管理器具有此特殊功能。有些人可能会称之为花哨,但对于像我这样的重度用户来说,以点击方式快速访问您的桌面真是一种乐趣。
在本文中,我将从艺术家的角度来看待 E 的配置和使用——艺术家希望不仅定义自己独特的桌面外观,还希望定义桌面应该如何工作。尽管可以直接在 E 的桌面上完全配置键盘和鼠标绑定,但我将讨论使用默认绑定的配置。我还将使用默认主题,只是为了您不会因我独特的个人世界而感到困惑。
我假设您不害怕从源代码发行版编译和安装。E 是一个强大的系统,但它还很年轻,仍处于早期开发阶段。您可以在大多数最新的 Linux 发行版中找到相当新的 E 版本,尽管您可能需要特别请求安装它。此外,由于 E 还很年轻,并且处于不断更新的状态,如果您计划认真使用 E,您将需要熟悉构建和安装软件。文章“Enlightenment 基础知识”中讨论了获取和安装 E,该文章可以在本月的“严格在线”中找到。
一旦您准备好 E 环境,您就可以配置您的登录帐户以使用它。X 窗口系统可以说是创建过的最可配置的用户环境(仅次于玛莎·斯图尔特的厨房)。在窗口管理器运行后,您可以通过多种方式配置它,但确定要运行哪个窗口管理器通常会令人困惑。Linux 的大型发行商拼命试图向用户隐藏配置的明显复杂性,以便桌面看起来是自动配置的。幸运的是,尽管他们尽了最大努力,但很容易找到绕过它的方法。
关键分为两部分:startx(及其同伴 xinit)和 $HOME/.Xclients 配置文件。startx 是一个 shell 脚本,其历史可以追溯到 X 的早期。这是一个相当简单的脚本,旨在使典型用户更容易使用更复杂的 xinit(用于启动 X 服务器和任何初始应用程序)。开发人员倾向于构建复杂的系统,然后花费余生在它们周围添加前端和包装器,以简化“典型用户”的使用。xinit 将存在于所有安装了 X 的 Linux 系统上。startx 应该在所有系统上,尽管一些发行商可能会删除它,而选择他们自己开发的版本。如果您使用的是其中之一,请抛弃它。在某些情况下,保留历史软件片段是很有利的,即使更高级的片段变得可用也是如此。这就是其中一种情况。您应该能够在 /usr/X11R6/bin 下找到 xinit 和 startx。
只要您使用 startx/xinit 启动您的 X 会话,您就可以使用 .Xclients 配置文件来确定 X 将启动什么。xinit 最终会读取此文件,该文件应位于您的 $HOME 目录中,启动 X 服务器,然后运行 .Xclients 中指定的命令。例如,您可能会指定两个 xterm、xclock 和 xcalc 都与 E 一起启动。这样的配置可能如下所示
xterm & xterm -bg black -fg wheat -geom 80x30\ -font 7x13 & xclock & xcalc &<\n> enlightenment
请注意,此文件看起来像普通的 shell 脚本,但您不必指定要使用的 shell(即,文件顶部没有 #!/bin/sh 行),因为使用了标准 shell /bin/sh。每一行都是要运行的命令,除了窗口管理器行之外,每个命令都必须使用与号放在后台。最后一个命令通常是首选的窗口管理器。无论哪个命令是最后一个,都不应将其放在后台。如果放在后台,xinit(通过 startx)会看到命令文件 (.Xclients) 已完成。这将导致 xinit 退出,结束您的 X 会话并返回到文本控制台。
创建一个类似于上例中的 Xclients 文件。如果 X 已经在运行,这对于大多数接受 Linux 发行版提供的默认配置的用户来说很可能是这样,您仍然可以使用任何编辑器(我使用 vi)并将文件保存到 $HOME/.Xclients。这不会影响您当前的 X 会话,但是当您注销并在下次重新登录时,您将获得新的配置。快速提示:如果您迷路了,请将 .Xclients 重命名为 .Xclients.orig 并退出您的 X 会话。下次您启动 X 会话时,您应该会回到之前的状态。
现在您有了一个简单的 Xclients 文件,并且您已准备好启动您的 X 会话。如果您使用图形登录,一切就绪。您的新配置将在您下次登录时启动。如果您使用文本控制台登录并手动启动您的 X 会话,只需键入 startx。在任何一种情况下,如果您迷路或感到困惑并想要快速退出,您可以键入 CTRL-ALT-BACKSPACE 来杀死 X 服务器并返回到图形登录或文本控制台。快速提示 2:请记住 CTRL-ALT-F2 应该会将您带到文本登录控制台,而 CTRL-ALT-F7 应该会将您带回到您的 X 会话或图形登录。
第一次启动 E 时,您会看到类似于图 1 的内容。E 带有内置的帮助系统。屏幕中间的大窗口是文档查看器,用于导航帮助系统。此窗口在您第一次使用 E 时打开,并且在您退出文档查看器之前,每次后续使用都会打开。在线帮助并不难理解,您应该至少通读一遍。如果您仔细观察,您还会看到 E 的信息对话框之一。这一个说明已为您构建了默认菜单配置。
“Enlightenment 基础知识”介绍了 fnlib 库。该库使 E 能够访问一些有趣的字体。文档查看器显示在线帮助,显示此应用程序的默认字体。这是您了解 E 与其他窗口管理器不同的第一个线索。您可以为 E 创建一些非常不寻常的可缩放字体。了解如何执行此操作的最佳方法是查看 fnlib 源代码发行版提供的文档。
使用 .Xclients 启动的应用程序会发生什么?大多数应用程序将在 .Xclients 脚本退出后退出,而当您退出窗口管理器时,就会发生这种情况。但是,如果某些应用程序没有退出,您可以向 .Xclients 添加代码(就像任何 shell 脚本一样)以强制这些应用程序退出。请记住,在紧急情况下,您可以使用 CTRL-ALT-BACKSPACE 关闭您的 X 会话,尽管一旦您熟悉了 E 的菜单系统,您应该使用提供的菜单选项退出。
现在,回到您的第一次登录。您正在查看的内容需要一些解释。首先,大多数现代窗口管理器都提供多个虚拟桌面。使用 E 的默认配置,您从两个桌面开始。您可以通过有两个页面调度器来判断有两个桌面(图 1 的左下角)。每个桌面可以有多个页面。E 的默认设置为每个桌面提供两个页面。桌面数量和每个桌面的页面数量都可以使用图形界面进行配置(即,您不必手动编辑配置文件来更改这些)。稍后,在完成 E 环境的巡视后,我们将详细讨论配置。
图 1 的顶部是拖动栏。此栏对于桌面来说就像标题栏对于窗口一样;它允许您上下拖动桌面。与其他窗口管理器不同,您实际上可以使用 E 同时查看和工作在两个桌面中。
图 1 的右下角是默认图标框。它沿其底边有一个滑块,如果图标多于框中可以显示的图标,则可以使用该滑块左右滚动图标。像 E 中的大多数东西一样,图标的大小、它们的排列(行和列)、图标框的数量以及许多其他项目都可以使用图形配置实用程序进行配置。
桌面用户经常发现他们最大的问题是有足够的屏幕空间来容纳他们同时需要打开的所有窗口。Linux 用户很幸运,因为 X 的设计旨在使以各种方式添加虚拟空间成为可能,而 E 几乎利用了所有这些方式。
我们已经提到过页面调度器,这是一个已经存在一段时间的概念。大多数用户可能听说过或见过它们,即使他们实际上没有使用过它们。E 通过允许您将窗口“卷起”到标题栏中,从而进一步节省屏幕空间。动画效果看起来有点像抽屉滑入箱子。要卷起窗口,请单击标题栏上的鼠标中键。再次单击它以将其重新展开。窗口滑入标题栏的动画移动可以打开或关闭,这在内存受限的系统上很有用。禁用后,窗口只是消失,仅留下标题栏可见。窗口的这种卷入和展开称为“着色”。
着色几乎适用于 E 中的任何窗口。这包括页面调度器窗口和图标框。唯一不能着色的窗口是菜单。桌面本身不会被着色,但可以使用拖动栏上下滑动。拖动栏的滑动位置和方向是可配置的。
虽然着色可以节省您的空间,但您可以通过将窗口分组在一起更好地管理您的窗口。对着色属于组的窗口进行着色将对着色同一组中的所有其他窗口。窗口分组是使用标题栏菜单完成的——单击标题上的鼠标左键以查看此菜单。属于同一窗口组的窗口可以同时图标化、杀死、移动和着色。窗口分组是当前版本的 WindowMaker 和 Afterstep(另外两个流行的窗口管理器)中都具有的功能。
我们现在可以看一下默认菜单配置。我假设您要么使用三键鼠标,要么已将您的 X 服务器配置为模拟三个按钮。后者并不难做到,但我们在这里讨论的是 E,而不是 X 服务器。有关如何模拟使用三键鼠标,请参阅您的 X 服务器文档。
在根窗口(即背景)上单击鼠标左键将调出 Enlightenment 菜单,您可以在其中访问其余的根菜单。熟悉此菜单中的帮助系统选项。您会定期参考它。

图 2. 默认 Enlightenment 菜单
在根窗口上单击鼠标右键将打开设置菜单。您可以在这里配置 E 的某些方面。选项包括窗口焦点和自动提升、桌面背景以及特殊效果,例如窗口的动画着色和窗口滑动。最后一个选项会导致窗口在您更改为它们所在的页面和桌面时从屏幕边缘滑动进来。动画选项应在低端系统和内存有限的系统上关闭,以提高整体性能。
标题栏具有菜单,这些菜单通过在标题区域中单击鼠标右键打开。此菜单允许您强制窗口“粘滞”,这意味着无论焦点在哪个页面或桌面,它们都是可见的。在这里,您也可以设置给定窗口的窗口组、堆叠顺序和边框样式。您还可以使用此菜单关闭可能行为不端的应用程序的窗口。
菜单可用于许多其他 E 功能。可以使用鼠标右键单击图标框的边缘或框内来打开图标框的菜单。此菜单中的一个选项是图标框设置窗口。在这里,您会找到许多选项,包括更改框的方向(水平或垂直)、自动调整图标框的大小、显示或隐藏图标名称和背景,以及是否在框中使用透明背景。
页面调度器有两个菜单,也可以通过鼠标右键单击打开。由于页面调度器就像任何其他应用程序一样,它们的标题栏(很可能沿着页面调度器窗口的侧面而不是顶部)具有像任何其他应用程序的窗口一样的菜单。这与页面调度器的菜单不同,页面调度器的菜单是通过在页面调度器本身内单击鼠标右键打开的。此菜单为您提供了设置页面调度器中窗口和图像的高质量或低质量显示的选项,以及页面调度器设置窗口。此窗口允许您设置一些特定于页面调度器的选项。如果您在低端系统或内存有限的系统(如笔记本电脑)上,您将需要禁用此窗口中的连续屏幕扫描选项。
最后,拖动栏有一个小菜单,允许您直接跳转到其他桌面中的窗口。在拖动栏上单击鼠标中键将显示所有桌面中所有窗口的标题。选择标题会将您跳转到该窗口。如果窗口在当前桌面页面中,但被其他窗口隐藏,它会将该窗口提升到所有窗口的顶部。如果您在拖动栏上单击鼠标左键并向下拖动,您可以显示较低层的桌面。窗口可以通过这种方式在桌面之间拖动(到相同的相对页面)。例如,如果窗口在当前可见的桌面中,并且您将拖动栏向下拉一点以显示下一个更高级别的桌面,您可以将窗口的标题栏拖到下一个更高级别的桌面中。当您释放鼠标按钮时,窗口的桌面将被移动。同样,E 提供了许多不同的方法来完成相同的任务。在桌面之间移动窗口也可以使用各种菜单选项完成。
拖动栏只是另一种执行页面调度器所做的事情的方式,但没有占用任何额外的屏幕空间。您可以完全禁用页面调度器,而仅使用拖动栏在桌面周围移动。拖动栏又长又薄——E 努力节省屏幕空间——并且可以配置为使其沿着显示的任何边缘放置。
默认情况下,E 配置菜单以使用动画显示打开。在较慢的系统或内存有限的系统上,最好使用设置菜单(在根窗口中单击鼠标右键)禁用此功能。
虚拟屏幕空间为您提供了额外的空间来保持窗口打开。本质上,它们是窗口图标化的替代方案。图标很好,但是如果没有有意义的图标来表示真实窗口的应用程序,图标可能会比有帮助更令人困惑。
页面调度器通过简单地保持窗口打开来解决这种歧义。您在具有多个页面的虚拟桌面之间来回跳转。将每个桌面想象成不同立方体中的一张桌子,带有多个抽屉。每个抽屉都是桌面中的一个页面。主要区别在于,在虚拟桌面上工作比在桌子和抽屉之间交换纸张更容易。
与其他窗口管理器的页面调度器相比,E 的页面调度器相当复杂。首先,在桌面中使用的背景图像可以显示在页面调度器的每个页面中,从而更容易描绘页面。页面调度器中的每个窗口都是真实窗口的微型版本,包括窗口边框、窗口内容和图像。页面调度器中的微型窗口可以在鼠标悬停在它们上方时放大,尽管对于普通的 xterm 等事物来说,这没什么帮助。有用的是,当鼠标悬停在页面调度器中的窗口上方时,会显示窗口标题。这使您可以立即识别任何桌面中任何页面中的任何窗口——并且在页面调度器中单击该窗口的鼠标中键将使您直接跳转到该窗口。
还支持为每个桌面设置不同的背景。图 4 显示了一个配置有 3 个页面调度器的桌面,这些页面调度器沿右侧排列,每个页面调度器都具有不同的桌面背景图像和 2x2 页面配置。在各个页面中可以看到 Netscape 图像和彩色便利贴。
此示例显示了使用与默认主题不同的主题、个性化背景和具有不同配置的页面调度器的修改配置。将图 1 与图 4 进行比较,您将看到 E 环境的外观有多么多样。
E 的更新功能之一是其支持称为 epplets 的小程序来执行简单功能的能力。epplets 通常是小型 C 程序,但您也可以创建由 eesh(Enlightenment shell)运行的小型脚本。Epplets 可以是具有自己用户界面的独立程序,也可以让 E 为它们处理用户界面——一种嵌入式应用程序。
目前,只有少数几个小型 epplets,主要由忠实的 E 爱好者提供。E 本身附带了一些脚本,但没有 epplets。没有 epplets 做任何过于有趣的事情,尽管很可能像自动连接到 Internet 这样的功能将在未来使用 epplets 提供。epplets 中最有趣的可能是 gkrellm,一个一体化 epplet,可显示系统性能、时间和其他有用信息。您可以期望 E 的未来可扩展性将以扩展对 epplets 的支持的形式出现。
经过这一切,您为什么要考虑 E?简而言之——可配置性。E 为您提供最多的选项,使桌面成为您的——您的风格、您的感觉、您的世界。您日复一日地在计算机上生活。为什么它不应该成为一个更个性化的地方呢?
E 具有相当多的图形配置支持。实际上,E 的几乎所有功能都可以使用简单的图形界面进行配置,您可以通过设置菜单或特定于功能的菜单访问这些界面。E 中唯一需要手动干预的部分是将菜单选项添加到根菜单和开发主题。
设置菜单允许您以多种方式更改窗口管理器的运行方式:不透明与透明窗口移动、窗口的自动对焦和自动提升、桌面、工具提示和音频设置,甚至还有一些特殊效果。通读这些设置非常重要,特别是如果您在内存有限的笔记本电脑上运行。Enlightenment 旨在允许您在系统具有处理能力的 CPU 和内存的情况下为桌面添加更多闪光点。但是,如果不能,E 还允许您禁用一些资源消耗大户。
更改根菜单相当容易。只需编辑 $HOME/.enlightenment 目录下的 .menu 和/或 user_apps.menu 文件,该目录是您第一次启动 E 时创建的。您可以通过这种方式为根菜单添加新的子菜单。file.menu 文件对应于用户菜单菜单(在根窗口中单击鼠标左键打开)。user_apps.menu 显示为用户应用程序列表菜单,它是“用户菜单”菜单中的一个选项。
E 检查这些菜单文件中的条目,以查看是否可以找到与菜单选项关联的程序。如果找不到该程序,则该条目将不会显示在菜单中。您可以为程序使用完全限定的路径名。如果应用程序位于 PATH 环境变量中列出的目录中,您只需要指定程序名称即可。
更改菜单使您可以快速访问启动应用程序。如何强制应用程序始终在特定的桌面页面上启动?E 可以记住打开的应用程序,但您必须手动指定下次启动 X 会话时要重新打开哪些窗口。为此,在按住 ALT 键的同时,在窗口中单击鼠标右键;将打开一个菜单。选择“记住...”选项,然后在打开的对话框中,选择您希望 E 记住此应用程序的选项。下次启动 E 时,它将使用您指定的参数启动应用程序。
请注意,这与我们第一次使用 .Xclients 文件启动 X 的方式不同。该文件由 xinit 使用,以便在您每次启动 X 会话时启动应用程序——Enlightenment 对这些应用程序一无所知。刚刚提到的 ALT-鼠标右键单击方法告诉 Enlightenment 在 E 启动后重新启动应用程序。这里的选择是允许 xinit 还是 E 启动您的应用程序。为了简化生活,您希望在 .Xclients 文件中唯一的行是启动 Enlightenment 的命令;然后,使用 E 来管理任何其他应用程序的启动。
拖动窗口可以产生许多效果。将窗口从页面调度器拖到根窗口上会将该窗口放到当前页面和桌面上。您可以将窗口从页面调度器拖到图标框中,以图标化窗口,而无需实际转到窗口所在的桌面。可以通过按住 ALT 键并单击鼠标中键来调整图标框的大小——不是很直观,但是一旦您知道该怎么做就很容易了。
可以使用设置菜单中的“桌面背景设置...”选项设置任何桌面的背景。用户的背景几乎可以使用任何格式(例如,TIFF、JPEG 和 PNG,只要您的 imlib 版本构建为支持这些格式),都可以复制到 ~/.enlightenment/backgrounds。只有在您重新启动 E 后,对此目录的更改才会被识别;但是,使用“用户菜单”菜单很容易做到这一点。
人们将如何弄清楚如何更改主题?您如何找到有关如何创建风格化按钮、标题栏等等的信息?这是 E(实际上,也是许多其他 Linux 桌面)当前的局限性。简单的主题可以为窗口和桌面指定背景图像,以及用于图标的图像。E 允许通过允许您指定窗口边框、标题栏、边缘、角和各种其他位和片段来更精细地控制显示。坏消息是,目前还没有任何准确描述如何执行此操作的文档。好消息是,每当开发人员提供最基本的东西时,我都可以将其转化为更详细的东西给您。
尽管缺乏关于创建自己的主题的信息,但 Themes.org 这个 Linux 主题官方站点提供了许多预先打包的 E 主题。该站点有专门针对各种窗口管理器的部分,这些窗口管理器支持某种形式的主题环境。我浏览了您可以在此处找到的许多用户贡献的 E 主题,但没有发现任何比 E 默认安装中提供的 BlueSteel 主题在视觉上更具吸引力的主题。当然,美在用户眼中。
我为本文和本系列中的其他文章进行的大部分研究都是在两个系统上完成的:一个配备 256MB 内存的 Pentium II 400MHz 机器和一个配备 32MB 内存的 IBM ThinkPad i1410 (Celeron 200MHz)。通过使用两个明显不同的系统,我能够比较各种窗口管理器的一些可见性能差异。
Thinkpad 上的性能是合理的,即使动画已打开。切换到不同桌面的幻灯片显示有点跳跃,但不是很慢。半透明移动——窗口在桌面周围拖动时显得部分透明——非常慢,而阴影移动几乎无法使用。仅当您计划先对着色窗口或拥有快速 CPU 时才使用阴影移动。技术移动在视觉上相当有趣且非常快,因为它们仅绘制窗口的边界。框移动在视觉上不如技术移动那样具有刺激性,但速度非常快。框移动和技术移动是较慢、内存受限系统的首选选项。
另一个要考虑的性能问题是 Imlib 配置工具。默认情况下,您可以从用户菜单-->用户应用程序列表--> Imlib 设置选项(在根窗口中单击鼠标左键)访问此工具。从这里,您可以设置窗口渲染的颜色质量,以及用于图像和像素图的缓存量。“颜色校正”页面非常有趣,尽管除非您具有高质量的背景图像,否则其效果并不明显。在低端系统上,尝试将图像缓存、像素图缓存和共享内存大小减小到最低设置。此外,禁用 15/16bpp 系统的高质量模式。许多笔记本电脑可能以 15/16bpp 运行,因此您需要在这些系统上禁用高质量模式。
E 仍在开发中,因此可能会导致系统锁定。我尝试从设置菜单访问音频功能,即使我已经关闭了编译期间的声音选项,但这导致了段错误。有趣的是,E 发现了这个问题,并为我提供了重新启动或继续的选项。尽管错误是一个问题,但它优雅地处理了它。
E 很酷,并且很可能有一个非常有趣的未来。它相当稳定——在我对这两个系统的所有测试中,我只遇到了两次锁定——但缺乏最终用户信息来充分利用其所有功能。它附带了最有趣的可用默认界面之一。许多人正在认识到 E 的潜力。它可以愉快地在 GNOME 和 KDE 环境中工作。
E 也消耗大量资源——它可以很快地消耗内存。由于它仍在开发中,因此对于没有经验的用户来说,安装可能很痛苦。您需要了解如何构建和安装多个软件包才能使其正常运行。菜单配置可能很复杂,并且需要手动编辑。风格化、主题化的界面是可能的,但尚不清楚如何创建这些界面。没有任何真正的文档开始解释这个过程。
我的目的在这里是讨论桌面环境对最终用户来说可能是什么——独特地个性化。E 比任何其他窗口管理器都更能提供这种潜力,但它离典型桌面用户期望的简单性还差得很远。尽管它很复杂,但如果您有决心自己尝试和研究默认配置,您可能会发现 E 将在您的世界中占有一席之地。
迈克尔·J·哈梅尔 (mjhammel@graphics-muse.org) 是一位想成为平面艺术家的人,一位作家和一位软件开发者。他漫无目的地在地球上游荡,寻找冒险、宁静的海滩以及逃离支配他生活的电脑。