「FVWM」- 配置命令章节列表

Fvwm Manual http://www.fvwm.org/documentation/manpages/

命令说明按照如下的章节进行了分组:

  • 菜单命令(Menu commands)
  • 杂项命令(Miscellaneous commands)
  • 窗口的移动和放置(Commands affecting window movement and placement)
  • 焦点和鼠标移动(Commands for focus and mouse movement)
  • 控制窗口状态(Commands controlling window state)
  • 鼠标,键盘,手势绑定(Commands for mouse, key and stroke bindings)
  • 控制窗口样式(The Style command (controlling window styles))
  • 窗口样式(Other commands controlling window styles)
  • 控制虚拟桌面(Commands controlling the virtual desktop)
  • 用户函数及 SHELL 命令(Commands for user functions and shell commands)
  • 条件命令(Conditional commands)
  • 模块命令(Module commands)
  • 会话管理命令(Quit, restart and session management commands)
  • 颜色集(Colorsets)

按照对新人有帮助的顺序进行了分组。

鼠标、键盘、手势的绑定 Mouse, Key & Stroke Bindings

Fvwm Manual/Mouse, Key & Stroke Bindings

Key [(window)] Keyname Context Modifiers Function

将键盘键绑定到指定的 FVWM 命令。语法与 Mouse 绑定的语法相同,只是用 Keyname 替换了鼠标按钮编号。通常,按下键时激活键绑定。

Keyname,是 /usr/include/X11/keysymdef.h 中定义的标准 X11 键名(没有 XK_前缀),或 keysym 数据库 /usr/X11R6/lib/X11/XKeysymDB。只保证在”没有修饰键“或”仅保持 Shift 键“的情况下生成的键名可以正常工作。

Context,该字段如同在 Mouse 绑定中的定义,指的是上下文窗口。但是,按下某个键时,上下文窗口是具有键盘焦点的窗口。这不一定与指针所在的窗口相同(使用 SloppyFocus 或 ClickToFocus)。请注意,使用“R”(根窗口)上下文的键绑定无法与 SloppyFocus 和 ClickToFocus 一起正常工作。如果遇到问题,请改用 PointerKey 命令。如果要将键绑定到具有 SloppyFocus 或 ClickToFocus 的窗口,当指针不在窗口上时,该窗口应该起作用,fvwm 假定指针位于客户端窗口上(即,您必须使用’W’上下文)。菜单的特殊上下文“M”可用于(重新)定义菜单控件。它可以单独使用,也可以与’T’,’S’,’I’,'[‘,’]’,’-‘和’_’一起使用。有关详细信息,请参阅“Menu 绑定”部分。

Modifiers,该字段如同在 Mouse 绑定中的定义,修饰键,前缀键。

Function,要执行的 FVWM 命令。如果 Function 为’-‘,则删除绑定。

以下示例在按下 Alt-Ctrl-Shift-F11 时弹出内置窗口列表,无论鼠标指针位于何处:

Key F11 A SCM WindowList

将键绑定到标题栏按钮会导致该按钮的显示。有关详细信息,请参阅 Mouse 命令。

Mouse [(window)] Button Context Modifiers Function

定义鼠标绑定。

Button

Button,是鼠标按钮编号。如果 Button 为”0“,则任何按钮都执行指定的 Function。请注意,只有鼠标按钮 1 到 5 会被 X11 完全支持。上述任何数字仅部分有效。复杂功能不能与这些按钮一起使用,也不能用任何需要按住按钮拖动指针的操作。这是由于 X11 的限制。默认情况下,允许的最高按钮数为”9“。

Context

Context,描述绑定的适用位置。有效上下文为:

  • R:根窗口
  • W:应用程序窗口
  • D:桌面应用程序(如 kdesktop 或 Nautilus 桌面)、
  • T:窗口标题栏
  • S:窗口四周(侧面、顶部、底部栏)
  • [、]、-、_:仅适用于左侧、右侧、顶部、底部
  • <、^、>、v:左上角、右上角、右下角、左下角
  • F:适用于窗框(角落)
  • I:表示图标窗口
  • 0~9:表示标题栏按钮
  • A:所有的以上情境。

这些字母字符之间可以的任何组合。例如,当鼠标位于窗口边框中的任何位置(标题栏按钮除外)时,应用“FST”上下文。只有’S’和’W’对于未修饰的窗口有效。

菜单的特殊上下文“M”可用于(重新)定义菜单控件。它可以单独使用,也可以与’T’,’S’,’I’,'[‘,’]’,’-‘和’_’一起使用。有关详细信息,请参阅“Menu 绑定”部分。

