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

全部博文(222)

文章存档

2010年(222)

分类: LINUX

2010-08-14 09:44:12

菜单

所谓"菜单"是指从按键绑定或任务条的开始菜单弹出的列表项目。菜单可用于列出程 序,甚至能够被动态创建以便于列出目录内容、最近用过的程序等内容。要做的第一件 事就是用设定菜单要用的色彩模板。绝大多数菜单需要两个色彩模板,一个用于主菜单 ,另一个用于当前激活项目。一个简单的双色彩模板的设置如下:

#####
# 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

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