LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5156|回复: 32

FVWM Beginner Guide [翻译]

[复制链接]
发表于 2007-5-22 17:15:05 | 显示全部楼层 |阅读模式
这是我翻译的 FVWM Beginner Guide,在本版置顶贴中有相关的英文链接。
http://www.zensites.net/fvwm/guide/index.html
有任何问题有建议,请联系我。地址在 angelerosster@gmail.com
[size=+2]http://fvwm.dlike.net/现在不可以用了!
[size=+2]svn checkout http://i18n-zh.googlecode.com/svn/trunk/l10n/guide   fvwm-guide
[size=+2]这样可以得到所有的内容,放在本地看
  1. FVWM 入门指南
  2.     by Jaimos F Skriletz
  3. translation by Nickel Cobalt(zh_CN) [email]angelerosster@gmail.com[/email]
  4. 索引
  5.    1. 简介
  6.    2. 全局设置
  7.    3. 函数
  8.    4. 按键绑定
  9.    5. 窗口装饰
  10.    6. 菜单
  11.    7. 模块
  12.          1. FvwmTaskBar
  13.          2. FvwmPager
  14.          3. FvwmButtons
  15.    8. 结果预览
  16.    9. 附录
  17.          1. 高级主题
  18.                1. 函数进阶
  19.                2. 菜单进阶
  20.                3. FvwmButtons 进阶
  21.          2. 更多资源
  22.          3. GNU 自由文档协议
  23. Copyright (c) 2004 Jaimos F Skriletz
  24. 中文版权 (c) 2007 Nickel Cobalt
  25. 在自由软件基金会发布的 GNU 自由文档协议1.2版,或更新版本的框架下,允许复制、分发或修改本文;全文没有不可变更部分,没有封面文字,也没有封底文字。在“GNU 自由文档协议”一节中包含了本协议的一个副本
  26. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
复制代码
 楼主| 发表于 2007-5-22 17:16:15 | 显示全部楼层
FVWM 入门指南

FVWM(或称 Feeble Virtual Window Manager)是一个非常全面的X系统桌面(窗口)管理器。尽管这个名称有点歧义,但刚开始 FVWM 是一个原叫 TWM 的窗口管理器的分支,而且还是个简化过的代用品。 这里 有张漂亮的图表让你得以一窥FVWM家族史。 FVWM 从刚开始的一个粗陋的产品,到现在已经成为一个高度可配置性的窗口管理器。想想你需要桌面(窗口)管理器做的事吧,FVWM 有可能会做得更好。尽管‘Feeble’这个词的意思已经不再适用于目前的窗口管理器,但许多改名字的尝试,包含对‘F’的原义进行都市浪漫色彩般的诠释均告失败,而且走进了死胡同。现在最普遍的说法是:它就指 F? Virtual Window Manager,或者就是缩写 FVWM。

FVWM 是非常全面和可编程的,但是还是有很多人由于缺少 GUI 配置工具而退却了。尽管现在已经尝试着开发了一些那方面的工具,如fvwm-themes,但只靠那些工具中包含的选项还是不能轻易的建立起完整的 GUI 界面,因此最好的方面是用个性化的配置文件来配置 FVWM。这份指南的目的是帮你熟悉 FVWM 所用的配置文件的语法。指南的第一部分将一步一步地引导你建立一个简单的配置文件。我已经另外放上去配置文件的超链接,以便各位看指南时可以方便的复制、粘贴。我的目标是看指南时能随时复制、粘贴某些部分,但也能进行一点修改,按我放在那儿而你又看懂的语法,改成你自己喜欢的配置。在你按这份指南做完基本的配置后,接下来我写了份附录,包含更多的高级话题和配置,你也可以看看并把它们用到你的桌面上去。这份指南的最后是我的希望,但愿你熟悉 FVWM 并能写出自己的配置,把它变成你的窗口管理器。

指南中会试着解释我提出的绝大多数选项,但所有这些东西在FVWM MAN PAGES中有清楚详尽的解释。手册页非常冗长,但只要有关键词就能轻易的查到选项在配置文件中的用法。我会略过或跳过提到的某些配置,希望你用手册页去找我没说的具体事宜。如果你没听见我说的话就再说一遍,FVWM MAN PAGES是非常有价值的资源。

本指南是为 unstable 版的配置语法而写的,目前是 fvwm-2.5.10。我没在稳定版2.4.18中进行过测试,因此我不能肯定对它是否有效。我建议用2.5.10,尽管它号称不稳定版,但基本的功能是很稳定的,而且在使用中也没发现什么严重的错误。我也在配置中用了点半透明补丁,但只把它作为可选内容。如果你对用半透明补丁给你的菜单加上逼真的透明效果,这里有份怎么安装的说明。

所有FVWM的配置保存在单一配置文件里,通常位于 $HOME/.fvwm2rc 或 $HOME/.fvwm/.fvwm2rc。虽然用'Read'命令能把它们分割到更小的文件中去,但在这里我们只把它们放在一个配置文件中。为能把所有东西放在 $HOME/.fvwm 目录下,第一步就是建立 $HOME/.fvwm 和 .fvwm2rc 空文件。在第一次运行 fvwm 时,如果发现默认配置很丑,不要惊讶!因为很多人同意你的观点,但这是个好起点。

我在指南中用到的图片都能从这里下载。如果你想在看指南的时候用我的图片,就下载那个文件,然后解压到你的 $HOME 目录;它会创建 .fvwm 目录,包含所有我在指南中用到的图标和装饰。也可以从复制、粘贴本指南的第一部分的内容,从而生成一份 fvwm2rc 文件的拷贝。

下一步,用你最喜欢的编辑器打开 $HOME/.fvwm/.fvwm2rc 文件,FVWM 会在启动(或重启)时读取这个文件并用其中的内容建立桌面的外观。用'#'注释一行,这我们在文件头部放些注释来作为练习的起点。例如,你可以把下面这一段放在你新建的 fvwm2rc 文件中

  1. ###########
  2. #  ____________________________
  3. # (   _________________________)
  4. #  ) (__  _  _  _    _  
  5. # (   __)( \/ )( \/\/ )/\/\
  6. #  ) (    \  /  \    //    \
  7. # (___)    \/    \/\/(_/\/\_) 2.5.10
  8. #
  9. # My personal fvwm2rc file
  10. #
  11. #######################
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:17:51 | 显示全部楼层
配置 FVWM 的第一步就是全局设置,如:环境变量以及桌面的基本设定。环境变量类似于 shell 中用的那些东西,可以对变量赋值以便能在整个 fvwm2rc 文件中随时使用,这样如果你想改的话就不用去文件中每个用到的地方一个个地改了。我主要用环境变量告诉 fvwm 到哪里去找配置中要用到的各种各样的东西。