特殊上下文“P”控制可用于放置窗口的按钮。使用此上下文时,不允许使用修饰符(修饰符必须为”N“),不允许使用窗口,并且 Funxction 必须是:
PlaceWindow
PlaceWindowDrag
PlaceWindowInteractive
CancelPlacement
CancelPlacementDrag
CancelPlacementInteractive
这七个中的一个。

PlaceWindow使 Button 可用于窗口放置,用于交互式和拖动移动。
CancelPlacement反过来。这使得 Button 取消移动,以进行交互和拖动移动。但是,它可能无法覆盖放置后重新调整新窗口的大小。这由 Emulate 命令控制。此外,无论是否将其设置为 PlaceWindow,都可以通过在拖动时释放被按住的按钮来放置被拖动的窗口。

PlaceWindowDrag、PlaceWindowInteractive/CancelPlacementDrag、CancelPlacementInteractive 的作用类似于 PlaceWindow/CancelPlacement,但它们仅影响以交互方式拖动 / 放置的窗口。

-与 CancelPlacement 是等价的。

以下示例使所有按钮(除了按钮 3)可用于交互式放置,并且如果在完成移动之前按下按钮 1 可以取消,则通过其他按钮启动拖动移动而不是取消:

Mouse 0 P N PlaceWindow

Mouse 3 P N CancelPlacement

Mouse 1 P N CancelPlacementDrag

(window)

(window),默认情况下,绑定适用于所有窗口。您可以通过在括号中指定窗口名称来指定绑定仅适用于特定窗口。窗口名称是通配符模式,指定要将绑定应用于的窗口的类、资源、名称。

以下示例显示了如何使用相同的键绑定来执行不同的功能,具体取决于所关注的窗口:

Key (rxvt) V A C Echo ctrl-V-in-RXVT

Key (*term) V A C Echo ctrl-V-in-Term

Key (*vim) V A C —

Key V A C Echo ctrl-V-elsewhere

“–”操作表示事件应传播到指定的窗口以进行处理。这只是特定于窗口的绑定的有效操作。

此示例演示如何在 rxvt 窗口上按下按钮 3 时显示 WindowList:

Mouse (rxvt) 3 A A WindowList

请注意,Fvwm 实际上拦截了特定于窗口的绑定的所有事件,并且(如果聚焦窗口与任何绑定不匹配)将事件的合成副本发送到窗口。这应该对大多数应用程序透明,但是(出于安全原因)某些程序默认忽略这些合成事件(xterm 就是其中之一)。要启用这些事件的处理,请将以下行添加到~/.Xdefaults 文件中:

XTerm*allowSendEvents: true

即可。

Modifiers

Modifiers,“N”表示无修饰符,“C”表示 Ctrl,“S”表示 Shift,“M”表示 Meta,“L”表示 Caps-Lock,“A”表示任何修饰符。例如,修饰符“SM”表示当 Meta 键和 Shift 键同时按下时。X11 修饰符 mod1 到 mod5 表示为数字“1”到“5”。默认情况下忽略修饰符“L”。要打开它,请使用
IgnoreModifiers命令。

Function

Function,是 fvwm 的命令之一。或者如果 Function 为’-‘,则删除绑定。

标题栏按钮的编号为标题栏左侧的奇数编号按钮和右侧的偶数编号。较小编号的按钮显示在窗口的外侧,而较大编号的按钮显示在窗口的中间(0 表示 10 的缩写)。总之,按钮编号为:

1 3 5 7 9 0 8 6 4 2

具有绑定动作的最高奇数编号按钮决定了标题栏左侧绘制的按钮数。具有绑定动作的最高偶数决定了绘制的右侧按钮的数量。操作可以绑定到鼠标按钮或键盘键。

与模块相关命令 Module commands

Documentation/Module Commands

关于模块

一个模块是一个独立的程序,作为一个单独的Unix进程运行,但是命令要传输给fvwm来执行。用户可以编写他们自己的模块来做任何操作,而不会影响fvwm本身的完整性。

模块必须由fvwm产生,以便它可以为fvwm和模块进行通信设置两个管道。管道在启动时为已经打开,管道的文件描述符作为命令行参数提供。

在X会话期间,使用Module命令可以随时通过fvwm生成模块。模块可以在X会话期间一直存在,也可以执行单个任务并退出。如果在fvwm被告知退出时,有模块仍处于活动状态,那么fvwm关闭通信管道并等待从模块传来的一个SIGCHLD信号,指示它已经检测到管道关闭并退出。如果模块无法检测到管道关闭,fvwm在大约30秒后退出。同时执行的模块数量受操作系统的最大同时打开文件数限制,通常在60到256之间。

