点文件生成器

作者:Jesper K. Pedersen
The Dotfile Generator

点文件生成器 (TDG) 是一款配置工具,它使用 X11 部件(如复选框、输入框、下拉菜单等)来配置程序。为了使 TDG 能够配置给定的程序,必须为其构建一个模块。目前,存在以下程序的模块:bash、fvwm1、fvwm2、emacs、tcsh、rtin 和 elm。

TDG 是免费提供的,可以从 ftp://ftp.imada.ou.dk/pub/dotfile/dotfile.tar.gz 下载。点文件生成器的主页位于 http://www.imada.ou.dk/~blackie/dotfile/。

简介

Unix 系统开发于多年前,远早于图形用户界面普及之前,因此今天的大多数应用程序在没有图形用户界面的情况下也能正常工作。这些应用程序的例子包括编辑器和 shell。

Unix 的一个基本概念是程序是高度可配置的。例如,在 Emacs 中,如果用户请求在文件末尾之后转到下一行,Emacs 有两种逻辑方式来处理这种情况

  1. 插入一个空行,并移动到该行。

  2. 发出蜂鸣声,告知用户没有下一行。

Emacs 的开发者没有只实现其中一种解决方案,而是选择同时实现两种,并让您决定您喜欢哪一种。由于该程序可以在没有 GUI 的情况下工作,因此配置此类选项的标准方法是使用点文件。在这个文件中,您可以编程 emacs 将使用的方法。

这种解决方案要求用户学习点文件中使用的编程语言,并阅读大量文档以了解可用的配置。这项任务可能既困难又乏味,因此许多用户选择使用程序的默认配置。

如果您查看一些点文件,您可能会发现大多数配置可以用以下项目来描述

  • 具有两种可能性的配置(如上)

  • 程序希望知道数字或文本的配置。这方面的例子可能包括如下问题:“应该按多少次 ctrl-d 退出?”以及“在 Reply-to 字段中使用的电子邮件地址?”。

  • 用户可以从列表中选择选项的配置,例如,“您想使用哪个编辑器:emacs、jed、vi 还是 vim?”

上面的配置可以使用 GUI 轻松完成,依次使用以下部件:复选框、输入框和下拉菜单。这正是 TDG 中使用的方法。

TDG 的基本概念

TDG 是一款工具,它使用如上所述的部件以及更多部件来配置其他程序(例如,Emacs、bash 和 fvwm)。这些部件被分组放置,以便在以前没有见过的情况下也能轻松找到正确的配置。最重要的是,帮助位于每个选项的配置处,而不是在遥远的手册中。要获得帮助,您只需在包含您想了解更多信息的配置的部件上按下鼠标右键。

当您启动 TDG 时,系统会提供一个标准配置列表,您可以从中选择一个作为起点。如果您没有给定程序的点文件,或者如果您想尝试新的配置,这很方便。另一方面,如果您已经有一个想要进行最后润色的点文件,您可以将该文件读入 TDG。但请注意,并非所有模块都具有读取点文件的能力(fvwm2、rtin 和 elm 模块具有,其他模块则没有,因为创建这样的解析器很复杂)。

The Dotfile Generator

图 2. TDG 菜单窗口

当您选择启动配置后,将显示菜单窗口(见图 2)。在这个窗口中,您可以像浏览目录结构一样浏览配置页面。如果您选择一个页面,将显示一个新窗口,显示该页面的配置(见图 3)。此窗口将为所有配置页面重复使用,即一次只显示一个配置页面,因此您不必自己销毁窗口。

The Dotfile Generator

图 3. 配置页面

实际配置位于图 3 的区域 1 中。区域 2 是帮助区域,当请求时,整个页面的帮助将在此区域显示。当在部件上单击鼠标右键时,单个配置的帮助也在此处显示。在区域 3 中,显示有关将生成什么的信息。有三种可能性

  1. 您可以生成所有页面。当您想要给定程序的配置时,这是最自然的做法。

  2. 您可以仅生成显示的页面。如果您正在使用 TDG 玩耍,以查看将为不同的配置生成什么,这将很有用。

  3. 最后,您可以告诉 TDG 使用此区域中的单选按钮生成特定页面。

设置-选项菜单中,您可以选择使用上述三种方法中的哪一种。

当配置完成后,您必须从“选项”菜单(设置->选项)告诉 TDG 您希望生成哪个文件。现在,是时候通过在“文件”菜单中选择“生成”来创建实际的点文件了。

生成点文件后,您可能会决定更改某些配置。如果是这样,请转到相关的配置页面,更改您的配置并重新生成。但是,如果您正在测试单个配置的几个不同选项(即,下拉菜单中的几个项目),您可能会发现一遍又一遍地生成整个模块很麻烦。在这种情况下,您可以选择“文件”菜单中的“重新生成此页面”。请注意,如果页面上配置的某些部分影响其他页面,则除非您重新生成整个模块,否则这些其他页面将不会生成。

要查看如何使用生成的点文件,请转到“帮助”菜单,然后选择“如何使用输出”。

配置部件

TDG 使用许多部件来配置不同的选项。其中一些部件在其他应用程序中广为人知,包括:复选框、单选按钮、下拉菜单、输入框、文本框(用于多行文本)、目录和文件浏览器。然而,另一些部件是专门为在 TDG 中使用而设计的。

ExtEntry 部件