但请注意,从头到尾都用环境变量的话会引起严重问题,尤其当这些变量仅被用于保存那些每年都要有所改动的内容时尤为严重。需要详细信息的话,你可以看看 fvwm 论坛中的thread。

例如你能像下面这样建立些环境变量:
  1. #####
  2. # Set Environment variables
  3. ###########
  4. SetEnv fvwm_img $[FVWM_USERDIR]/images
  5. SetEnv fvwm_icon $[FVWM_USERDIR]/icons
  6. SetEnv fvwm_scrpt $./scripts
  7. SetEnv fvwm_wallpapers $[FVWM_USERDIR]/wallpaper
复制代码
你也可以用环境变量设定你最喜欢用的默认程序,如:
  1. SetEnv fvwm_webbrowser /usr/bin/firefox
  2. SetEnv fvwm_term /usr/bin/aterm
  3. SetEnv fvwm_mail /usr/bin/mutt
  4. SetEnv fvwm_media_player /usr/bin/xmms
  5. SetEnv fvwm_video_player /usr/bin/mplayer
复制代码
下一步是建立图片(标)目录,告诉 FVWM 去哪里找你要显示的图片(标),比如菜单或是快速启动按钮要用的图标。这有点像是 shell 的环境变量 $PATH。典型的图片目录看起来就像这样:
  1. #####
  2. # Set the image path
  3. ###########
  4. ImagePath $[fvwm_icon]:$[fvwm_icon];.png:$[fvwm_wallpapers]:+
复制代码
我把所有要用到的图标全放在 $[fvwm_icon] 目录下。之所以要连写两遍的原因是,我在后面跟了个';.png',这意味着既能用默认的 .xpm 文件,又能交替使用 .png 文件来表示图标。如果有一些共用图像放在'/usr/local/share/images'下,又或者有些$HOME/images 下的个人图片想在 fvwm 中使用的话,你可以在这里轻易地加些目录。

下一步,建立虚拟桌面。FVWM 允许你想要多少虚拟桌面就有多少,同时允许每个桌面拥有多个 Pages(页)。假定你想要3个虚拟桌面,每个又拥有3x3格9个 pages,你能用如下方法建立。
  1. #####
  2. # Virtual Desktops
  3. ###########
  4. DesktopSize 3x3
  5. DesktopName 0 Main
  6. DesktopName 1 Work
  7. DesktopName 2 Games
  8. EdgeScroll 100 100
  9. EdgeResistance 150  150
  10. EdgeThickness 1
复制代码
桌面大小决定了每个虚拟桌面上的 pages 数目,如3x3的桌面会在桌面中建立一组3x3的网格,每格代表一个页面,看起来像

       
       

       
       

       
       

然后建立3个虚拟桌面,分别命名为 Main,Work,Games(标号为0,1,2)。当你的鼠标移动到屏幕边缘时,EdgeScroll 参数设定屏幕滚动的百分比。'EdgeScroll 100 100'代表,如果把鼠标移动到屏幕边缘,整个屏幕都会滚动至下一个屏幕。EdgeResistance 设定滚动发生前需要多少'阻力'(时间延迟),而 EdgeThickness 则会设定 EdgeScroll 效果发生时与'root'窗口间的像素模糊度是多少。如果你不喜欢这种效果,可以设置'EdgeThickness 0'或'EdgeScroll 0 0'。

下一步是设定默认的鼠标和聚焦动作。如下:
  1. #####
  2. # Mouse and Focus Behavior
  3. ###########
  4. ClickTime 350
  5. MoveThreshold 3
  6. Style * SloppyFocus, MouseFocusClickRaises
复制代码
ClickTime 是在按下和松开鼠标间以毫秒计算的时间,FVWM 把这个动作看作是一次 'click'。如果超过时间,FVWM 会认为这是一个 'hold'行为。MoveThreshold 指要让 FVWM 认为这是一次 'move' 动作,鼠标所必须移动的像素。注意,所有这些东西设定你的窗口管理器的外观感受,而且在编写函数时很重要!

Styles 在整个 FVWM 中用来设定各种各样的风格,包括你想它怎么动、外观、行为等等,Styles 会被用得非常多。但作为上手,就让我们只看这一行 style。在 Style 语句中,* 是广义字符,因此 'Style *' 就是说把这句风格定义用到每个窗口上,后面跟着一串用逗号分隔的你想要的风格列表。如,我用的第一个 Style 就是 SloppyFocus,意思是当鼠标悬停于窗口上方时窗口即获得焦点(除了特殊窗口以外,如根窗口)。第二个 Style 是 MouseFocusClickRaises,意思是说如果我在获得焦点的窗口上点击,它就会升到最上面。其它 styles 还有 'ClickToFocus', 'ClickToFocusPassesClick', 'ClickToFocusPassesClickOff', 'ClickToFocusRaises' 和 'ClickToFocusRaisesOff'。所有更详细的解释请看手册页。

除了 Styles,还有一些特殊的关键字用来设定默认的桌面行为。举其中一些例子如下:
  1. EwmhBaseStruts 62 162 0 48
  2. IgnoreModifiers L25
复制代码
第一行 EwmhBaseStruts 设定不可用的屏幕区域,用法是'EwmhBaseStruts 左 右 上下'。数字代表当最大化窗口及窗口部署时给屏幕每条边预留的空白像素。这里为屏幕上的 FvwmTaskBar,FvwmPager,FvwmButtons 预留了右、左、下三处的一点空间。如果你希望窗口忽略这个设定,你可以用 EWMHMaximizeIgoreWorkingArea 选项。下一行让 FVWM 忽略某些特定的修改按键,在这里它会忽略 'Num Lock' 按键,这在很多情况下都有好处。

