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

全部博文(222)

文章存档

2010年(222)

分类: LINUX

2010-08-14 09:48:10


现在你已经搞定了第一份 fvwm2rc 配置文件,而且充分领略了配置语法,下面就让 我们更加深入地了解一些专题,从而给你的桌面带来更多的特性。在接下来的几页里, 我会给出些在我的桌面上使用的小点缀,如果喜欢的话,你可以将它们整合至自己的桌 面。我用到的一些东西需要你装有 ImageMagick 工具。如果还没装过这套工具,我建议 你现在就去装上,因为它们实在是太棒了!

真正有用的用于创建更复杂函数的工具,就是利用 shell,可以用 'ExecUseShell / bin/bash' 命令设置 FVWM 所用的 shell,通过 PipeRead 实现。PipeRead 所做的就是 从 shell 标准输出获取内容,并将它用于配置 FVWM。这将允许你使用 shell 脚本(甚 至是其它能在 shell 中运行的脚本或程序)的输出进一步自定义 FVWM。以下面的例子 来说明这是如何工作的,如你写了个简单的脚本,它会输出一些你想包含在 fvwm2rc 文 件中的语法,然后你可以在配置文件中写上 'PipeRead "simple_script"' 来使用它。

比如我们想做些事情。首先建个函数,它能从所有位于 wallpaper 目录中的 .png 文件中生成一个 WallPaperMenu,wallpaper 目录由环境变量 $[fvwm_wallpaper] 指定 。注意,我用 fvwm-root 设定 X 的墙纸,fvwm-root 既能用 .xpm 文件也能用 .png 文件。由于我更倾向于使用 .png 文件,因此所有的文件都被转换为 .png 格式。如果 你还想愿意用 .jpg 格式的文件,你需要修改这个脚本。接下来给出我所用的三个函数 ,它们要用于 wallpaper 菜单和背景设置。

DestroyFunc BuildWallPaperMenu
AddToFunc BuildWallPaperMenu
+ I Exec rm $[fvwm_icon]/wallpaper/*.png
+ I PipeRead 'for i in $[fvwm_img]/wallpaper/*.png; \
do convert -scale 64 $i \
"$[fvwm_icon]/wallpaper/`basename $i`"; done && echo Nop'
+ I Exec rm $[fvwm_home]/WallpaperMenu
+ I Exec echo "DestroyMenu FvwmWallpaperMenu" > \
$[fvwm_home]/WallpaperMenu
+ I Exec echo "AddToMenu FvwmWallpaperMenu \"Wallpapers\" Title" >> \
$[fvwm_home]/WallpaperMenu
+ I PipeRead 'for i in $[fvwm_img]/wallpaper/*.png; \
do echo "AddToMenu FvwmWallpaperMenu \
\"`basename $i`%wallpaper/`basename $i`%\" \
FvwmChangeBackground \"`basename $i`\"" \
>> $[fvwm_home]/WallpaperMenu; done && echo Nop'
+ I Read $[fvwm_home]/WallpaperMenu

DestroyFunc FvwmChangeBackground
AddToFunc FvwmChangeBackground
+ I Exec fvwm-root --retain-pixmap $[fvwm_img]/wallpaper/$0
+ I Exec echo "fvwm-root --retain-pixmap \
$[fvwm_img]/wallpaper/$0" > $[fvwm_home]/cfg/background.cfg

DestroyFunc InitWallpaper
AddToFunc InitWallpaper
+ I Exec source $[fvwm_home]/cfg/background.cfg

当调用 BuildWallPaperMenu 函数时,它所做的第一件事就是删除所有自上次运行以 来的旧图标。然后,它从每个 $[fvwm_wallpaper] 目录中的 .png 文件中,用 ImageMa gick 中的 convert 命令创建一个图标。接下来,用 FVWM 语法创建菜单并将它写入 $[ fvwm_home]/WallpaperMenu 文件。最后,读入这个新建的文件,这会新建一个可被 FVW M 使用的叫 FvwmWallpaperMenu 的菜单。我喜欢把所有东西都写入一个 WallpaperMenu ,这样我就只要在启动时,把 'Read $[fvwm_home]/WallpaperMenu' 加入 StartFuncti on 中就能创建所需菜单了。或者在 fvwm2rc 配置的 menu 部分中直接写上那条命令。 如果我在 $[fvwm_wallpaper] 目录中加了新的墙纸,我所要做的只是再次运行这条命令 ,它会生成新的 FvwmWallpaperMenu。同时请注意,我还设置了 FvwmChangeBackground 函数,如果你在所选墙纸上点击的话就会变更墙纸;然后,我将所变更的墙纸写入一个 配置文件。这么做的原因是当我从 InitFunction 函数中运行 InitWallpaper 时,它就 会用我上一次选中的墙纸。

在我用 FVWM 的日子里,我收藏并修改了许多脚本来帮助自定义 FVWM 设置,使之合 乎我的要求。自始至终,我将在高级主题部分展示其中的很大一部分(绝大多数是函数 和脚本),它们被我碰巧获得并按我的喜好进行过修改。我不能保证在其它机器上也有 效,但希望它们能给你些启示,让你能为自己的 FVWM 功能。我已经将这一 主题分解为三个部分,祝你愉快!

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