ExtEntry 是一个容器,它重复其元素,就像列表框重复标签一样。ExtEntry 中的许多元素可以同时在屏幕上可见。ExtEntry 中的元素可以是 TDG 中的任何部件。ExtEntry 中的元素称为元组。在图 4 中,您可以看到来自 tcsh 模块的 ExtEntry。

The Dotfile Generator

图 4. tcsh 的 ExtEntry

此 ExtEntry 有三个可见的元组,尽管其中只有两个包含值(如您所见,第三个是灰色的)。要向 ExtEntry 添加新元组,请按下滚动条正下方右下角的按钮。如果 ExtEntry 包含的元组多于窗口中可以显示的元组,您可以使用滚动条滚动到元组列表的末尾。

当鼠标左键单击其中一个剪刀图标时,将显示一个包含四个元素的菜单。这些元素用于在 ExtEntry 中剪切、复制和粘贴元组。

The Dotfile Generator

图 5. 大型元组的 ExtEntry 显示

如果元组变得非常大,则一次只能在屏幕上显示其中一个(见图 5)。当元组包含许多部件时,滚动 ExtEntry 会变得缓慢。在这些情况下,ExtEntry 可能具有快速索引。在图 5 中,您可以看到 ExtEntry 顶部的快速索引(它是标记为 Idx 的按钮)。当调用此快速索引时,将显示一个下拉菜单,其中包含与快速索引关联的元素的值。这使得滚动 ExtEntry 更容易。

FillOut 部件

每个 shell 都有一个名为 Prompt 的配置选项,这是一个文本字符串,当 shell 准备好执行新命令时会打印该字符串。可以在此文本中插入特殊标记,当打印提示符时,这些标记将被 shell 中的信息替换。例如,在 bash 中,标记 \w 扩展为当前工作目录。

The Dotfile Generator

图 6. FillOut 部件

在 TDG 中,创建了一个名为 FillOut 的特殊部件来执行如上所述的配置。在图 6 中,您可以看到来自 bash 模块的 FillOut 部件。在该部件的顶部,有一个输入框,您可以在其中键入普通文本。标记放置在其下方。如果您选择其中一个标记,它将被插入到光标所在位置的输入框中。某些标记甚至可能有一些额外的配置。例如,标记“当前工作目录”有两个可能的选项:“完整目录”和“仅最后一部分”。当选择具有附加配置的标记时,将显示一个窗口,您可以在其中进行这些配置。如果您希望更改此类配置,请按输入框中标记上的鼠标左键。

命令部件

模块程序员可以通过命令部件扩展 TDG,从而可以使用他/她开发的部件配置特定选项。目前存在三个这样的部件:目录/文件浏览器、颜色部件和字体部件。

这些部件在 TDG 中显示为按钮,当按下按钮时,将显示一个新窗口,您可以在其中完成实际配置。

保存、导出和重新加载

当您在 TDG 中配置了不同的选项后,您可能希望离开它并在以后返回以更改某些配置。当您离开 TDG 时,您可以使用“文件”菜单中的选项保存您的更改。下次您进入 TDG 时,您保存的文件将是作为启动配置提供的文件之一。

需要注意的一个重要点是,“保存文件”选项是 TDG 状态的内部转储。也就是说,此文件取决于 TDG 和模块的版本。因此,如果您希望将给定的配置发送给另一个人,则此格式不合适。存在一种与版本无关的格式,称为导出格式。要创建这样的文件,您必须在“文件”菜单中选择“导出”而不是“保存”。

要将单个页面上的配置恢复为其原始值或将他人的配置与您自己的配置合并,请在“文件”菜单中选择“重新加载”。要告诉 TDG 您只想重新加载某些页面,请在加载窗口中选择“详细信息”按钮。此按钮会弹出一个窗口,您可以在其中选择要重新加载的配置页面。在这里,您还可以告诉它您希望如何重新加载页面。您有两种可能性

  1. 覆盖—您正在加载的页面将完全覆盖文件的内容。

  2. 合并—ExtEntry 中的元组将附加到模块中已存在的元组。文件中的其他配置将被忽略。

这是保存文件和导出文件之间的另一个区别—您无法与保存文件合并。换句话说,如果您有一个想要合并的保存文件,您首先必须加载并导出它,然后才能与它合并。

结尾

有关其他信息以及当前正在进行的工作的信息,请访问 http://www.imada.ou.dk/~blackie/dotfile/,TDG 的主页。

我刚刚完成了一个用于 procmail 的模块,procmail 是一个用于分类您收到的电子邮件的邮件过滤器。

John D. Hardin (jhardin@wolfenet.com) 正在开发一个模块,用于配置通过拨号连接到互联网的独立系统的防火墙和 IP 伪装设置。他将来可能会将其扩展到更通用的防火墙。

如果您有时间,我想鼓励您为您最喜欢的程序开发一个模块。在 TDG 的主页上,有一个指向文档的链接,该文档描述了如何为 TDG 创建模块。发送电子邮件至 blackie@imada.ou.dk,我很乐意帮助您入门。

Jesper Pedersen 居住在丹麦的欧登塞,自 1990 年以来一直在欧登塞大学学习计算机科学。他是该大学的系统管理员,也教授计算机科学。在业余时间,他练习柔术、听音乐、喝啤酒并与女友一起玩乐。他热爱宠物,有一个 200 升的水族箱和两只非常可爱的兔子。他的主页可以在 http://www.imada.ou.dk/~blackie/ 找到,您可以通过电子邮件 blackie@imada.ou.dk 与他联系。

加载 Disqus 评论