我在 fvwm2rc 文件中用到的其它一些 styles 如下。我不准备在这里做什么说明,只想让你看看,在配置文件中可以添加各种各样的其它选项来进一步控制 FVWM 桌面的行为。
  1. #####
  2. # Global Styles and options
  3. ###########
  4. Style * TileCascadePlacement, GrabFocusOff
  5. Style * NoPPosition, ResizeOpaque
  6. OpaqueMoveSize -1
  7. Emulate MWM
  8. HideGeometryWindow Never
  9. SnapAttraction 5 SameType Screen
  10. SnapGrid 3 3
  11. XorValue 55555
  12. Style * DecorateTransient, DontRaiseTransient
  13. Style * DontLowerTransient, StackTransientParent
  14. Style * GrabFocusTransientOff
  15. Style * WindowShadeSteps 20, WindowShadeScrolls
  16. SetAnimation  10  -.01 0 .01 .03 .08 .18 .3 .45 .6 .75 .85 .90 .94 .97 .99 1.0
  17. Style * MwmDecor, SlipperyIcon
  18. Style * IconBox screen w 15 15 -165 -15, IconGrid 3 3, IconFill right top
复制代码
下一步,我设定各类程序的具体样式。Style 命令的形式是 'Style [string] [styles]',FVWM 会比较 [string](包括广义字符'*')与窗口名称、类或者资源。你可以用 FvwmIdent 模块指出应用程序的名称、类和资源。这个例子设定了程序的特殊样式,我主要是设定和程序有关的 MiniIcon 和 Icon,但是任何 Style 选项都可以用在这些程序身上。
  1. #####
  2. # Program Styles
  3. ###########
  4. Style "*" Icon 48x48/unknown.xpm
  5. Style "XTerm" Icon 48x48/xterm.png, NoActiveIconOverride, MiniIcon mini/xterm.png
  6. Style "gvim" Icon 48x48/gvim.png, IconOverride, MiniIcon mini/gvim.png, EWMHMiniIconOverride
  7. Style "Firefox-bin" Icon 48x48/firefox.png, MiniIcon mini/firefox.png, EWMHMiniIconOverride
  8. Style "irssi" Icon 48x48/gaim.png, MiniIcon mini/irc.png
  9. Style "xmms" WindowListSkip, CirculateSkip
  10. Style "MPlayer" Icon 48x48/mplayer.png
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:20:55 | 显示全部楼层
FVWM 能在配置文件中任何地方使用函数,我仅在此提一下函数的基本语法,然后再给出些基本函数,想要更复杂的功能函数请看高级主题部分

上路前,让我们看一下有关函数的基本骨架。我把它放在下面的注释框内,你可以将它粘贴到配置文件中去,以便当你忘记时提醒你函数是怎么起作用的。
  1. #####
  2. #
  3. # DestroyFunc FuncName
  4. # AddToFunc   FuncName
  5. # + I (立刻执行)
  6. # + C (点击时执行)
  7. # + D (双击时执行)
  8. # + H (按住时执行)
  9. # + M (移动时执行)
  10. #
  11. ###########
复制代码
如你所见,你要做的第一件事就是用 DestroyFunc 来清除已经生效的有关函数。然后把要函数做的事放到 AddToFunc 列表中去,以上这些事可分配给不同的鼠标事件。现在,当你在 FVWM 中调用函数时,你可以给它发送各种各样的参数,如:可以像这样 'FuncName "$0" "$1" "$2" "$3" "$4" '来调用上面的函数,$0-$4是传递给函数的参数,用于决定函数执行的结果。考虑以下列表中的基本函数
  1. #####
  2. # Basic Functions
  3. ###########
  4. DestroyFunc FvwmDeleteOrDestroy
  5. AddToFunc   FvwmDeleteOrDestroy
  6. + H Nop
  7. + M Nop
  8. + C Delete
  9. + D Destroy
  10. DestroyFunc FvwmIconifyOrShade
  11. AddToFunc   FvwmIconifyOrShade
  12. + C Iconify
  13. + D WindowShade
  14. DestroyFunc FvwmMaximize
  15. AddToFunc   FvwmMaximize
  16. + H Nop
  17. + M Nop
  18. + C Maximize $0 $1
  19. DestroyFunc FvwmMoveOrIconify
  20. AddToFunc   FvwmMoveOrIconify
  21. + M Move
  22. + D Iconify
  23. DestroyFunc FvwmWindowShade
  24. AddToFunc   FvwmWindowShade
  25. + D WindowShade $0
复制代码
第一个函数 FvwmDeleteOrDestroy,如果鼠标处于按下或移动状态时,它不会做任何事。单击时,删除活动窗口,而双击会销毁活动窗口。第二个函数 FvwmIconifyOrShade,在单击时图标化窗口而双击时卷起窗口。FvwmMaximized 函数能接受两个参数以判断如果最大化窗口。例如你可以 'FvwmMaximize 100 100',这会让窗口在水平和垂直方向上100% 的充满屏幕;而 'FvwmMaximize 100 0' 会在水平方向上最大化窗口,垂直方向不变。当鼠标移动时,FvwmMoveOrIconify 函数能够移动当前窗口,双击时图标化窗口。FvwmWindowShade 卷起(FvwmWindowShade True)或放下(FvwmWindowShade False)当前窗口。如果不带任何参数的话,FvwmWindowShade 会卷起正常窗口,而放下已卷起的窗口。

下一步,我会用函数来驱动我的所有程序,这样用的时候我只要调用函数就行了。这些函数比较简单,但它们使事情变得更富有效率。样例函数:
  1. #####
  2. # Program Launching Functions
  3. ###########
  4. DestroyFunc FvwmXTerm
  5. AddToFunc   FvwmXTerm
  6. + I Exec exec xterm
  7. DestroyFunc FvwmATerm
  8. AddToFunc   FvwmATerm
  9. + I Exec exec aterm
  10. DestroyFunc FvwmGVim
  11. AddToFunc   FvwmGVim
  12. + I Exec exec gvim
  13. DestroyFunc FvwmGimp
  14. AddToFunc   FvwmGimp
  15. + I Exec exec gimp-2.0
  16. DestroyFunc FvwmFireFox
  17. AddToFunc   FvwmFireFox
  18. + I Exec exec firefox
  19. DestroyFunc FvwmIrssi
  20. AddToFunc   FvwmIrssi
  21. + I Exec exec aterm -e irssi
  22. DestroyFunc FvwmXmms
  23. AddToFunc   FvwmXmms
  24. + I Exec exec xmms
  25. DestroyFunc FvwmViewManPage
  26. AddToFunc   FvwmViewManPage
  27. + I Exec exec xterm -fg White -bg DarkBlue -g 80x40 -fn 7x14 -fb 7x14bold \
  28. -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 后面执行。样例:
  1. #####
  2. # Startup Functions
  3. ###########
  4. DestroyFunc StartFunction
  5. AddToFunc   StartFunction
  6. + I Module FvwmTaskBar
  7. + I Module FvwmPager 0 2
  8. + I Module FvwmButtons MyButtons
  9. DestroyFunc InitFunction
  10. AddToFunc   InitFunction
  11. + I Exec exec xscreensaver
  12. + I Exec exec fvwm-root -r $[fvwm_wallpapers]/background.png
  13. + I FvwmXmms
  14. + I FvwmATerm
  15. DestroyFunc RestartFunction
  16. AddToFunc   RestartFunction
  17. + I Nop
