关于模块
一个模块是一个独立的程序,作为一个单独的Unix进程运行,但是命令要传输给fvwm来执行。用户可以编写他们自己的模块来做任何操作,而不会影响fvwm本身的完整性。
模块必须由fvwm产生,以便它可以为fvwm和模块进行通信设置两个管道。管道在启动时为已经打开,管道的文件描述符作为命令行参数提供。
在X会话期间,使用Module命令可以随时通过fvwm生成模块。模块可以在X会话期间一直存在,也可以执行单个任务并退出。如果在fvwm被告知退出时,有模块仍处于活动状态,那么fvwm关闭通信管道并等待从模块传来的一个SIGCHLD信号,指示它已经检测到管道关闭并退出。如果模块无法检测到管道关闭,fvwm在大约30秒后退出。同时执行的模块数量受操作系统的最大同时打开文件数限制,通常在60到256之间。
模块只是传输命令给fvwm命令引擎。命令的格式与配置设置文件中的相同。某些辅助信息也被传送,如在示例模块FvwmButtons中。
模块的配置行
Fvwm维护着一个模块配置行的数据库,该数据库里包含了模块的配置信息。模块配置行格式如下:
其中,<ModuleName>是实模块名称或别名,比如:*TopPanel: Colorset 10或者*FvwmButtons: Colorset 10,其中TopPanel为FvwmButtons的别名,在加载模块的时候会用到这个别名。
这个数据库最初是从配置文件(或从-cmd config命令的输出)中加载的,并且可以之后可以由用户(通过FvwmCommand)或模块进行修改。
当模块运行时,它们读取数据库的适当部分。(这个数据库的概念类似于X resource数据库)。
以下的命令也是用于操作模块配置数据库的。
*module_config_line
用于定义模块配置。module_config_line由模块名称(或模块别名)和模块资源行组成。新的语法允许在模块名称和行的其余部分之间使用分隔符(冒号和可选空格),建议避免冲突。
*FvwmButtons-TopRight: Geometry 100×100-0+0
*FvwmButtons-Bottom: Geometry +0-0
DestroyModuleConfig module_config
删除模块的配置条目,以便可以输入新的配置行,有时这也是回退到之前的模块设置的唯一方法。使用该命令这将改变模块在fvwm会话期间运行的方式,而无需重新启动。部分名称中也可以使用通配符。
新的非冲突语法允许在模块名称和行的其余部分之间使用分隔符(冒号、可选空格),在这种情况下,模块名称(或别名)不能有通配符:
DestroyModuleConfig FvwmForm: Fore
DestroyModuleConfig FvwmIconMan: Tips*
比如:DestroyModuleConfig FvwmIconMan: Tips*的FvwmIconMan不能带有通配符。
KillModule modulename [modulealias]
wildcards. If modulealias is given, only modules started with the given alias are killed.
KillModule FvwmPager
KillModule FvwmEvent SoundEvent
Module modulename [moduleparams]
指定一个应该生成的有可选参数的模块。目前有几个模块,包括FvwmButtons,FvwmEvent,FvwmForm,FvwmGtk,FvwmPager,FvwmScript,他们支持别名。如果应该生成模块的多个实例,则别名很有用。别名可以使用*语法单独配置。要使用别名为MyForm来启动模块FvwmForm,可以使用以下语法:
当前可用的模块(包含在fvwm中的)有:
- FvwmAnimate(当窗口被图标化或f反图标化时,产生动画效果);
- FvwmAuto(一个自动提升模块);
- FvwmBacker(当你改变桌面时改变背景);
- FvwmBanner (显示一个漂亮的XBM,XPM,PNG,SVG);
- FvwmButtons(可定制的工具栏);
- FvwmCommandS(与shell的FvwmCommand客户端一起使用的命令服务器);
- FvwmConsole(直接执行fvwm命令);
- FvwmCpp(使用cpp预处理配置文件);
- FvwmEvent(触发各种事件);
- FvwmForm(调出对话框)
- FvwmIconMan(一个灵活的图标管理器);
- FvwmIdent(获取窗口信息);
- FvwmM4(用m4预处理你的配置);
- FvwmPager(一个迷你版本的桌面);
- FvwmPerl(Perl的操纵器和预处理器);
- FvwmProxy(通过使用小代理窗口来定位和控制隐藏的窗口);
- FvwmScript(另一个强大的对话框工具包);
这些模块有自己的手册页。当然还有一些其他的模块:FvwmDebug(帮助调试fvwm),FvwmDragWell(拖放到的地方),FvwmGtk(调出GTK菜单和对话框),FvwmIconBox(如mwm IconBox),FvwmRearrange (to rearrange windows),FvwmSave(将桌面状态保存为.xinitrc风格),FvwmSaveDesk(将桌面状态保存在fvwm命令中)
模块可以是短暂的临时程序,或者像FvwmButton一样可以在X会话期间一直存在。如果可能,在重新启动和退出之前,模块将由窗口管理器终止。请参阅每个模块的介绍部分。如果modulename与所有fvwm命令不同,则可以省略Module关键字。
参考文献
Documentation/Module Commands