分类:
2007-05-22 14:29:10
FvwmButtons 可能是 FVWM 中最全面的一个模块了。你可以做出任何形式的 'Dock' 和 'Panel',外加它们都能用上透明模板。Taviso 写了一篇 FvwmButtons 简介,能在 找到。下 面的几个配置例子能让你看到使用 FvwmButtons 的精彩要素。
第一个例子,我创建了一个透明的圆角 'Dock',包含了一个脚本用来建立一个简单 的小时钟
##### |
开始我先为 DockButtons 设置一个默认样式,并建了两个色彩模板。不同于其它色 彩模板的地方在于我用了 'Shape' 选项,用该选项后它会以一张 xpm 图像的形状来描 绘 button 的外观。为做到这一点,我建了个透明的 xpm 文件(如下所示),用图像的 透明部分来描绘窗口(按钮)的外观。要想了解更多的内容,请看 FvwmThemes 手册页, 以及查找 'Shape', 'TitleShape' 还有 'AspectShape'。
你应该在 DockButtons 注意到一个东西,'' 小程序。它是用 'FvwmScript' 模块来实现的,这个模块可用于建立图形界 面。 DigitalClock 脚本所做的仅是把 'date "+%b %e, %R"' 的输出显示到窗口上。这 个脚本能接受一个参数,告诉脚本用哪个色彩模板。然后,我将这个窗口吞入(Swallow) DockButtons。这真是个好功能,因为你可以让 FvwmButtons 吞入许多程序,甚至是那 些不可入坞的程序。在这里,我 swallow DigitalClock 脚本的输出,包括日期和时间, 用到了发给脚本的色彩模板。
下面是我自己的 FvwmButtons,涵盖了时间,几个我最喜欢的程序的快速启动按钮, 一个被吞入的 FvwmPager, xosview 系统监视器,一个从 lm-senors 获取输出的 Fvwm Script 。
Style "UkkostaButtons" !Title, !Handles, Sticky, WindowListSkip, \ |
这些按钮拥有了我想在桌面显示的每样东西。在最上方,我显示了电脑名和时间,跟 着一组快速启动按钮。下面 swallow 一个 FvwmPager,以便我看到当前打开的是哪个窗 口。在 pager 后面是一组用到的监视器。Xosview 是一组能以图形条的方式显示当前状态的系统监视器。为设置它们, 我首先关闭了 文件中默认的监视器。然 后为每个我想要 xosview 显示的监视器调用 swallow 。如我的 'cpumon' 就以 "Swallow(UseOld) "cpumon" `Exec exec xosview -title cpumon +cpu`" 运行。以上所做的就是用让 FvwmButtons swallow(并使用,如果存在)这个叫 cpumon 的程序。然后启动 xosview,它被要求以 cpumon 作为标题,并打开 cpu 监控。 这里,我用上了四个监控器 cpu、内存、磁盘、网络。在按钮的最下面,我 swallow 另 一个叫 '' 的 FvwmScript,它能从 lm-sensors 命令中获取输出,并将它写入 UkkostaButtons。 这里 有张样图能让你了解这些按钮看起来会是什么样。
最后一个例子,我会与你分享一组来自 的函数,它们已被提交到 fvwm 邮件列表,而且我已进行过改动。这 些函数在 2.5.10 中工作得非常出色,尽管有点小停顿。请注意,由于这些函数已被 提交过了,因此 FVWM CVS 树中的一个新补丁已经有 FvwmButtons 的 HoverIcon 和 PressIcon 支持了。我比较喜欢这个视觉效果,而不是只在鼠标滑过或点击时切换图标。 原因在于,这样做实际上生成一个新的透明 FvwmButton 悬浮于当前按钮之上,而又不 受制于原来的按钮位置。如此说来,让我们看一下这组函数。
##### |
你所要做的就是从 StartFunction(或者 fvwm2rc 文件)中为每个你想出现在 dock 中的图标调用 CreateDock 就行了。如你所见,上面的 CreateDock 函数有 10 个参数, 它们指定了大小,图标以及你想绑定到按钮的动作。比如说,你想建一个拥有两个图标的 dock,一个在另一个的上方。你要做的就是为两个 dock 分别调用 CreateDock 函数, 然后用 geometry 选项使两个恰好叠在一起。如我在 StartFunction 中加了如下两行
+ I CreateDock '10' '56x56-74+62@1' '48x48/firefox.png' '64x64/firefox.png' '-20' '-30' 'FvwmFireFox' 'Nop' 'Nop' '64x64' |
这创建了两个 Dock,编号 10 和 11。然后我在其中一个 Dock 上滑动鼠标,它会先 用 代替当前的图标,再生成一个拥有 大图标的临时坞。下面的三张图显示了这样的效果是怎么回事的。取决于你的 cpu 速度, 这可能会有点小小的停顿,但不管怎么说我还是觉得这看起来棒极了!
最后提请注意,要让以上所有这些东西起作用都要通过 StartFunction 来设置。因 此如果你不在 StartFunction 启动时调用这些函数的话,你必须再运行 StartFunction 让它们生效