复制代码
启动后,fvwm 紧接着导入三个模块:FvwmButtons, FvwmPager 和 FvwmTaskBar。第一次启动 FVWM 时它会运行 xscreensaver 设置背景,然后运行 xmms 和 aterm。重启 FVWM 时,除了运行一次 StartFunction 外,它什么都不干。

可以很细致地构造出一些函数以增强桌面的可用性。函数也能带着任意个参数($0,$1, $2,$3,等)一起用,而且只要基于不同的鼠标事件也能将其中一些功能合并。能给函数起任意一个名字,只要不是被 FVWM 保留的功能名(如:Nop,Delete,Destroy,Restart,Exec ,等)

这里有些稍微复杂点的函数,如下:
  1. #####
  2. # Screenshot Functions (uses ImageMagick)
  3. ###########
  4. DestroyFunc FvwmWindowScreenshot
  5. AddToFunc   FvwmWindowScreenshot
  6. + I ThisWindow (!Shaded !Iconic Iconifiable) \
  7.   Exec import -window $[w.id] -quality 100 -silent \
  8.   "$[fvwm_home]/screenshot/screenshot-`date +%F[%R]`.$[w.id].jpg"
  9. DestroyFunc FvwmDesktopScreenshot
  10. AddToFunc   FvwmDesktopScreenshot
  11. + I Exec sleep $0; import -window root -quality 100 -silent \
  12.   "$[fvwm_home]/screenshot/screenshot-`date +%F[%R]`.jpg"
  13. #####
  14. # XRoach Invasion
  15. ###########
  16. DestroyFunc XRoachInvasion
  17. AddToFunc   XRoachInvasion
  18. + I Exec exec xroach -roaches 5 -rc Cyan -speed 17
  19. + I Exec exec xroach -roaches 3 -rc Red -speed 15
  20. + I Exec exec xroach -roaches 7 -rc Green -speed 10
  21. + I Exec exec xroach -roaches 3 -rc Blue -speed 20
  22. + I Exec exec xroach -roaches 1 -rc Black -speed 30
  23. + I Exec exec xroach -roaches 1 -rc White -speed 40
  24. DestroyFunc XRoachExterminate
  25. AddToFunc   XRoachExterminate
  26. + I Exec killall xroach
复制代码
第一组函数能用imagemagick 包中的 import 工具抓图,可以是整个桌面,也可以是单独一个窗口。要抓单独一个窗口,你需要这样来调用函数 'Pick (CirculateHit) FvwmWindowScreenshot',让会显示一个十字指针让你选择你想抓图的窗口。第二个函数会在 '$0' 秒延时后抓取整个桌面,这在抓图开始前给你一定时间去打开菜单,棒极了!例如 'FvwmDesktopScreenshot 5' 会在5秒以后开始抓图。第二组函数仅是个古老的 X 玩具,它会搞出很多不同色彩的蜚蠊(有点像德国小蠊的小虫)快速爬动,但会躲在窗口后面。你既能让这些小虫入侵,也能消灭它们。要成功运行这些函数的话,你需要安装有 'xroach'。
回复 支持 反对

使用道具 举报

发表于 2007-5-22 17:22:59 | 显示全部楼层
好帖  顶一个先 楼主辛苦了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:26:16 | 显示全部楼层
有两种类型的绑定,绑定至鼠标,或绑定到键盘。要想理解这是怎么回事,先看只拥有一个窗口,二个图标化窗口的典型屏幕。在下面的图中,注意屏幕是如何被分割成以下几部分的:R - 根窗口,I - 图标,F - 窗口边角,S - 窗口边缘,T - 标题栏,W - 程序窗口,还有0-9 这些是按钮。注意:A代表任意地方,即不管鼠标在哪里。


绑定需如此设定。你可以绑定到键盘,用'Key X Context Modifier Action',或者用'Mouse X Context Modifier Action' 绑定至鼠标。Context 是指如上所示的当前鼠标位置,Modifier 是如下任意组合:(A)ny, (C)ontrol, (S)hift, (M)eta, (N)othing, 或1-5, 代表X Modifiers mod1-mod5 (man xmodmap)。绑定的例子:
  1. #####
  2. # Basic Bindings
  3. ###########
  4. Key F1 A M Menu MenuFvwmRoot
  5. Key Tab A M WindowList Root c c NoDeskSort, SelectOnRelease Meta_L
  6. Key Super_L A A FvwmATerm
  7. Mouse 1 R A Menu FvwmRootMenu
  8. Mouse 3 R A Menu FvwmWindowOpsMenu
  9. Mouse 1 1 A FvwmDeleteOrDestroy
  10. Mouse 1 3 A FvwmIconifyOrShade
  11. Mouse 1 5 A FvwmMaximize 100 100
  12. Mouse 2 5 A FvwmMaximize 0 100
  13. Mouse 3 5 A FvwmMaximize 100 0
  14. Mouse 1 W M FvwmMoveOrIconify
  15. Mouse 1 I A FvwmMoveOrIconify
  16. Mouse 4 T A FvwmWindowShade True
  17. Mouse 5 T A FvwmWindowShade False
复制代码
从上到下的绑定分别做以下这些事:

   1. 任何地方按下 alt-f1 时显示根菜单
   2. 按下 alt-tab 时显示 WindowList - 列出运行着的程序,松开 alt 键时切换到你选中的程序
   3. 按下左边的 win 键时启动 aterm
   4. 当鼠标左键在根窗口上点击时,打开根菜单
   5. 当鼠标右键在根窗口上点击时,打开窗口选项菜单
   6. 当按钮 1 被单击或双击时删除或销毁窗口
   7. 当按钮 3 被单击或双击时图标化或卷起窗口
   8. 当鼠标按键一(左键)点击按钮 5 时,最大化窗口至充满整个屏幕
   9. 当鼠标按键二(中键)点击按钮 5 时,垂直最大化窗口
  10. 当鼠标按键三(右键)点击按钮 5 时,水平最大化窗口(译者注:鼠标按键可人为定义,因此可能不同的机器上不一样,如果你不是左撇子的话就没必要自定义默认的鼠标按键。像我有时用左手就要自定义了!;-)
  11. alt+按着左键并移动鼠标可拖动窗口,而 alt+双击会图标化窗口
  12. 将 FvwmMoveOrIconify 函数绑定至 'Icons',以便能进行移动和图标化
  13. 向上滚动两次滚轮卷起活动窗口(这个函数要求双击,因此要滚两下)
  14. 向下滚动两次滚轮放下活动窗口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:27:27 | 显示全部楼层
