编译选项(COMPILATION OPTIONS)
Fvwm有大量的编译选项。如果使用某个命令或特点时有麻烦,请确认在编译时支持已经支持它。可选的特点在编译时生成的config.h文件里描述。
图标和图像(ICONS AND IMAGES)
Fvwm可以加载.xbm、.xpm和.png图像。XBM图像是单色的。Fvwm总是能够显示XBM文件。XPM和PNG格式是彩色图像(color images)。是否能显示XPM或PNG图标和图像取决于编译时得选项。参看INSTALL.fvwm文件获取更多信息。
编译时添加SHAPE选项能使fvwm显示spiffy shaped图标。
模块(MODULES)
模块是通过管道跟FVWM通信的独立程序,用户能够写自己的模块来实现一些另类的操作。
为了能够设置两个和fvwm通信的管道,模块必须由FVWM spawned。这两个管道在模块启动的时候就已经打开,管道的文件描述符作为命令行参数提供。
在X 会话(X session)期间,fvwm可以在任何时候通过 Moudle 命令启动模块。模块能够在整个X 会话期间存在,也可以在完成一个单个的任务之后退出。如果fvwm退出的时候模块仍然是活动的,fvwm需要关闭通信管道并等待一个来自模块的SIGCHLD信号,表明模块已经检测到管道关闭并已经退出了。如果模块未能检测到管道关闭,则fvwm在等候大概30妙后退出。同时可以运行的模块的数量由操作系统同时可以打开的文件数量决定,通常在60到256之间。
模块发送命令到fvwm命令引擎(fvwm command engine)。某些辅助信息也会被发送。细节请参考MOUDLE COMMANDS部分。
ICCCM兼容(ICCCM COMPLIANCE)
Fvwm力图去兼容ICCCM 2.0。更多信息请查看。另外,ICCCM规定应用程序接受任何按键都是可能的,这与fvwm以及其它大多数窗口管理器中使用的键盘快捷键方式不一致。特别地,在fvwm和另外一个运行在Xnest(运行在一个窗口里的嵌套X server)内的fvwm间不能使用同样的快捷键方式。同样的问题在鼠标绑定上也是存在的。
ICCCM规定拥有下面属性的窗口
WM_HINTS(WM_HINTS):
Client accepts input or input focus: False
不应该由窗口管理器分配键盘输入焦点。这些窗口能够自己获得输入焦点。但是很多设置了这个属性的应用仍然期望窗口管理器为它们分配键盘焦点,因此fvwm提供了一种窗口风格,Lenience,允许fvwm忽略这个ICCCM规则。不过即使使用这个窗口风格,也不能保证应用能够接受到焦点。
ICCCM 1.1和ICCCM 2.0之间的不同包括,从一个正在运行的ICCCM 2.0兼容的窗口管理器接管的能力,因而
fvwm; vi ~/.fvwm/config; fvwm -replace
模拟了Restart命令,但并不完全一样,因为在窗口管理器作为最后一个客户端(client)启动的情况下(.Xclients 或 .Xsession文件里设置),杀死先前运行的窗口管理器可能会终止你的X会话。
更深层次的区别是对client-side colormap installation和the urgency hint的支持。客户端程序能够在窗口的WM_HINTS属性里设置这个提示(hint),并期待窗口管理器去引起用户对这个窗口的注意。Fvwm重新定义了两个函数来达到这个目的:“UrgencyFunc”和“UrgencyDoneFunc”, 它们在这个标志被设置或清除的时候运行。它们默认的定义是:
AddToFunc UrgencyFunc
+ I Iconify off
+ I FlipFocus
+ I Raise
+ I WarpToWindow 5p 5p
AddToFunc UrgencyDoneFunc
+ I Nop
GNOME兼容(GNOME COMPLIANCE)
Fvwm力图去兼容GNOME(版本1)。GNOMEIgnoreHints 可以用来禁止部分或所有窗口的GNOME hint。
EWMH(EXTENDED WINDOW MANAGER HINTS)
Fvwm力图去兼容EWMH:以及这个规范的一些扩展。这允许fvwm与KDE version>=2、GNOME v2以及其它遵守这个规范的应用(一些基于GTK+2的应用)一起工作。遵守这个规范的应用被称作ewmh兼容应用(ewmh compliant applications)。
可以使用以EWMH为前缀的 style 和 command 配置这个支持。
对于Key,PointerKey,Mouse和Stroke命令有一个新的上下文(Context)'D',它适用于桌面应用(比如kdesktop和Nautilus桌面)。
当一个遵守规范的任务栏要求fvwm激活一个窗口时(典型的是你点击任务栏上代表一个窗口的按钮时),fvwm 调用函数 EWMHActivateWindowFunc 来默认执行Iconify Off, Focus 和 Raise。你可以重定义这个函数,例如:
DestroyFunc EWMHActivateWindowFunc
AddToFunc EWMHActivateWindowFunc I Iconify Off
+ I Focus
+ I Raise
+ I WarpToWindow 50 50
将鼠标指针wrap到窗口中央。
EWMH引入了工作域(Working Area)的概念。不加ewmh支持,工作域是整个可见屏幕(或者你的所有屏幕,如果你使用多屏显示或使用Xinerama)。遵守这个规范的应用(比如一个面板(panel))能够请求在屏幕的边缘预留空间。这种情况下,工作域是整个可见屏幕减去这些预留的空间。如果面板能够通过点击按钮隐藏,工作域不会改变(因为你能够在任何时候弹出这个面板),但是动态工作域(Dynamic Working Area)被更新:被面板预留的空间被删除(如果你弹出面板它将再次增加)。动态工作域可以当fvwm放置或最大化窗口时使用。为了知道一个应用是否预留有空间,你可以在终端里输入命令“xprop | grep _NET_WM_STRUT”然后使用鼠标选择这个应用,如果出现有四个数字,它们就表示这个应用的预留空间,正如 EwmhBaseStruts 命令里解释的。
MWM兼容性(MWM COMPATIBILITY)
Fvwm提供了模拟Motif 窗口管理器(Mwm)的一些选项。细节请参考Emulate命令以及Style和MenuStyle命令的Mwm相关选项。
OPEN LOOK和XVIEW兼容性(OPEN LOOK and XVIEW COMPATIBILITY)
Fvwm支持所有的Open Look修饰hints(除了pushpints)。使用任何这样的应用,都需要添加下面的语句到你的配置文件里:
Style * OLDecor
大多数(或许所有)Open Look应用都有一种奇怪的处理键盘焦点的方式,尽管fvwm和它们一起工作很好,你仍然可能遇到一些问题。推荐对所有应用使用NeverFocus焦点策略和NoLenience风格(窗口仍将得到焦点):
Style NeverFocus, NoLenience
但是为了避免你不能使用那个焦点策略,你能够尝试使用下面的方式之一:
Style MouseFocus, Lenience
Style SloppyFocus, Lenience
Style ClickToFocus, Lenience
M4预处理(M4 PREPROCESSING)
M4预处理由fvwm的一个模块处理。更多的细节请参看FvwmM4手册。简而言之,如果你希望fvwm解析你的m4文件,请在你的~/.fvwm/config文件里使用FvwmM4取代Read命令,并启动fvwm。
fvwm -cmd "FvwmM4 config"
CPP预处理(CPP PREPROCESSING)
Cpp是C语言预处理器,借鉴m4预处理(m4 pre-processing),fvwm提供了cpp处理(cpp processing)。重读上面的M4部分,并用"cpp"取代"m4"。
自动提升(AUTO-RAISE)
通过使用auto-raise模块(FvwmAuto),收到焦点或收到焦点一些毫秒后,窗口能够自动提升。
配置文件(CONFIGURATION FILES)
配置文件用来描述鼠标和按钮绑定(mouse and button bindings),颜色,虚拟显示尺寸(virtual display size),和相关的项。典型的初始配置文件是config(或.fvwm2rc)。通过使用Read指令,读取你自定义的配置文件是很容易的。
以"#"开始的行被忽略,以"*"开始的行应该是模块配置指令(而不是fvwm自己的配置指令)。类似于在shell脚本里的换行,在配置文件里也可以通过反斜线符号(backslash)来换行,所有加上这个特点的行被当作一行对待。
Fvwm不区分配置命令(configuration command)和操作命令(action command)。
已经提供的配置(SUPPLIED CONFIGURATION)
一个示例配置文件system.fvwm2rc随着fvwm发布版提供。它有很详细的注释,可以基于它进行修改。可以将它复制为/usr/local/share/fvwm/config文件。
可选地,fvwm内置的菜单(没有发现配置文件时附加的)有创建初始配置文件的选项。
如果你刚开始使用fvwm,可以尝试fvwm-themes包,它很好地演示了fvwm的功能。