Fvwm--命令AddToMenu

发表于:2007-05-26来源:作者:点击数: 标签:
定义一个菜单。典型的定义像这样: AddToMenu Utilities Utilities Title ######### AddToMenu menu-name [menu-label action] 定义一个菜单。典型的定义像这样: AddToMenu Utilities Utilities Title + Xterm Exec exec xterm -e tcsh + Rxvt Exec exec rx
定义一个菜单。典型的定义像这样:

AddToMenu Utilities Utilities Title

#########

AddToMenu menu-name [menu-label action]


定义一个菜单。典型的定义像这样:

        AddToMenu Utilities Utilities Title
        + Xterm Exec exec xterm -e tcsh
        + Rxvt Exec exec rxvt
        + "Remote Logins" Popup Remote-Logins
        + Top Exec exec rxvt -T Top -n Top -e top
        + Calculator Exec exec xcalc
        + Xman Exec exec xman
        + Xmag Exec exec xmag
        + emacs Exec exec xemacs
        + Mail MailFunction xmh "-font fixed"
        + "" Nop
        + Modules Popup Module-Popup
        + "" Nop
        + Exit Fvwm Popup Quit-Verify

菜单可以这样触发:

        Mouse 1 R A Menu Utilities Nop

        Mouse 1 R A Popup Utilities


并没有一个符号表示菜单定义的结束,也不需要在配置文件中连续的定义。上面实例中,被引号引用的部分(或者第一个词)是菜单的标签,出现在菜单中。剩下的 部分是fvwm命令,菜单选中时被执行。一个空的菜单标签("")和一个Nop函数用来在菜单中插入一个分隔条。

关键字DynamicPopUpAction和DynamicPopDownAction被用作菜单标签时有特殊的意义,菜单弹出和关闭时,它后面的命令 会被执行。通过这种方法可以实现动态菜单。甚至使用DestroyMenu把它自己销毁,然后在重新建立都是可以的。菜单销毁后(除非销毁菜单时你使用了 recreate选项)不要忘了新建菜单时也要含有相应的DynamicPopUpAction或DynamicPopDownAction项。

注意:不要执行需要和用户交互的动作。它可能会失败,搞乱菜单。见Silent命令.
警告:不要在动态菜单的命令中使用MenuStyle命令,fvwm很有可能因此而崩溃。

随fvwm一起安装的有几个自动配置菜单的脚本。它们有自己的man page。其中fvwm-menu-directory和fvwm-menu-desktop可以和DynamicPopupAction配合使用,创建 目录列表或者GNOME/KDE的应用程序列表。

        例(文件浏览器):
        #You can find the shell script fvwm_make_browse_menu.sh
        #in the utils/ directory of the distribution.
        AddToMenu BrowseMenu
        + DynamicPopupAction Piperead 'fvwm_make_browse_menu.sh BrowseMenu'

        Example (Picture menu):

        # Build a menu of all .jpg files in
        # $HOME/Pictures
        AddToMenu JpgMenu foo title
        + DynamicPopupAction Function MakeJpgMenu

        AddToFunc MakeJpgMenu
        + I DestroyMenu recreate JpgMenu
        + I AddToMenu JpgMenu Pictures Title
        + I PipeRead 'for i in $HOME/Pictures/*.jpg; \
        do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'

关键字MissingSubmenuFunction有类似的用途。当你弹出一个不存在的子菜单时,就执行它指定的命令。利用这个函数可以随时定义和销毁 菜单。MissingSubmenuFunctionhou后可以使用任何命令,but the name of an item (that is a submenu) defined with AddToFunc follows it,并按下面方式执行指定的命令:

        Function   <function-name> <submenu-name>

那个不存在的菜单名作为第一个参数传给函数,可以用引用。


上面曾提到的fvwm-menu-directory脚本可以和MissingSubmenuFunction搭配,产生即时的递归目录列表。如:

        # There is another shell script fvwm_make_directory_menu.sh
        # in the utils/ directory of the distribution. To use it,
        # define this function in your configuration file:

        AddToFunc MakeMissingDirectoryMenu
        + I Exec fvwm_make_directory_menu.sh

        AddToMenu SomeMenu
        + MissingSubmenuFunction MakeMissingDirectoryMenu
        + "Root directory" Popup /

这是另一个文件浏览器,用子菜单显示子目录。


Titles命令可以定义菜单的标题,如果后面跟top选项,标题将被放在菜单的顶部,并覆盖原有的标题。

        AddToMenu Utilities Tools Title top


在菜单标签中第一个Tab左侧的字符与菜单左侧对齐,第一个Tab右侧的字符与第二个标签栏左侧对齐,标签中的其它字符与第三标签栏右侧对齐。所有其它的Tab替换为空格。这种格式不是固定的,你可以使用MenuStyle的ItemFormat选项改变它。

如果菜单的标签包含'&',它的下一个字符就被作为热键,并且字符下面加一个下划线来标识。要想在标签中使用'&',需插入'&&'。

菜单的标签中用'*'标识的字符串,被解释为一个图片文件名,并插入到菜单里。要在标签里使用'*',需插入'**'。例如:

        + Calculator*xcalc.xpm* Exec exec xcalc

菜单中插入一项,以"Calculator"为标签,上面有一个图片。 下面的:

        + *xcalc.xpm* Exec exec xcalc

只留下一个图片,没有标签。


菜单的标签中用'%'标识的字符串,被解释为一个图片文件名(称为mini icon),并插入到标签左侧。以同样的方式给出第二个mini icon被放在标签的右侧。要在标签里使用'%',需插入'%%'。例如:

        + Calculator%xcalc.xpm% Exec exec xcalc

菜单中插入一项,以"Calculator"为标签,标签左侧有一个图片。 下面的:

        + %xcalc.xpm% Exec exec xcalc

只留下一个图片,没有标签。
使用这种方式指定的图片应该小一些(如16x16)。


菜单名(不是标签)中用'@'标识的字符串,被解释为一个xpm或bitmap的图片文件名,并出现在整个菜单的左侧(side pixmap)。使用MenuStyle的SidePic选项也可以实现同样的效果。要在标签里使用'@',需插入'@@'。例如:

        AddToMenu StartMenu@linux-menu.xpm@

创建一个左下角带图片的菜单。


菜单名中用'^'标识的字符串被解释为X11的一个颜色名,菜单中包含side picture的部分用该颜色填充。这个颜色也可以用MenuStyle的SideColor选项指定。要在标签里使用'^',需插入'^^'。例如:

        AddToMenu StartMenu@linux-menu.xpm@^blue^

创建一个左下角带图片的菜单,包含图片的部分用蓝色填充。

在上面的各种情况下,最终的菜单名是去掉以上特殊部分后的结果。

原文转自:http://www.ltesting.net