+ -
当前位置:首页 → 问答吧 → 实用update-menus(原创)

实用update-menus(原创)

时间:2003-08-11

来源:互联网

关键字:菜单条目(menu entry),编辑方法(menu-methods),hints_optimize(优化)


工作原理:每个要安装菜单条目的软件包在/usr/lib/menu/...下声明,update-menus读取了所有的菜单条目文件后,运行/etc/menu-methods/*下的编辑方法(脚本文件),注意每个窗口管理器都有自己对应的编辑方法,而且在脚本中都包含了/etc/menu-methods/menu.h。生成的菜单保存在/etc/X11/WindowMaker/menu.hook中。(wmaker为例)

介绍:软件包声明
/usr/lib/menu/下软件包声明的形式:
?package(xbase-clients):\
needs="x11"\
section="Apps/Editors"\
hints=Text\
longtitle="Xdit:simple text editor for X"\
title="Xedit"\
command="xedit"
(\表示的是声明没结束,只是换行)

如果一个程序(比如emacs)在"实X11”和文本模式下都能够运行,就应该有两个条目,否则程序就总是在xterm(或rxvt)下运行。然而你必须记住,两个条目是不能使用同一个名称,名称必须唯一。

在菜单条目文件中,你可以使用#注释(就象shell一样)。longtitle,hints是可选项。

1. 删除多余的菜单条目
%将/usr/lib/menu/xbase-clients下的软件包改成.xbase-clients,运行update-menus后文件里所有的菜单条目少了许多,而且基本上都是不需要的条目。
%编辑/usr/lib/menu/mlterm,原来有三个条目,分别是client、daemon、normal,选取需要的;其他的可以删除或者#注释掉,运行update-menus。

2. 修改菜单条目
%直接修改/usr/lib/menu下的软件包声明,只要符合其形式,特别提到的是要注册到根下时,在menu软件包的说明文档中写到:
For users wanting to access some menu entries quickly,you can also put entriesin the root menu,This is done by using section="/".Package provided menu entries must never use this feature.
意思就是:对于想要快速启动菜单条目的用户来说,可以将条目放入root菜单,这可以通过声明section=“/”达到,但是提供菜单条目的软件包不能使用这一特性,他们必须符合debian menu sub-policy,否则都使用“/”注册,菜单就失去意义了。
知道了这些后就可以开始修改软件包声明了,例如选取mozilla,mlterm,gimp,emacs注册到根菜单下,其余的可以合并注册到Apps和System下,满足分类管理。对于管理员来说,可以将修改完的声明复制到/etc/menu/下,防止升级软件包时覆盖了。

3. 添加菜单条目
可以自己设计一个菜单条目满足需要,比如重启,关机类。只要满足形式就行,例如我的/etc/menu/partition:
?package(ls):needs=X11 section="Apps" title="partition" \
command="emacs /etc/fstab"
可以编辑分区文件。目录/etc/menu下软件包名可以随便写,如ls,它认为你已经安装;目录/usr/lib/menu下使用一个已经注册的软件包名欺骗一下就可以通过。我还尝试了多个command,中间;分隔,发现它只支持第一个命令。

4. 其他特色。(hints和menu.hook)
前面的都是通过修改软件包声明,下面的是修改编辑方法和编辑结果:
%修改编辑方法:menu1.*到menu2.*的重要变化是使用hints,在软件声明中加入"hints",这样编辑时可以在适当的时候将菜单条目放到"hints"声明的位置,从而达到优化树形的效果。修改编译方法,编辑/etc/menu-methods/menu.h中的hints_optimize=true,然后运行update-menus,可能你安装完一个软件包后整个的右键菜单已经面目全非,所以最好将常用的几个菜单条目放在根菜单下,免得点错,甚至关闭掉这个优化选项。menu.h中还可以打开或者关闭菜单条目前面的图标,默认情况下是打开的,但是在wmaker下我还没有打开图标,应该是/etc/menu-methods/wmaker的问题。
%修改编辑结果:默认情况在主目录下~/GNUstep/Defaults/WMRootMenu中指明了使用的是"menu.hook",update-menus的运行结果也保存在其中,例如修改根菜单的名称:TZX's MENU;……;TZX's END,经过测试不支持空格,加\也不行。
%支持自己编写编辑脚本~/.menu-methods,支持postinst,postrm等脚本,个人认为不实用。



结论:通过修改软件包的声明,我们可以获得比较满意的菜单形式,建议不打开优化选项。


附Debian Menu Sub-policy:

Apps -应用程序
Databases -数据库程序
Editors -文本编辑器,文字处理
Emulators -dosemu,等模拟器
Graphics -图象处理
Hamradio -所有ham radio相关
Math -gnuplot,octave,oleo等
net -邮件,新闻,网络,irc等
Programming-编译器等
Science -科学软件
Tools -其他工具:xclock,xmag,xman等
Technical -工程
Text -editors外的文本生成工具
Shells -bash,ksh,zsh等
Sound -声音播放器,编辑器
Viewers -图象查看器
System -系统管理和监视工具
Game -游戏娱乐
Adventure -在虚拟世界探索,zork,M00's等
Arcade -所有计数的游戏
Board -比如gnuchess,pente,gnugo
Card -solitaire等
Puzzles -谜语类
Sports -模拟真实世界的运动的游戏
Strategy -需要长时间思考的策略游戏
Tetris-like-掉方块类游戏
toys -oneko,xeyes等
Help -提供帮助的程序
Screen -影响整个屏幕的程序
Lock -xlock等
Save -屏幕保护
Root-window-管理员的程序
Windowmanagers-X window管理器
modules -窗口管理模块
Xshell -shells(比如xterm,rxvt)

作者: tzx   发布时间: 2003-08-11

好贴...
我来顶一下

作者: carlos   发布时间: 2003-08-11

热门下载

更多