FVWM 能在配置文件中任何地方使用函数,我仅在此提一下函数的基本语法,然后再给 出些基本函数,想要更复杂的功能函数请看部分
上路前,让我们看一下有关函数的基本骨架。我把它放在下面的注释框内,你可以将它 粘贴到配置文件中去,以便当你忘记时提醒你函数是怎么起作用的。
##### # # DestroyFunc FuncName # AddToFunc FuncName # + I (立刻执行) # + C (点击时执行) # + D (双击时执行) # + H (按住时执行) # + M (移动时执行) # ###########
|
如你所见,你要做的第一件事就是用 DestroyFunc 来清除已经生效的有关函数。然后 把要函数做的事放到 AddToFunc 列表中去,以上这些事可分配给不同的鼠标事件。现在, 当你在 FVWM 中调用函数时,你可以给它发送各种各样的参数,如:可以像这样 'FuncName "$0" "$1" "$2" "$3" "$4" '来调用上面的函数,$0-$4是传递给函数的参数,用于决定 函数执行的结果。考虑以下列表中的基本函数
##### # Basic Functions ########### DestroyFunc FvwmDeleteOrDestroy AddToFunc FvwmDeleteOrDestroy + H Nop + M Nop + C Delete + D Destroy
DestroyFunc FvwmIconifyOrShade AddToFunc FvwmIconifyOrShade + C Iconify + D WindowShade
DestroyFunc FvwmMaximize AddToFunc FvwmMaximize + H Nop + M Nop + C Maximize $0 $1
DestroyFunc FvwmMoveOrIconify AddToFunc FvwmMoveOrIconify + M Move + D Iconify
DestroyFunc FvwmWindowShade AddToFunc FvwmWindowShade + D WindowShade $0
|
第一个函数 FvwmDeleteOrDestroy,如果鼠标处于按下或移动状态时,它不会做任何事。单击时,删除活动窗口,而双击会销毁活动窗口。第二个函数 FvwmIconifyOrShade,在 单击时图标化窗口而双击时卷起窗口。FvwmMaximized 函数能接受两个参数以判断如果最 大化窗口。例如你可以 'FvwmMaximize 100 100',这会让窗口在水平和垂直方向上100% 的充满屏幕;而 'FvwmMaximize 100 0' 会在水平方向上最大化窗口,垂直方向不变。 当鼠标移动时,FvwmMoveOrIconify 函数能够移动当前窗口,双击时图标化窗口。FvwmWindowShade 卷起(FvwmWindowShade True)或放下(FvwmWindowShade False)当前窗口。如 果不带任何参数的话,FvwmWindowShade 会卷起正常窗口,而放下已卷起的窗口。
下一步,我会用函数来驱动我的所有程序,这样用的时候我只要调用函数就行了。这些 函数比较简单,但它们使事情变得更富有效率。样例函数:
##### # Program Launching Functions ########### DestroyFunc FvwmXTerm AddToFunc FvwmXTerm + I Exec exec xterm
DestroyFunc FvwmATerm AddToFunc FvwmATerm + I Exec exec aterm
DestroyFunc FvwmGVim AddToFunc FvwmGVim + I Exec exec gvim
DestroyFunc FvwmGimp AddToFunc FvwmGimp + I Exec exec gimp-2.0
DestroyFunc FvwmFireFox AddToFunc FvwmFireFox + I Exec exec firefox
DestroyFunc FvwmIrssi AddToFunc FvwmIrssi + I Exec exec aterm -e irssi
DestroyFunc FvwmXmms AddToFunc FvwmXmms + I Exec exec xmms
DestroyFunc FvwmViewManPage AddToFunc FvwmViewManPage + I Exec exec xterm -fg White -bg DarkBlue -g 80x40 -fn 7x14 -fb 7x14bold \ -n "Manual Page - $0" -T "Manual Page - $0" -e man "$0"
|
第一个函数不言自明,最后一个函数以 man 页作为参数并显示该页,例如你可以这样 'FvwmViewManPage fvwm'来调用该函数,它会弹出 fvwm 的手册页。你应该注意看上面最 后几行的语法。在倒数第二行与最后一行间有个 '\',这使上下两行连接在一起,这样 FVWM 会把最后两行认为是一个整行。
看看这三个特殊函数,'StartFunction', 'InitFunction' 'RestartFunction'。StartFunction 在每次 FVWM 启动时执行,而当第一次初始化 FVWM 时 InitFunction 跟在 StartFunction 后面执行一次。当 FVWM 重启时,RestartFunction 跟在 StartFunction 后面执行。样例:
##### # Startup Functions ########### DestroyFunc StartFunction AddToFunc StartFunction + I Module FvwmTaskBar + I Module FvwmPager 0 2 + I Module FvwmButtons MyButtons
DestroyFunc InitFunction AddToFunc InitFunction + I Exec exec xscreensaver + I Exec exec fvwm-root -r $[fvwm_wallpapers]/background.png + I FvwmXmms + I FvwmATerm
DestroyFunc RestartFunction AddToFunc RestartFunction + I Nop
|
启动后,fvwm 紧接着导入三个模块:FvwmButtons, FvwmPager 和 FvwmTaskBar。第一次 启动 FVWM 时它会运行 xscreensaver 设置背景,然后运行 xmms 和 aterm。重启 FVWM 时,除了运行一次 StartFunction 外,它什么都不干。
可以很细致地构造出一些函数以增强桌面的可用性。函数也能带着任意个参数($0,$1, $2,$3,等)一起用,而且只要基于不同的鼠标事件也能将其中一些功能合并。能给函数起 任意一个名字,只要不是被 FVWM 保留的功能名(如:Nop,Delete,Destroy,Restart,Exec ,等)
这里有些稍微复杂点的函数,如下:
##### # Screenshot Functions (uses ImageMagick) ########### DestroyFunc FvwmWindowScreenshot AddToFunc FvwmWindowScreenshot + I ThisWindow (!Shaded !Iconic Iconifiable) \ Exec import -window $[w.id] -quality 100 -silent \ "$[fvwm_home]/screenshot/screenshot-`date +%F[%R]`.$[w.id].jpg"
DestroyFunc FvwmDesktopScreenshot AddToFunc FvwmDesktopScreenshot + I Exec sleep $0; import -window root -quality 100 -silent \ "$[fvwm_home]/screenshot/screenshot-`date +%F[%R]`.jpg"
##### # XRoach Invasion ########### DestroyFunc XRoachInvasion AddToFunc XRoachInvasion + I Exec exec xroach -roaches 5 -rc Cyan -speed 17 + I Exec exec xroach -roaches 3 -rc Red -speed 15 + I Exec exec xroach -roaches 7 -rc Green -speed 10 + I Exec exec xroach -roaches 3 -rc Blue -speed 20 + I Exec exec xroach -roaches 1 -rc Black -speed 30 + I Exec exec xroach -roaches 1 -rc White -speed 40
DestroyFunc XRoachExterminate AddToFunc XRoachExterminate + I Exec killall xroach
|
第一组函数能用imagemagick 包中的 import 工具抓图,可以是整个桌面,也可以是 单独一个窗口。要抓单独一个窗口,你需要这样来调用函数 'Pick (CirculateHit) FvwmWindowScreenshot',让会显示一个十字指针让你选择你想抓图的窗口。第二个函数会在 '$0' 秒延时后抓取整个桌面,这在抓图开始前给你一定时间去打开菜单,棒极了!例如 'FvwmDesktopScreenshot 5' 会在5秒以后开始抓图。 第二组函数仅是个古老的 X 玩具,它会搞出很多不同色彩的蜚蠊(有点像德国小蠊的小 虫)快速爬动,但会躲在窗口后面。你既能让这些小虫入侵,也能消灭它们。要成功运行这 些函数的话,你需要安装有 'xroach'。