Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346660
  • 博文数量: 222
  • 博客积分: 9349
  • 博客等级: 中将
  • 技术积分: 2135
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 13:45
文章分类

全部博文(222)

文章存档

2010年(222)

分类: LINUX

2010-08-14 09:38:30


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'。

阅读(738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~