「FVWM」- 与模块相关命令

  CREATED BY JENKINSBOT

关于模块

一个模块是一个独立的程序,作为一个单独的Unix进程运行,但是命令要传输给fvwm来执行。用户可以编写他们自己的模块来做任何操作,而不会影响fvwm本身的完整性。

模块必须由fvwm产生,以便它可以为fvwm和模块进行通信设置两个管道。管道在启动时为已经打开,管道的文件描述符作为命令行参数提供。

在X会话期间,使用Module命令可以随时通过fvwm生成模块。模块可以在X会话期间一直存在,也可以执行单个任务并退出。如果在fvwm被告知退出时,有模块仍处于活动状态,那么fvwm关闭通信管道并等待从模块传来的一个SIGCHLD信号,指示它已经检测到管道关闭并退出。如果模块无法检测到管道关闭,fvwm在大约30秒后退出。同时执行的模块数量受操作系统的最大同时打开文件数限制,通常在60到256之间。

模块只是传输命令给fvwm命令引擎。命令的格式与配置设置文件中的相同。某些辅助信息也被传送,如在示例模块FvwmButtons中。

模块的配置行

Fvwm维护着一个模块配置行的数据库,该数据库里包含了模块的配置信息。模块配置行格式如下:

*<ModuleName>: <Config-Resource>

其中,<ModuleName>是实模块名称或别名,比如:*TopPanel: Colorset 10或者*FvwmButtons: Colorset 10,其中TopPanelFvwmButtons的别名,在加载模块的时候会用到这个别名。

这个数据库最初是从配置文件(或从-cmd config命令的输出)中加载的,并且可以之后可以由用户(通过FvwmCommand)或模块进行修改。

当模块运行时,它们读取数据库的适当部分。(这个数据库的概念类似于X resource数据库)。

以下的命令也是用于操作模块配置数据库的。

*module_config_line

用于定义模块配置。module_config_line由模块名称(或模块别名)和模块资源行组成。新的语法允许在模块名称和行的其余部分之间使用分隔符(冒号和可选空格),建议避免冲突。

*FvwmPager: WindowBorderWidth 1

*FvwmButtons-TopRight: Geometry 100×100-0+0

*FvwmButtons-Bottom: Geometry +0-0

DestroyModuleConfig module_config

删除模块的配置条目,以便可以输入新的配置行,有时这也是回退到之前的模块设置的唯一方法。使用该命令这将改变模块在fvwm会话期间运行的方式,而无需重新启动。部分名称中也可以使用通配符。

新的非冲突语法允许在模块名称和行的其余部分之间使用分隔符(冒号、可选空格),在这种情况下,模块名称(或别名)不能有通配符:

DestroyModuleConfig FvwmButtons*

DestroyModuleConfig FvwmForm: Fore

DestroyModuleConfig FvwmIconMan: Tips*

比如:DestroyModuleConfig FvwmIconMan: Tips*的FvwmIconMan不能带有通配符。

KillModule modulename [modulealias]

Causes the module which was invoked with name modulename to be killed. The name may include

wildcards. If modulealias is given, only modules started with the given alias are killed.

# kill all pagers

KillModule FvwmPager

Module FvwmEvent SoundEvent

KillModule FvwmEvent SoundEvent

Module modulename [moduleparams]

指定一个应该生成的有可选参数的模块。目前有几个模块,包括FvwmButtons,FvwmEvent,FvwmForm,FvwmGtk,FvwmPager,FvwmScript,他们支持别名。如果应该生成模块的多个实例,则别名很有用。别名可以使用*语法单独配置。要使用别名为MyForm来启动模块FvwmForm,可以使用以下语法:

Module FvwmForm MyForm

当前可用的模块(包含在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