所谓"菜单"是指从按键绑定或任务条的开始菜单弹出的列表项目。菜单可用于列出程 序,甚至能够被动态创建以便于列出目录内容、最近用过的程序等内容。要做的第一件 事就是用设定菜单要用的色彩模板。绝大多数菜单需要两个色彩模板,一个用于主菜单 ,另一个用于当前激活项目。一个简单的双色彩模板的设置如下:
##### # 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 代表纯色调。
你能用 补丁使窗口更接近于真正的透明 。如果你正确安装了补丁,就可以创建半透明的色彩模板。要用这个选项的话,你可以 将 '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
|