在 1.2 版本之前的 AfterStep 版本(包括当前 AfterStepClassic 版本)中,所有配置都在单个文件中处理。这就是 .steprc 文件;如果您运行这些版本中的任何一个,它应该在您的主目录中。这些文件通常都有很好的注释,并且可以轻松编辑以更改默认设置。版本 1.0 的默认文件包含几个主要部分
新版本的 AfterStep 不使用此文件,而是首选 GNUstep/Library 标准。例如,外观和感觉的设置已分解为单独的文件,而 Wharf、Pager 和其他模块及应用程序的配置已放置在它们自己的文件中。请参见下文。
AfterStep 现在使用目录结构来处理桌面自定义。
这取决于您拥有的版本。
1.4.4 及更早版本需要在每个用户的主目录中设置完整的目录集。换句话说,您需要复制以下所有内容
{AfterStepPath}/GNUstep/Library/AfterStep/
到
~/GNUstep/Library/AfterStep/
在 1.4.0 和 1.4.4 版本之间,此目录结构发生了一些更改。这些更改的完整概述超出了本文档的范围,但下面对特别常见的问题进行了一些一般性说明。有关配置 1.4.4 的更多帮助,请参阅 http://www.via.ayuda.com/~smw/afterstep/configs/index.html 或 http://www.music-satellite.de/spearhead/。
特别是,您应该注意 ~/G/L/A/ 目录在 1.4.0 和 1.4.4 版本之间不兼容。您必须将完整的 {AS install}/G/L/A/ 目录(包括所有子目录)复制到您的主目录中,即使您只是从 1.4.0 升级到 1.4.4。
~/GNUstep/Library/AfterStep 的安排,无可否认,有点低效,因为在任何运行 AfterStep 的系统上,总是至少有两份所有内容的副本。从 1.4.5 之后的版本开始,可以仅将您已更改的文件添加到主目录中的目录结构中;其他所有内容都将使用 /usr/share/afterstep 或 /usr/local/share/afterstep 中的默认安装(此位置因版本而异;后者是版本 1.5 中的默认位置)。然而,每个版本的配置文件之间都存在一些细微的差异。如果您已升级,并且突然遇到问题,您的第一反应应该是尝试重命名您的 ~/G/L/A/ 目录,然后启动 AfterStep。如果问题消失,您可以合理地推断它与您的配置文件有关。这并不意味着答案会很明显,但这确实意味着您会知道从哪里开始查找。
首先,确定您是否从“.steprc 版本”升级到“非 .steprc 版本”。1.2 之后的版本(默认情况下)不使用 .steprc 文件,因此如果您从例如 1.0 升级到 1.4.5,您的旧自定义设置将不会默认调用。
如果您已从 1.4.0 更改为更高版本,则需要删除旧版本的 ~/GNUstep/Library/AfterStep 目录结构。版本 1.4.4 引入了“可配置”和“不可配置”的区别,因此一些项目已移动。请参阅上一个问题。
版本之间引入了细微的更改;即使在 1.4.4 和 1.4.5.3 之间也是如此。特别是,一些模块的配置文件已更改为与 Wharf 风格保持一致。这带来的实际影响是升级后出现明显无法解释的问题。如果您在升级后突然遇到问题,尤其是如果某些模块突然无法工作,请尝试用默认配置替换您的配置。如果这有效,您可以编辑新配置以反映您之前的自定义设置。
同样重要的是要注意,1.5 版本中外观和感觉的语法再次更改。其中一些更改是由于请求的功能或(更常见的是)程序整体效率或易用性的改进。当然,这些更改会带来一些挫败感;但是在您问“发生了什么?”之前,您应该始终尝试重命名您的 ~/GNUstep/Library/AfterStep 目录,然后重新启动。如果这解决了问题,您应该尝试自定义新版本,使用您的旧自定义设置作为模型。您很可能能够按原样重用您的大部分旧配置文件。
在 1.2 之前的版本中,编辑 .steprc 的相应部分。在更高版本中,您需要调整 ~/GNUstep/Library/AfterStep/start 目录结构的必要部分。start 目录包括每个子菜单的子目录。它还具有与菜单上的每个条目相对应的文件。每个文件应包含一行以调用所需的程序。因此,如果您希望在主开始菜单中有一个条目,内容为
xiterm (pixmap)
您的 ~/G/L/A/start 目录将包含一个文件
xiterm\ (pixmap)
该文件将包含一行
xiterm -pixmap [path_to_pixmap.xpm] &
(当然,您将调整命令行选项以反映您的意图)。
默认情况下,开始菜单的排序顺序在编译时确定。它通常按字母顺序或时间顺序(根据文件的创建日期)排序。这有一个缺点,即强制执行可能不喜欢的排序顺序。因此,版本 1.5 提供了一种新的(完全可行的)方法来对菜单项进行排序。
在版本 1.5 中,开始菜单可以按数字排序。假设您有三个想要在开始菜单中排序的文件,名为“a”、“b”和“c”。您可以通过将它们命名为“0_c”、“1_b”和“2_c”来在开始菜单中按反向字母顺序对它们进行排序。
您可以通过在与开始菜单名称关联的文件中用引号括起来包含该开始菜单名称来指定与文件名不同的开始菜单名称。例如,名为 8_xitermtransparent 的文件将是开始菜单中的第 8 个文件。如果文件的内容如下,则它将被命名为“X terminal ~transparent”
Exec "X terminal ~transparent" exec xiterm -pixmap
~/GNUstep/Library/AfterStep/non-configurable/0_background -sl 500 -vb &
MiniPixmap "mini-app.xpm"
(请注意,此命令应全部在实际文件中的一行上!)在这种情况下,xiterm 窗口会以 AfterStep 中第一个桌面的当前背景出现;这模拟了一个“透明”的 xterm。有关“透明”xterm 的更多信息,请参阅有关 as-apps 的部分。
开始菜单中项目的排序始终将目录(等效于子菜单)放在首位。但是,目录本身也按照与文件相同的方案进行排序,只是没有机制可以将子菜单命名为目录名称以外的名称。
从 1.4.5 版本开始,您还需要将新的开始菜单读入您的配置中。在开始菜单上,在“桌面”(1.5 或更高版本)或“退出”(< 1.5)下,有一个选项“更新开始菜单”。选择此项,您的新开始菜单将出现。
使用 Red Hat Linux 5.1 的人遇到了另一个开始菜单更新问题:退出后所有更改都丢失了。这是因为 Red Hat 修改了 AfterStep 的启动方式。Red Hat 5.1 中包含的 AfterStep 版本包含一个 m4 预处理例程,除其他外,每次 AfterStep 启动时都会重写 ~/GNUstep/Library/AfterStep/start 目录。作为一点社论,我 (Andrew) 可能会指出,我不知道这是做什么的,也不知道 Red Hat 为什么使用它。我也不打算学习。如果您无法让 Red Hat 向您解释他们做了什么,我的建议是删除 RPM,并编译和安装官方版本。但是,David Mihm (davemann@ionet.net
) 建议您可以通过这种方式绕过 m4 预处理
echo "exec afterstep" >~/.xinitrc
echo "exec afterstep" >~/.xsessions
chmod 700 ~/.xsessions
有人建议(Ian Hay,ian.hay@sympatico.ca
),m4 预处理是 Red Hat 试图使 AfterStep 对新用户更友好的尝试:这种预处理显然确保新应用程序在安装后添加到开始菜单中。Matteo Lunardi (matteo.lunardi@usa.net
) 至少在某些版本中提供了一种解决方法。在 xinit-1.4.2.noarch.rpm 中,他以这种方式编辑了文件 /etc/X11/xinit/Xclients
if [ -f $HOME/.wm_style ] ; then
WMSTYLE=Cat $HOME/.wm_style case "$WMSTYLE" in
Afterstep*|AfterStep*)
# we have to start up afterstep
if [ -x /usr/X11R6/bin/afterstep -a -f
/usr/share/afterstep/wmconfig.conf ] ; then
# if [ ! -d $HOME/GNUstep/Library/AfterStep ]; then
mkdir -p $HOME/GNUstep/Library/AfterStep
wmconfig --output=afterstep --directories \
/usr/share/afterstep/wmconfig.conf 2>/dev/null
# fi
env > "$HOME"/Xrootenv.0
# if this works, we stop here
eval "exec /usr/X11R6/bin/afterstep" >
"$HOME"/.AfterStep-errors 2>&1
fi
在这种情况下,更改是在“if”行(而不是说“如果这有效,我们就到此为止”的那一行)中添加注释标记(“#”)。然而,显然,将注释标记添加到“mkdir”和“wmconfig”行也有效。
作为替代方案,Kai Puolamaki (Kai.Puolamaki@iki.fi
) 建议您配置您的 wmconfig 实用程序以使事情更好地工作。这可能是进行这些调整的最佳方法。Red Hat 的 wmconfig 实用程序依赖于系统范围的目录 /etc/X11/wmconfig,但用户可以通过个人目录 ~/.wmconfig 进行调整。因此,如果您想要一个菜单项“邮件”,其中包含 mutt 和 elm,您将添加两个文件
~/.wmconfig/mutt
~/.wmconfig/elm
文件“mutt”将包含以下内容
mutt name "Mutt"
mutt description "Mutt email client"
mutt group Mail
mutt exec "xterm -e mutt &"
文件“elm”将类似
elm name "Elm"
elm description "Elm email client"
elm group Mail
elm exec "xterm -e elm &"
更多信息可从 wmconfig 帮助手册页获得。请注意,此语法还有一个额外的优点:它可以确保您的菜单更改在您更改窗口管理器时也可用。
“装饰”菜单已重命名为“桌面”。
在不使用 .steprc 的版本中,桌面的各种元素已被分离出来,以便可以分别自定义它们。外观文件和行为文件允许您以几乎无限的方式自定义桌面。请注意,您在外观文件中所做的任何功能更改(例如调整窗口标题栏上出现的按钮数量)可能需要在相应的行为文件中反映出来:“行为”处理您与窗口的交互方式,而“外观”控制它们的外观。如果您希望您的窗口始终以大致相同的方式响应,但希望它们的外观因您执行的任务、您所在的机器或任何其他因素而异,这将非常方便。
是的,但并非在每个版本中。据报告,版本 1.5 可以轻松处理不同大小的标题栏按钮。如果您想要此功能,请升级到版本 1.5。
这取决于您使用的版本。版本 1.5 允许您简单地更改外观文件以反映您想要的按钮。1.5 之前的任何版本都需要同时更改外观和行为。这里的诀窍是理解外观和行为之间的区别。外观文件仅确定屏幕元素的外观。它不决定元素的交互方式:那是行为文件的作用。因此,如果您想减少标题栏上的按钮数量,则需要调整外观和行为文件。外观文件必须定义正好与行为文件中具有功能的按钮数量相同的外观;并且在行为文件中定义的每个按钮都必须在外观文件中具有引用。
要了解这是如何工作的,请考虑具有以下定义的外观文件
# TitleButtons : [1] [3] [5] [7] [9] (title) [0] [8] [6] [4] [2]
#
TitleButton 1 b1.xpm b1-pressed.xpm
TitleButton 2 b2.xpm b2-pressed.xpm
TitleButton 3 b3.xpm b3-pressed.xpm
TitleButton 4 b4.xpm b4-pressed.xpm
TitleButton 6 b6.xpm b6-pressed.xpm
现在,这定义了每个标题栏左侧的两个按钮(TitleButton 1 和 TitleButton3)以及每个标题栏右侧的三个按钮(TitleButton 2、TitleButton 4 和 TitleButton 6)的外观。对于每个定义,提到的第一个 XPM 定义了按钮未按下时的外观;第二个 XPM 定义了按钮按下时的外观。这些按钮的编号是硬编码的,因此您不能只是以任何顺序对按钮进行编号。请遵循“样板”编号方案(在我们的示例中 TitleButton 像素图定义上方)。
为了使此外观功能正常工作,每个标题栏按钮都需要在其行为文件中定义其功能。因此,行为文件可能包含如下内容(此文件取自 1.4.5.55N6 中的 feel.DEFAULT 文件)
Mouse 1 1 A ChangeWindowUp
Mouse 2 1 A GetHelp
Mouse 3 1 A ChangeWindowDown
Mouse 1 2 A Delete
Mouse 2 2 A Destroy
Mouse 3 2 A Destroy
Mouse 1 3 A PopUp "Window"
Mouse 2 3 A WindowList 2
Mouse 3 3 A WindowList 2
Mouse 1 4 A Shade
Mouse 2 4 A Stick
Mouse 3 4 A Stick
Mouse 1 6 A Iconify
Mouse 2 6 A Maximize
Mouse 3 6 A Maximize
第一列定义了什么操作导致了所需的行为;因此,“鼠标 1”表示“按下鼠标按钮 1”。第二列定义了行为将在哪里产生所需的效果:在我们的列表中,我们有所有五个(TitleButton 1、TitleButton 2、TitleButton 3、TitleButton 4 和 TitleButton 6)在外观文件中定义的按钮的定义。请注意,每个按钮都为每个鼠标按钮获得一个定义,因此在任何 TitleButton 上都不会有未定义的动作。第三列指定了操作的上下文。在这种情况下,上下文是“任何”(实际上是标题栏中的任何上下文除外);您还可以指定修改(例如,通过添加“C”表示“Control”)。最后一列指定了附加到操作的行为。因此,在最后一行中,我们定义单击窗口右侧最内侧 TitleButton 上的第三个鼠标按钮将最大化该窗口。
其他功能在每个行为文件的同一列表中定义,因此您必须仔细查看以确保您正确定义所有内容。
这里有两种可能性。一种是您的“delete”或“backspace”键有问题。这是一个通用的 X 问题,您应该通过阅读 xmodmap 的相关文档来调查它。尝试在命令提示符下发出“man xmodmap”。
第二种可能性是您有一组在另一个 X 窗口管理器中工作的按键,但在您最近安装的 AfterStep 下不起作用。在这种情况下,您需要编辑“行为”文件。在继续之前,请返回并阅读有关鼠标绑定的上一个问题。完成了?很好。现在,键盘绑定的工作方式相同。因此,在您的行为文件中,您可能有以下键盘绑定
Key Left A C Scroll -100 0
这表示如果您在屏幕上的任何位置按下“Control”(第 3 列)和左光标键(第 1 列),AfterStep 将向左滚动一页。如果您想恢复“Ctrl-left”的功能,以便在其他 X 应用程序中使用它,那么您需要从您的行为文件中删除此键盘绑定。
您可以通过使用包含的行为之一来避免 AfterStep 定义任何键盘绑定:feel.ICCCM。只需从开始菜单下的桌面/行为 (v. 1.5) 或装饰/行为 (v. < 1.5) 菜单中选择它即可。
你可以。使用 -f 开关强制 AfterStep 从文件读取。请注意,并非所有内容都可以在您的旧 .steprc 文件中“开箱即用”;但是如果您非常喜欢旧版本,为什么还要升级呢?
也就是说,版本 1.5 几乎解决了所有不兼容问题。
Red Hat 显然曾经包含一个 AfterStep 的仿制品,它实际上是对 fvwm-2 的破解。它不是 AfterStep,尽管一些 Red Hat 发行版也包含真正的 AfterStep。Red Hat 已更改其“破解”版本的名称,以减少混淆。
Red Hat Linux 5.1 中包含“真正的” AfterStep 版本。但是,它使用 m4 预处理进行配置,因此本文档中的并非所有配置说明都对 Red Hat 用户有用。如果您想配置 Red Hat 中包含的 AfterStep,您应该询问 Red Hat 如何执行此操作,或阅读 m4 的文档,或两者兼而有之。上面开始菜单部分下有一些关于 Red Hat 预处理的讨论。
数据库文件允许您调整桌面的某些功能。它允许您为最小化的程序定义图标,允许您强制某些程序(例如 Pager 或 Wharf)保持在顶部,以及其他此类选项。查看默认数据库文件,备份它,并尝试一些设置;它是不言自明的,但需要一些尝试才能使其按您想要的方式工作。
数据库文件中的项目遵循 fvwm 和 AfterStep 的“样式”约定。因此,每个项目都以这种方式列出
Style "WM_CLASS" {comma-separated list of options}
您可以使用 AfterStep 附带的 Ident 模块了解“WM_CLASS”的值。Ethan Fischer (allanon@crystaltokyo.com
) 提供了以下关于各种选项作用的说明
In general, these options have both an "on" and an "off" keyword (like
"Title" and "NoTitle", for instance). This allows a general style (like
the "*" style), to be overridden by a later style. For example:
Style "*" NoButton 1, BorderWidth 2
Style "xterm" Button 1, NoHandles
will hide the leftmost button on the titlebar for any window except xterm
windows. It will turn off resize handles for xterm windows. It will also
give a 2-pixel border to xterm windows - note that BorderWidth only affects
windows with NoHandles (this is in the manpage), so all other windows will
receive the normal 1-pixel border.
Here's a list of options, along with what they do. For each group, the
default is listed first.
Icon {icon.xpm}
NoIcon
Specifies the icon pixmap, if the app doesn't supply its own. NoIcon
turns this off.
Title
NoTitle
Give the window a titlebar. NoTitle removes the window titlebar.
IconTitle
NoIconTitle
Display the icon name along with the icon. NoIconTitle turns this off.
Handles
NoHandles
Give the window resize handles, also called the "lowbar". NoHandles
turns this off.
Button {button}
NoButton
Allow a titlebar button to be shown. It will still not be shown if it
is disallowed by Motif WM hints, or there is no pixmap specified for it
in the look file. NoButton disallows a button.
WindowListHit
WindowListSkip
List the window in the window list. WindowListSkip removes the window
from the window list.
CirculateHit
CirculateSkip
Circulating (also called warping or alt-tabbing) will stop at this
window. CirculateSkip prevents circulating to this window.
StartNormal
StartIconic
Start as a normal window. StartIconic starts the window as an icon.
StaysPut
StaysOnTop
StaysOnBack
Don't put a window anywhere special in the stacking order. StaysOnTop
windows are placed above all other windows except menus. StaysOnBack
windows are placed behind all other windows.
StartsAnywhere
StartsOnDesk {desk}
Start the window on the current desk. StartsOnDesk will force the
window to start on a specific desk.
Color {forecolor} {backcolor}
ForeColor {color}
BackColor {color}
Change both the foreground (text) color, and the background color for
this window. ForeColor changes only the foreground color. BackColor
changes only the background color.
NoFocus
This window will refuse to take the input focus.
Slippery, Sticky
This window will remain on whatever desk it started on, unless the user
moves it. Sticky will cause the window to move to whatever desk is
currently shown.
BorderWidth {width}
If NoHandles was also specified, set the border width of this window.
Note that the border is an X border and not special to AS (unlike the
titlebar or lowbar).
HandleWidth {width}
Set the width of the resize handles on the lowbar.
“base”文件定义了每个每像素位数 X ColorDepth 设置的像素图等的路径。您的 X 会话在任何时候可以使用的颜色数量受到您的视频硬件和 X 配置允许的每像素位数的限制。文件 base.{yourbpp}.bpp 在启动时由 AfterStep 根据您的 X 配置自动选择。有关 ColorDepth 的更多信息,请阅读您的 X 文档以及下面的关于颜色映射问题的部分。
base 文件还定义了您的桌面尺寸和比例。
当应用程序最小化时,图标会显示在桌面上可预测的位置。这是图标框。在使用 .steprc 的版本中,这在 .steprc 中定义。在更高版本中,图标框位于外观文件中。(当然,这意味着如果您更改外观,图标框可能会移动!)您可以使用标准 X 几何图形为您喜欢的图标框指定任何位置。
即使这些是相反的,但它们都归结为同一个问题。在这种情况下,图标行为在行为文件中控制。StickyIcons 确保图标会从一个桌面跟随您到另一个桌面。StubbornIcons 将应用程序图标化到其原始位置。您可以备份您的行为文件,并尝试使用它来查看您可以做什么。
使用默认设置,双击(最新版本)或三击(早期版本)窗口标题栏会切换窗口的始终在顶部状态。再次双击/三击以删除它。如果您想删除此功能,请在您的行为文件中找到如下所示的行(有几行)
PutOnTop "TripleClick"
并将它们注释掉。
您也可能无意中更改了您的行为文件。可预测的是,不同的行为文件以不同的方式定义功能。因此,例如,其中一个可能会在您的指针位于该窗口之上后立即自动将窗口移动到顶部,而另一个可能需要您单击标题栏才能将窗口置于顶部。您可能需要通读系统上的各种行为文件,以了解它们是如何自定义的。
有一组新的脚本可用于处理主题。它仍处于开发的早期阶段,但已经有几个人报告成功。这些脚本来自 Doug Alcorn (alcornd@earthlink.net
),可以从 他的页面 http://home.earthlink.net/~alcornd/ 以及 AfterStep FTP 站点 /themes 下获得。
是的,这是一个通用问题,因为通用答案始终相同:请阅读相关的帮助手册页和 README 文件。也就是说,AfterStep 附带了几个应用程序。其中一些(并非全部!)在另一部分(模块部分之后,在下面)中讨论。如果您真的感到困惑,并且您遇到了 AfterStep 特有的问题,并且您已阅读了所有相关内容(这真的意味着一切!),那么向常规列表提出问题是可以的。