|

楼主 |
发表于 2007-5-22 17:28:14
|
显示全部楼层
所谓"菜单"是指从按键绑定或任务条的开始菜单弹出的列表项目。菜单可用于列出程序,甚至能够被动态创建以便于列出目录内容、最近用过的程序等内容。要做的第一件事就是用设定菜单要用的色彩模板。绝大多数菜单需要两个色彩模板,一个用于主菜单,另一个用于当前激活项目。一个简单的双色彩模板的设置如下:- #####
- # Menu Colorsets
- ###########
- Colorset 7 fg Black, bg #e6e7d7, sh Black, hi #202070
- Colorset 8 fg DarkRed, bg #e6e7d7, sh Black, hi #202070
复制代码 在 fvwm 2.5.10 中可以对菜单使用 RootTransparent 色彩模板。这些模板会把背景做为菜单的位图,这样菜单就会显得透明了,但不会显示在菜单下的任何窗口。这种模板的例子:- Colorset 7 RootTransparent, fg Black, bg average, sh Black, \
- hi #202070, Tint White 60, bgTint White 60
复制代码 这是一个 RootTransparent 模板,其中 Tint 和 bgTint 是菜单的色调,跟着的是色调百分比,0 代表不要上色且所有菜单均透明,而 100 代表纯色调。
你能用Translucency 补丁使窗口更接近于真正的透明。如果你正确安装了补丁,就可以创建半透明的色彩模板。要用这个选项的话,你可以将 'Translucent [color][percent]' 添加到色彩模板,就像这样:- Colorset 7 fg Black, Translucent White 75, \
- hi Black, sh Black
复制代码 设定好色彩模板后,是时候定义一些 MenuSytles 告诉 FVWM 如何显示菜单。MenuSt yles 类似于 Style 命令,能用广义字符 '*' 使所有的菜单风格都一样,或者也可以用不同的 MenuStyles 做出不同的菜单风格。以下是些全局 MenuStyles 的例子:- #####
- # MenuStyles
- ###########
- MenuStyle * PopupDelayed, PopupDelay 300, PopdownImmediately
- MenuStyle * PopupOffset -5 100, TitleWarpOff
- MenuStyle * TitleUnderlines2, SeparatorsLong, TrianglesSolid
- MenuStyle * AnimationOff, AutomaticHotkeysOff
- MenuStyle * BorderWidth 2
- MenuStyle * PopupAsSubmenu, HoldSubmenus, SubmenusRight
- MenuStyle * ItemFormat "%|%5.5i%1.3l%2.3>%|"
- MenuStyle * VerticalItemSpacing 1 1, VerticalTitleSpacing 2 2
- MenuStyle * MenuColorset 7
- MenuStyle * ActiveFore, Hilight3DOff
- MenuStyle * ActiveColorset 8
- MenuStyle * Font "Shadow=2:xft:Sans:Bold:size=11:antialias=True"
复制代码 去 man 页查找每个选项的意思,但是绝大多数的意思都是不言而喻的,用来控制 Po pUp 和 PopDown 菜单的行为,用到的色彩模板,字体以及菜单项和菜单标题的格式。如果想让不同的菜单看起来不一样,可以用你自己感兴趣的菜单名来替换 '*'。如,可以用 'MenuStyle FvwmMenu* [styles]' 和 'MenuStyle MyMenu* [style]' 来定义两个独立的菜单外观,分别是以 Fvwmmenu 和 Mymenu 开头的菜单名。
到此为止我们已经设定了菜单的外观和行为,现在需要建立些菜单。建立菜单与建立函数非常的类似,首先你要销毁以前的菜单,然后再向菜单中以你想要的显示顺序添加菜单项。一个简单的根菜单看起来像这样:- #####
- # FvwmRootMenu
- ###########
- DestroyMenu FvwmRootMenu
- AddToMenu FvwmRootMenu "Root Menu" Title
- + "Programs%menu/programs.png%" Popup FvwmProgramsMenu
- + "Console%menu/terminal.png%" FvwmATerm
- + "FVWM Console%menu/terminal.png%" Module FvwmConsole
- + "" Nop
- + "Help%menu/help.png%" Popup FvwmManPagesMenu
- + "Restart FVWM%menu/restart.png%" Restart
- + "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 手册页的漂亮菜单。- #####
- # Programs Menu
- ###########
- DestroyMenu FvwmProgramsMenu
- AddToMenu FvwmProgramsMenu "Programs" Title
- + "GVim%menu/vim.png%" FvwmGVim
- + "Gimp%menu/gimp.png%" FvwmGimp
- + "FireFox%menu/firefox.png%" FvwmFireFox
- + "Irssi%menu/irc.png%" FvwmIrssi
- + "Xmms%menu/xmms.png%" FvwmXmms
- + "XRoach-Invasion%menu/xroach.png%" XRoachInvasion
- + "XRoach-Exterminate%menu/xroach.png%" XRoachExterminate
- #####
- # FVWM Help Menu
- ###########
- DestroyMenu FvwmManPagesMenu
- AddToMenu FvwmManPagesMenu "FVWM Man Pages" Title
- + "%menu/help.png%fvwm" FvwmViewManPage fvwm
- + "%menu/help.png%FvwmAnimate" FvwmViewManPage FvwmAnimate
- + "%menu/help.png%FvwmAuto" FvwmViewManPage FvwmAuto
- + "%menu/help.png%FvwmBacker" FvwmViewManPage FvwmBacker
- + "%menu/help.png%FvwmBanner" FvwmViewManPage FvwmBanner
- + "%menu/help.png%FvwmButtons" FvwmViewManPage FvwmButtons
- + "%menu/help.png%FvwmCommand" FvwmViewManPage FvwmCommand
- + "%menu/help.png%FvwmConsole" FvwmViewManPage FvwmConsole
- + "%menu/help.png%FvwmConsoleC.pl" FvwmViewManPage FvwmConsoleC.pl
- + "%menu/help.png%FvwmCpp" FvwmViewManPage FvwmCpp
- + "%menu/help.png%FvwmDebug" FvwmViewManPage FvwmDebug
- + "%menu/help.png%FvwmDragWell" FvwmViewManPage FvwmDragWell
- + "%menu/help.png%FvwmEvent" FvwmViewManPage FvwmEvent
- + "%menu/help.png%FvwmForm" FvwmViewManPage FvwmForm
- + "%menu/help.png%FvwmGtk" FvwmViewManPage FvwmGtk
- + "%menu/help.png%FvwmGtkDebug" FvwmViewManPage FvwmGtkDebug
- + "%menu/help.png%FvwmIconBox" FvwmViewManPage FvwmIconBox
- + "%menu/help.png%FvwmIconMan" FvwmViewManPage FvwmIconMan
- + "%menu/help.png%FvwmIdent" FvwmViewManPage FvwmIdent
- + "%menu/help.png%FvwmM4" FvwmViewManPage FvwmM4
- + "%menu/help.png%FvwmPager" FvwmViewManPage FvwmPager
- + "%menu/help.png%FvwmPerl" FvwmViewManPage FvwmPerl
- + "%menu/help.png%FvwmProxy" FvwmViewManPage FvwmProxy
- + "%menu/help.png%FvwmRearrange" FvwmViewManPage FvwmRearrange
- + "%menu/help.png%FvwmSave" FvwmViewManPage FvwmSave
- + "%menu/help.png%FvwmSaveDesk" FvwmViewManPage FvwmSaveDesk
- + "%menu/help.png%FvwmScript" FvwmViewManPage FvwmScript
- + "%menu/help.png%FvwmScroll" FvwmViewManPage FvwmScroll
- + "%menu/help.png%FvwmTaskBar" FvwmViewManPage FvwmTaskBar
- + "%menu/help.png%FvwmTheme" FvwmViewManPage FvwmTheme
- + "%menu/help.png%FvwmWharf" FvwmViewManPage FvwmWharf
- + "%menu/help.png%FvwmWinList" FvwmViewManPage FvwmWinList
- + "%menu/help.png%FvwmWindowMenu" FvwmViewManPage FvwmWindowMenu
- + "" Nop
- + "%menu/help.png%fvwm-config" FvwmViewManPage fvwm-config
- + "%menu/help.png%fvwm-perllib" FvwmViewManPage fvwm-perllib
- + "%menu/help.png%fvwm-root" FvwmViewManPage fvwm-root
- + "%menu/help.png%fvwm-bug" FvwmViewManPage fvwm-bug
- + "%menu/help.png%fvwm-convert-2.2" FvwmViewManPage fvwm-convert-2.2
- + "%menu/help.png%fvwm-convert-2.4" FvwmViewManPage fvwm-convert-2.4
- + "" Nop
- + "%menu/help.png%fvwm-menu-desktop" FvwmViewManPage fvwm-menu-desktop
- + "%menu/help.png%fvwm-menu-directory" FvwmViewManPage fvwm-menu-directory
- + "%menu/help.png%fvwm-menu-headlines" FvwmViewManPage fvwm-menu-headlines
- + "%menu/help.png%fvwm-menu-xlock" FvwmViewManPage fvwm-menu-xlock
复制代码 下面的菜单是窗口操作列表,你可以对窗口执行各种各样的操作以及抓图。在绑定一章,我设定了一个绑定操作,当你在根窗口上右击时会打开这个窗口。最后一项是 Fvwm Ident 模块,会弹出个窗口告诉你窗口的各种属性,如名字、类、资源和其它有用的东西。- #####
- # fvwm Window Operation Menu
- ###########
- DestroyMenu FvwmWindowOpsMenu
- AddToMenu FvwmWindowOpsMenu "Window Operations" Title
- + "Move%menu/window-move.xpm%" Move
- + "Resize%menu/window-resize.xpm%" Resize
- + "(De)Iconify%menu/window-iconify.xpm%" Iconify
- + "(Un)Maximize%menu/window-maximize.xpm%" Maximize
- + "(Un)Shade%menu/window-shade.xpm%" WindowShade
- + "(Un)Stick%menu/window-stick.xpm%" Stick
- + "" Nop
- + "Close%menu/window-close.xpm%" Close
- + "Delete%menu/window-delete.xpm%" Delete
- + "Destroy%menu/window-destroy.xpm%" Destroy
- + "" Nop
- + "StaysOnTop%menu/window-raise.xpm%" Pick (CirculateHit) Layer 0 6
- + "Layer +1%menu/window-raise.xpm%" Pick (CirculateHit) Layer +1
- + "StaysPut%menu/window.xpm%" Pick (CirculateHit) Layer 0 4
- + "Layer -1%menu/window-lower.xpm%" Pick (CirculateHit) Layer -1
- + "StaysOnBottom%menu/window-lower.xpm%" Pick (CirculateHit) Layer 0 2
- + "" Nop
- + "%menu/window.xpm%Window Screenshot" Pick (CirculateHit) FvwmWindowScreenshot
- + "%menu/display.xpm%Screenshot" FvwmDesktopScreenshot 5
- + "" Nop
- + "Identify%menu/window-identify.xpm%" Module FvwmIdent
复制代码 |
|