窗口装饰定义了窗口外观,FVWM 能用色板或位图来装饰窗口。第一个例子,看一个没有位图的简单窗口装饰,为初学者定义一些色彩模板以便设定装饰窗口的基本色彩。色彩模板能用于定义所有 FVWM 要用到的色彩。下面建立三个简单的色彩模板。
  1. #####
  2. # Window Colorsets
  3. ###########
  4. Colorset 3 fg #101060, bg #e6e7d7
  5. Colorset 4 fg Black, bg #a6a797
  6. Colorset 5 fg White, bg Black
复制代码
建立三个色彩模板,分别命名为3,4,5,都有前景色(fg)和背景色(bg)。颜色能用十六进制定义,也可引用 /etc/X11/rgb.txt 中定义的颜色。你能定义的其它颜色属性是高亮 (hi)和阴影(sh)。尽管色彩模板可以任意长度的整数编号,但由于 fvwm 用内存来保存每个用到的色彩模板,所以要让色彩模板的编号尽可能的小一点。更详细的信息请看 FvwmThemes 的手册页。

装饰能分成三个部分,TitleStyle, ButtonStyle, BorderStyle。下面建立一个简单的装饰
  1. #####
  2. # Window Decor
  3. ###########
  4. DestroyDecor MyDecor
  5. AddToDecor   MyDecor
  6. + TitleStyle LeftJustified Height 18
  7. + ButtonStyle 1 ActiveUp Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
  8. + ButtonStyle 1 ActiveDown Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
  9. + ButtonStyle 1 Inactive Vector 4 30x30@3 60x60@3 60x30@4 30x60@3 -- Flat
  10. + ButtonStyle 3 ActiveUp Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
  11. + ButtonStyle 3 ActiveDown Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
  12. + ButtonStyle 3 Inactive Vector 5 30x60@3 60x60@3 60x50@3 30x50@3 30x60@3 -- Flat
  13. + ButtonStyle 5 ActiveUp Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 -- Flat
  14. + ButtonStyle 5 ActiveDown Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 -- Flat
  15. + ButtonStyle 5 Inactive Vector 7 30x30@3 30x60@3 60x60@3 60x30@3 30x30@3 30x35@3 60x35@3 -- Flat
  16. + TitleStyle -- Flat
  17. + BorderStyle Simple -- NoInset Flat
  18. + ButtonStyle All -- UseTitleStyle
复制代码
这个装饰用 Vectors 创建了三个按钮,编号1,3,5(与按键绑定一节中窗口中的位置相同)。注意:在按钮添加到装饰之前,它必须已通过按键绑定关联过一些动作。每句跟着一个 '-- Flat' 是为了不让按钮和标题栏凸出(陷入)于窗口。Vectors 只是简单得画线。每个 vector 建立一个 100x100 的格子并拥有任意数目的用线相连的点,语法 'Vector [number of points] [[point1] [point2] ...]'。 points 以 'XxY@Z' 定义,Z 是 0-4 中任意数字,代表用于这一行的颜色( 0 - Shadow(sh), 1 - Hilight(hi), 2 - Background(bg),3 - Foreground(fg), 4 - Invisible)