模块只是传输命令给fvwm命令引擎。命令的格式与配置设置文件中的相同。某些辅助信息也被传送,如在示例模块FvwmButtons中。

模块的配置行

Fvwm维护着一个模块配置行的数据库,该数据库里包含了模块的配置信息。模块配置行格式如下:

*
<ModuleName>: <Config-Resource>

其中,<ModuleName>是实模块名称或别名,比如:*TopPanel: Colorset 10或者*FvwmButtons: Colorset 10,其中TopPanelFvwmButtons的别名,在加载模块的时候会用到这个别名。

这个数据库最初是从配置文件(或从-cmd config命令的输出)中加载的,并且可以之后可以由用户(通过FvwmCommand)或模块进行修改。

当模块运行时,它们读取数据库的适当部分。(这个数据库的概念类似于X resource数据库)。

以下的命令也是用于操作模块配置数据库的。

*module_config_line

用于定义模块配置。module_config_line由模块名称(或模块别名)和模块资源行组成。新的语法允许在模块名称和行的其余部分之间使用分隔符(冒号和可选空格),建议避免冲突。

*
FvwmPager: WindowBorderWidth 1

*
FvwmButtons-TopRight: Geometry 100×100-0+0

*
FvwmButtons-Bottom: Geometry +0-0

DestroyModuleConfig module_config

删除模块的配置条目,以便可以输入新的配置行,有时这也是回退到之前的模块设置的唯一方法。使用该命令这将改变模块在fvwm会话期间运行的方式,而无需重新启动。部分名称中也可以使用通配符。

新的非冲突语法允许在模块名称和行的其余部分之间使用分隔符(冒号、可选空格),在这种情况下,模块名称(或别名)不能有通配符:

DestroyModuleConfig FvwmButtons*


DestroyModuleConfig FvwmForm: Fore


DestroyModuleConfig FvwmIconMan: Tips*

比如:DestroyModuleConfig FvwmIconMan: Tips*的FvwmIconMan不能带有通配符。

KillModule modulename [modulealias]

Causes the module which was invoked with name modulename to be killed. The name may include

wildcards. If modulealias is given, only modules started with the given alias are killed.

# kill all pagers

KillModule FvwmPager

Module FvwmEvent SoundEvent

KillModule FvwmEvent SoundEvent

Module modulename [moduleparams]

指定一个应该生成的有可选参数的模块。目前有几个模块,包括FvwmButtons,FvwmEvent,FvwmForm,FvwmGtk,FvwmPager,FvwmScript,他们支持别名。如果应该生成模块的多个实例,则别名很有用。别名可以使用*语法单独配置。要使用别名为MyForm来启动模块FvwmForm,可以使用以下语法:

Module FvwmForm MyForm

当前可用的模块(包含在fvwm中的)有:

  • FvwmAnimate(当窗口被图标化或f反图标化时,产生动画效果);
  • FvwmAuto(一个自动提升模块);
  • FvwmBacker(当你改变桌面时改变背景);
  • FvwmBanner (显示一个漂亮的XBM,XPM,PNG,SVG);
  • FvwmButtons(可定制的工具栏);
  • FvwmCommandS(与shell的FvwmCommand客户端一起使用的命令服务器);
  • FvwmConsole(直接执行fvwm命令);
  • FvwmCpp(使用cpp预处理配置文件);
  • FvwmEvent(触发各种事件);
  • FvwmForm(调出对话框)
  • FvwmIconMan(一个灵活的图标管理器);
  • FvwmIdent(获取窗口信息);
  • FvwmM4(用m4预处理你的配置);
  • FvwmPager(一个迷你版本的桌面);
  • FvwmPerl(Perl的操纵器和预处理器);
  • FvwmProxy(通过使用小代理窗口来定位和控制隐藏的窗口);
  • FvwmScript(另一个强大的对话框工具包);

这些模块有自己的手册页。当然还有一些其他的模块:FvwmDebug(帮助调试fvwm),FvwmDragWell(拖放到的地方),FvwmGtk(调出GTK菜单和对话框),FvwmIconBox(如mwm IconBox),FvwmRearrange (to rearrange windows),FvwmSave(将桌面状态保存为.xinitrc风格),FvwmSaveDesk(将桌面状态保存在fvwm命令中)

模块可以是短暂的临时程序,或者像FvwmButton一样可以在X会话期间一直存在。如果可能,在重新启动和退出之前,模块将由窗口管理器终止。请参阅每个模块的介绍部分。如果modulename与所有fvwm命令不同,则可以省略Module关键字。