FvwmAuto
名称(NAME):
FvwmAuto -Fvwm 自动提升(auto-raise)模块。
概要(SYNOPSIS):
FvwmAuto 只能被 fvwm 调用(fork),不能从命令行启动。
描述(DESCRIPTION):
FvwmAuto 常常用来自动提升焦点窗口。
调用(INVOCATION):
Module FvwmAuto Timeout [-passid] [-menter|-menterleave|-mfocus] [EnterCommand [LeaveCommand]]
AddToMenu Modules
+ "Auto Raise (300 ms)" Module FvwmAuto 300
+ "Auto Raise/Lower" Module FvwmAuto 300 "Silent Raise" "Silent Lower"
Timeout 参数是必须的,单位为毫秒,任何一个大于0的正整数都是有效的。它指定在这个命令执行前,窗口必须保留输入焦点多长时间。
如果指定 -passid 选项,刚刚进入或离开的窗口的id被附加到这个命令上发送给fvwm,它能被fvwm的 WindowId 命令使用。
选项-menter,-menterleave,和-mfocus只能使用一个,如果是-mfocus模式,FvwmAuto 提升焦点窗口。如果是-menter模式,当鼠标指针进入一个窗口时,FvwmAuto提升指针下面的窗口。在鼠标指针进入新窗口前,LeaveCommand 在指针下面的窗口上执行。当指针离开一个窗口并进入根窗口时,EnterCommand 也被执行,但没有窗口供操作。-menterleave模式的工作方式类似于-menter模式,但是在鼠标指针离开一个窗口而且还没有进入一个新的窗口时,LeaveCommand也被执行。后面的两种模式当窗口不接受焦点时非常有用。
注意:-menterleave模式可以和一些应用的弹出窗口交互。一个例子是Ghostview的zoom菜单,不用担心,这只是Ghostview的一个bug。
EnterCommand 和 LeaveCommand是可选的。EnterCommand在窗口得到输入焦点Timeout毫秒后执行,LeaveCommand在窗口失去焦点Timeout毫秒后执行。注意,你应该在命令前一直使用'Silent'关键字。如果你忘记它,fvwm会自动把"Silent"加在这个命令上。如果没有添加这个前缀,在命令被fvwm处理前窗口已经死掉时,fvwm将会向你请求一个窗口来进行操作。
EnterCommand 默认为"Silent Raise",但其它一些fvwm函数也是可以的。可以进行下面的试验:
Module FvwmAuto 0 Nop "Silent Lower"
Module FvwmAuto 0 Nop "Silent Iconify"
下面是自动提升 ClickToFocus 窗口的例子:
Style * ClickToFocus
FvwmAuto 0 -menter "Silent Raise"
下面是自动提升和降低部分窗口的例子:
启动FvwmAuto:
FvwmAuto 0 -passid -menter \
"Silent selective_raiselower raise" \
"Silent selective_raiselower lower"
加入.fvwm2rc:
AddToFunc selective_raiselower
+ I WindowId $1 (FvwmIconMan) $0
+ I WindowId $1 (FvwmButtons) $0
+ I WindowId $1 (xclock) $0
下面是一个更复杂的例子:(有三个FvwmAuto 正在运行)
DestroyFunc RestoreIconified
AddToFunc RestoreIconified
+ I Current (Iconic) Iconify false
DestroyFunc RegisterFocus
AddToFunc RegisterFocus
+ I Exec date +"%T $n focused" >>/tmp/focus-stats.txt
DestroyFunc RegisterUnfocus
AddToFunc RegisterUnfocus
+ I Exec date +"%T $n unfocused" >>/tmp/focus-stats.txt
KillModule FvwmAuto
Module FvwmAuto 250 Raise Nop
Module FvwmAuto 800 RestoreIconified Nop
Module FvwmAuto 0 RegisterFocus RegisterUnfocus