这里有个更为详细的对按钮和标题栏用位图的例子
  1. #####
  2. # Ukkosta Decor
  3. ###########
  4. DestroyDecor UkkostaDecor
  5. AddToDecor   UkkostaDecor
  6. + TitleStyle LeftJustified Height 24
  7. + ButtonStyle 1 \
  8.         ActiveUp     (Pixmap $[fvwm_img]/button/close-activeup.png -- Flat) \
  9.         ActiveDown   (Pixmap $[fvwm_img]/button/close-activedown.png -- Flat) \
  10.         Inactive     (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
  11. + ButtonStyle 3 \
  12.         ActiveUp     (Pixmap $[fvwm_img]/button/iconify-activeup.png -- Flat) \
  13.         ActiveDown   (Pixmap $[fvwm_img]/button/iconify-activedown.png -- Flat) \
  14.         Inactive     (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
  15. + ButtonStyle 5 \
  16.         ActiveUp     (Pixmap $[fvwm_img]/button/maximize-activeup.png -- Flat) \
  17.         ActiveDown   (Pixmap $[fvwm_img]/button/maximize-activedown.png -- Flat) \
  18.         Inactive     (Pixmap $[fvwm_img]/button/inactive.png -- Flat)
  19. + ButtonStyle 1 - Clear
  20. + ButtonStyle 3 - Clear MwmDecorMin
  21. + ButtonStyle 5 - Clear MwmDecorMax
  22. + TitleStyle AllActive MultiPixmap \
  23.         Main AdjustedPixmap $[fvwm_img]/decor/title-main-active.xpm, \
  24.         LeftEnd AdjustedPixmap $[fvwm_img]/decor/title-leftend-active.xpm, \
  25.         RightEnd AdjustedPixmap $[fvwm_img]/decor/title-rightend-active.xpm, \
  26.         UnderText AdjustedPixmap $[fvwm_img]/decor/title-undertext-active.xpm, \
  27.         LeftOfText AdjustedPixmap $[fvwm_img]/decor/title-leftoftext-active.xpm, \
  28.         RightOfext AdjustedPixmap $[fvwm_img]/decor/title-rightoftext-active.xpm
  29. + TitleStyle AllInactive MultiPixmap \
  30.         Main AdjustedPixmap $[fvwm_img]/decor/title-main-inactive.xpm, \
  31.         LeftEnd AdjustedPixmap $[fvwm_img]/decor/title-leftend-inactive.xpm, \
  32.         RightEnd AdjustedPixmap $[fvwm_img]/decor/title-rightend-inactive.xpm, \
  33.         UnderText AdjustedPixmap $[fvwm_img]/decor/title-undertext-inactive.xpm, \
  34.         LeftOfText AdjustedPixmap $[fvwm_img]/decor/title-leftoftext-inactive.xpm, \
  35.         RightOfext AdjustedPixmap $[fvwm_img]/decor/title-rightoftext-inactive.xpm
  36. + TitleStyle -- Flat
  37. + BorderStyle Simple -- NoInset Flat
  38. + ButtonStyle All -- UseTitleStyle
复制代码
现在你已有了装饰定义,我们需要让窗口使用它,同时也要告诉窗口用哪个色彩模板。像下面这样去做吧
  1. #####
  2. # Window Styles
  3. ###########
  4. Style "*" UseDecor MyDecor
  5. Style "*" Font "xft:Sans:Bold:size=8:minspace=False:antialias=True"
  6. Style "*" BorderWidth 1, HandleWidth 1
  7. Style "*" MWMBorder, FirmBorder
  8. Style "*" Colorset 4
  9. Style "*" HilightColorset 3
  10. Style "*" BorderColorset 5
  11. Style "*" HilightBorderColorset 4
复制代码
这些样式字串告诉每个窗口用 MyDecor 装饰,同时设置窗口用的字体、边宽、色彩设定(高亮)、边缘色彩设定(高亮)。我喜欢所有窗口看上去一致,但是也有人喜欢为特殊的程序用上不同的色彩模板和装饰。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:28:14 | 显示全部楼层
所谓"菜单"是指从按键绑定或任务条的开始菜单弹出的列表项目。菜单可用于列出程序,甚至能够被动态创建以便于列出目录内容、最近用过的程序等内容。要做的第一件事就是用设定菜单要用的色彩模板。绝大多数菜单需要两个色彩模板,一个用于主菜单,另一个用于当前激活项目。一个简单的双色彩模板的设置如下:
  1. #####
  2. # Menu Colorsets
  3. ###########
  4. Colorset 7 fg Black, bg #e6e7d7, sh Black, hi #202070
  5. Colorset 8 fg DarkRed, bg #e6e7d7, sh Black, hi #202070
复制代码
在 fvwm 2.5.10 中可以对菜单使用 RootTransparent 色彩模板。这些模板会把背景做为菜单的位图,这样菜单就会显得透明了,但不会显示在菜单下的任何窗口。这种模板的例子:
  1. Colorset 7 RootTransparent, fg Black, bg average, sh Black, \
  2.   hi #202070, Tint White 60, bgTint White 60
复制代码
这是一个 RootTransparent 模板,其中 Tint 和 bgTint 是菜单的色调,跟着的是色调百分比,0 代表不要上色且所有菜单均透明,而 100 代表纯色调。

你能用Translucency 补丁使窗口更接近于真正的透明。如果你正确安装了补丁,就可以创建半透明的色彩模板。要用这个选项的话,你可以将 'Translucent [color][percent]' 添加到色彩模板,就像这样:
  1. Colorset 7 fg Black, Translucent White 75, \
  2.   hi Black, sh Black
复制代码
设定好色彩模板后,是时候定义一些 MenuSytles 告诉 FVWM 如何显示菜单。MenuSt yles 类似于 Style 命令,能用广义字符 '*' 使所有的菜单风格都一样,或者也可以用不同的 MenuStyles 做出不同的菜单风格。以下是些全局 MenuStyles 的例子:
  1. #####
  2. # MenuStyles
  3. ###########
  4. MenuStyle * PopupDelayed, PopupDelay 300, PopdownImmediately
  5. MenuStyle * PopupOffset -5 100, TitleWarpOff
  6. MenuStyle * TitleUnderlines2, SeparatorsLong, TrianglesSolid
  7. MenuStyle * AnimationOff, AutomaticHotkeysOff
  8. MenuStyle * BorderWidth 2
  9. MenuStyle * PopupAsSubmenu, HoldSubmenus, SubmenusRight
  10. MenuStyle * ItemFormat "%|%5.5i%1.3l%2.3>%|"
  11. MenuStyle * VerticalItemSpacing 1 1, VerticalTitleSpacing 2 2
  12. MenuStyle * MenuColorset 7
  13. MenuStyle * ActiveFore, Hilight3DOff
  14. MenuStyle * ActiveColorset 8
  15. MenuStyle * Font "Shadow=2:xft:Sans:Bold:size=11:antialias=True"
复制代码
去 man 页查找每个选项的意思,但是绝大多数的意思都是不言而喻的,用来控制 Po pUp 和 PopDown 菜单的行为,用到的色彩模板,字体以及菜单项和菜单标题的格式。如果想让不同的菜单看起来不一样,可以用你自己感兴趣的菜单名来替换 '*'。如,可以用 'MenuStyle FvwmMenu* [styles]' 和 'MenuStyle MyMenu* [style]' 来定义两个独立的菜单外观,分别是以 Fvwmmenu 和 Mymenu 开头的菜单名。

到此为止我们已经设定了菜单的外观和行为,现在需要建立些菜单。建立菜单与建立函数非常的类似,首先你要销毁以前的菜单,然后再向菜单中以你想要的显示顺序添加菜单项。一个简单的根菜单看起来像这样:
  1. #####
  2. # FvwmRootMenu
  3. ###########
  4. DestroyMenu FvwmRootMenu
  5. AddToMenu   FvwmRootMenu "Root Menu" Title
  6. + "Programs%menu/programs.png%"  Popup FvwmProgramsMenu
  7. + "Console%menu/terminal.png%"  FvwmATerm
  8. + "FVWM Console%menu/terminal.png%"  Module FvwmConsole
  9. + "" Nop
  10. + "Help%menu/help.png%"  Popup FvwmManPagesMenu
  11. + "Restart FVWM%menu/restart.png%"  Restart
  12. + "Quit FVWM%menu/quit.png%"  Quit
复制代码
基本的菜单项格式是 '+ "[item name]%[icon]%" [action]'。icon 无所谓在 item name 前还是后,如 '+ "%[icon]%[item name]" [action]' 具有相同的效果。如果要控制图标在菜单项的左边还是右边,你需要与 MenuStyles 混合使用。这里建立了一个简单的 'Root Menu',只要你在根窗口上点击就会弹出来。(可参考按键绑定一章)。菜单中有 5 个菜单项,第一个有个叫 'FvwmProgramsMenu' 的子菜单,第二个在点击时会启动 FvwmATerm 函数运行 aterm。第三个会打开 FvwmConsole 模块,这个终端允许你输入 FVWM 命令,并立即执行。 '+ "" Nop' 会创建一个分隔条。最后几个菜单项可以打开另一个子菜单 'FvwmManPagesMenu',重启以及退出 fvwm。

现在我们已建立了两个子菜单,因此把它们加入到我们的配置文件中来。其中一个是可扩展的程序列表,另一个是包含所有 fvwm 手册页的漂亮菜单。
  1. #####
  2. # Programs Menu
  3. ###########
  4. DestroyMenu FvwmProgramsMenu
  5. AddToMenu   FvwmProgramsMenu "Programs" Title
  6. + "GVim%menu/vim.png%"  FvwmGVim
  7. + "Gimp%menu/gimp.png%"  FvwmGimp
  8. + "FireFox%menu/firefox.png%"  FvwmFireFox
  9. + "Irssi%menu/irc.png%"  FvwmIrssi
  10. + "Xmms%menu/xmms.png%"  FvwmXmms
  11. + "XRoach-Invasion%menu/xroach.png%"  XRoachInvasion
  12. + "XRoach-Exterminate%menu/xroach.png%"  XRoachExterminate
  13. #####
  14. # FVWM Help Menu
  15. ###########
  16. DestroyMenu FvwmManPagesMenu
  17. AddToMenu   FvwmManPagesMenu "FVWM Man Pages" Title
  18. + "%menu/help.png%fvwm"                FvwmViewManPage fvwm
  19. + "%menu/help.png%FvwmAnimate"         FvwmViewManPage FvwmAnimate
  20. + "%menu/help.png%FvwmAuto"            FvwmViewManPage FvwmAuto
  21. + "%menu/help.png%FvwmBacker"          FvwmViewManPage FvwmBacker
  22. + "%menu/help.png%FvwmBanner"          FvwmViewManPage FvwmBanner
  23. + "%menu/help.png%FvwmButtons"         FvwmViewManPage FvwmButtons
  24. + "%menu/help.png%FvwmCommand"         FvwmViewManPage FvwmCommand
  25. + "%menu/help.png%FvwmConsole"         FvwmViewManPage FvwmConsole
  26. + "%menu/help.png%FvwmConsoleC.pl"     FvwmViewManPage FvwmConsoleC.pl
  27. + "%menu/help.png%FvwmCpp"             FvwmViewManPage FvwmCpp
  28. + "%menu/help.png%FvwmDebug"           FvwmViewManPage FvwmDebug
  29. + "%menu/help.png%FvwmDragWell"        FvwmViewManPage FvwmDragWell
  30. + "%menu/help.png%FvwmEvent"           FvwmViewManPage FvwmEvent
  31. + "%menu/help.png%FvwmForm"            FvwmViewManPage FvwmForm
  32. + "%menu/help.png%FvwmGtk"             FvwmViewManPage FvwmGtk
  33. + "%menu/help.png%FvwmGtkDebug"        FvwmViewManPage FvwmGtkDebug
  34. + "%menu/help.png%FvwmIconBox"         FvwmViewManPage FvwmIconBox
  35. + "%menu/help.png%FvwmIconMan"         FvwmViewManPage FvwmIconMan
  36. + "%menu/help.png%FvwmIdent"           FvwmViewManPage FvwmIdent
  37. + "%menu/help.png%FvwmM4"              FvwmViewManPage FvwmM4
  38. + "%menu/help.png%FvwmPager"           FvwmViewManPage FvwmPager
  39. + "%menu/help.png%FvwmPerl"            FvwmViewManPage FvwmPerl
  40. + "%menu/help.png%FvwmProxy"           FvwmViewManPage FvwmProxy
  41. + "%menu/help.png%FvwmRearrange"       FvwmViewManPage FvwmRearrange
  42. + "%menu/help.png%FvwmSave"            FvwmViewManPage FvwmSave
  43. + "%menu/help.png%FvwmSaveDesk"        FvwmViewManPage FvwmSaveDesk
  44. + "%menu/help.png%FvwmScript"          FvwmViewManPage FvwmScript
  45. + "%menu/help.png%FvwmScroll"          FvwmViewManPage FvwmScroll
  46. + "%menu/help.png%FvwmTaskBar"         FvwmViewManPage FvwmTaskBar
  47. + "%menu/help.png%FvwmTheme"           FvwmViewManPage FvwmTheme
  48. + "%menu/help.png%FvwmWharf"           FvwmViewManPage FvwmWharf
  49. + "%menu/help.png%FvwmWinList"         FvwmViewManPage FvwmWinList
  50. + "%menu/help.png%FvwmWindowMenu"      FvwmViewManPage FvwmWindowMenu
  51. + "" Nop
  52. + "%menu/help.png%fvwm-config"         FvwmViewManPage fvwm-config
  53. + "%menu/help.png%fvwm-perllib"        FvwmViewManPage fvwm-perllib
  54. + "%menu/help.png%fvwm-root"           FvwmViewManPage fvwm-root
  55. + "%menu/help.png%fvwm-bug"            FvwmViewManPage fvwm-bug
  56. + "%menu/help.png%fvwm-convert-2.2"    FvwmViewManPage fvwm-convert-2.2
  57. + "%menu/help.png%fvwm-convert-2.4"    FvwmViewManPage fvwm-convert-2.4
  58. + "" Nop
  59. + "%menu/help.png%fvwm-menu-desktop"   FvwmViewManPage fvwm-menu-desktop
  60. + "%menu/help.png%fvwm-menu-directory" FvwmViewManPage fvwm-menu-directory
  61. + "%menu/help.png%fvwm-menu-headlines" FvwmViewManPage fvwm-menu-headlines
  62. + "%menu/help.png%fvwm-menu-xlock"     FvwmViewManPage fvwm-menu-xlock
复制代码
下面的菜单是窗口操作列表,你可以对窗口执行各种各样的操作以及抓图。在绑定一章,我设定了一个绑定操作,当你在根窗口上右击时会打开这个窗口。最后一项是 Fvwm Ident 模块,会弹出个窗口告诉你窗口的各种属性,如名字、类、资源和其它有用的东西。
  1. #####
  2. # fvwm Window Operation Menu
  3. ###########
  4. DestroyMenu FvwmWindowOpsMenu
  5. AddToMenu   FvwmWindowOpsMenu "Window Operations" Title
  6. + "Move%menu/window-move.xpm%"  Move
  7. + "Resize%menu/window-resize.xpm%"  Resize
  8. + "(De)Iconify%menu/window-iconify.xpm%"  Iconify
  9. + "(Un)Maximize%menu/window-maximize.xpm%"  Maximize
  10. + "(Un)Shade%menu/window-shade.xpm%"  WindowShade
  11. + "(Un)Stick%menu/window-stick.xpm%"  Stick
  12. + "" Nop
  13. + "Close%menu/window-close.xpm%"  Close
  14. + "Delete%menu/window-delete.xpm%"  Delete
  15. + "Destroy%menu/window-destroy.xpm%"  Destroy
  16. + "" Nop
  17. + "StaysOnTop%menu/window-raise.xpm%"  Pick (CirculateHit) Layer 0 6
  18. + "Layer +1%menu/window-raise.xpm%"  Pick (CirculateHit) Layer +1
  19. + "StaysPut%menu/window.xpm%"  Pick (CirculateHit) Layer 0 4
  20. + "Layer -1%menu/window-lower.xpm%"  Pick (CirculateHit) Layer -1
  21. + "StaysOnBottom%menu/window-lower.xpm%"  Pick (CirculateHit) Layer 0 2
  22. + "" Nop
  23. + "%menu/window.xpm%Window Screenshot"  Pick (CirculateHit) FvwmWindowScreenshot
  24. + "%menu/display.xpm%Screenshot" FvwmDesktopScreenshot 5
  25. + "" Nop
  26. + "Identify%menu/window-identify.xpm%"  Module FvwmIdent
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:28:56 | 显示全部楼层
FvwmModules 是一组能从 FVWM 中以 'Module' 命令运行,向桌面添加更多功能的软件集合。在 FVWM 中有大把大把的不同的模块,但在这一章节,我只重点介绍以下几个主要的模块,它们是 FvwmTaskBar, FvwmPager 和 FvwmButtons。为了启动一个模块,你首先需要配置它,然后才能用 Module 命令启动。所有这些模块都用色彩模板作为选项,因此我先生成两个色彩模板,以便在整个模块章节中使用它们。这三个主模块, Fvw mTaskBar, FvwmPager 和 FvwmButtons 都能用 RootTransparent 模板,因此如果你喜欢透明效果,可以随意使用 RootTarnsparent 模板。据我所知,半透明补丁只影响菜单,因此不能用半透明模板。
  1. #####
  2. # Module Colorsets
  3. ###########
  4. Colorset 9 fg rgb:00/00/00, hi rgb:00/00/00, sh rgb:00/00/00, bg rgb:e9/e9/d9
  5. Colorset 10 fg rgb:00/00/00, hi rgb:dd/00/00, sh rgb:dd/00/00, bg rgb:fb/fc/ec
复制代码
想了解如何进行模块的基本设置,就让我们来看一下 FvwmIdent 模块吧。这个模块用于标识一个窗口,并给出在配置 fvwm 时有用的相关信息。就像在 FVWM 中的绝大多数事情一样,要做的第一件事就是销毁以前的配置,然后再把某些选项传递给模块,如下:
  1. #####
  2. # FvwmIdent
  3. ###########
  4. DestroyModuleConfig FvwmIdent: *
  5. *FvwmIdent: Colorset 9
  6. *FvwmIdent: Font "xft:Sans:Bold:size=12:antialias=True"
复制代码
这个模块的配置非常简单,我只告诉 FvwmIdent 用哪种字体和色彩模板。启动模块只需把 'Module FvwmIdent' 添加到动作中去,就像我在上一章最后的窗口选项列表中所做的那样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-22 17:29:59 | 显示全部楼层
FvwmTaskBar 极其类似于 Windows 中的任务条。上面有个开始菜单,你能将任何菜单绑定到它那里去,有个放快速启动按钮的地方,还有当前任务列表以及在最最后面有个时间。

首先,为 FvwmTaskBar 设定一些样式。我们想将任务条设成无窗口装饰,也不要让它把自己放在当前任务列表中。我还让任务条 'Sticky',这样它会显示在所有的虚拟桌面上,并且还指定了它的大小和位置。你可以用以下方法做到这些:
  1. #####
  2. # FvwmTaskBar
  3. ###########
  4. Style "FvwmTaskBar" NoTitle, !Handles, !Borders, Sticky, WindowListSkip, \
  5.   CirculateSkip, StaysOnBottom, FixedPosition, FixedSize, !Iconifiable
复制代码
然后,你要为 FvwmTaskBar 模块设定各种各样的选项。如下去做:
  1. DestroyModuleConfig FvwmTaskBar: *
  2. *FvwmTaskBar: Geometry +0-0
  3. *FvwmTaskBar: Rows 3
  4. *FvwmTaskBar: Font "xft:Sans:Bold:pixelsize=12:minispace=True:antialias=True"
  5. *FvwmTaskBar: SelFont "xft:Sans:Bold:pixelsize=12:minispace=True:antialias=True"
  6. *FvwmTaskBar: StatusFont "xft:Sans:Bold:pixelsize=12:minispace=True:antialias=True"
  7. *FvwmTaskBar: Colorset 9
  8. *FvwmTaskBar: IconColorset 9
  9. *FvwmTaskBar: FocusColorset 9
  10. *FvwmTaskBar: TipsColorset 9
  11. *FvwmTaskBar: UseSkipList
  12. *FvwmTaskBar: UseIconNames
  13. *FvwmTaskBar: ShowTips
  14. *FvwmTaskBar: StartName FVWM
  15. *FvwmTaskBar: StartMenu FvwmRootMenu
  16. *FvwmTaskBar: Button Title ATerm, Icon mini/xterm.png, Action (Mouse 1) FvwmATerm
  17. *FvwmTaskBar: Action Click3 Menu FvwmWindowOpsMenu
  18. *FvwmTaskBar: StartIcon mini/fvwm.png
复制代码
第一行销毁默认设置并让你从头开始配置,下面几行设定各种各样的选项,都在 Fvw mTaskBar 手册页中有详细解释。主要是设定任务条用的色彩模板、字体。我也让任务条 UseSkipList,因此任何含有 'WindowSkipList' 样式的窗口都不会出现在任务条中。我还设定了一个动作,如果在按钮上右键单击的话会打开 WindowOps 菜单,这样你可以对你点中的窗口进行一些操作。我还建立了一个按钮,通过点击就能启动 aterm。

现在只要已经配置好模块,你唯一要做的就是启动它了。这个模块用 'Module FvwmT askBar' 启动,但这已经在 StartFunction 中做好了,因此没必要再放一个了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表