模块FvwmScript允许您构建许多图形应用程序,如桌面附件、带弹出菜单的按钮面板、模式对话框……
在启动时,FvwmScript读取命令行中指定的文件(Module FvwmScript path/to/file)。该文件包含脚本,并且此脚本未包含在Fvwm的配置文件中。
使用键盘可以完全控制FvwmScript脚本。 (Shift)-Tab环绕在小部件周围;Return模拟鼠标单击;箭头可以移动光标或更改小部件的值;Escape“取消”菜单和PopupMenu。
调用模块
可以通过在.fvwm2rc文件中插入Module FvwmScript name_of_script行来调用FvwmScript。文件“name_of_script”可以以斜杠开头,在这种情况下,它是一个绝对路径,并且读取该文件。如果“name_of_script”不是以斜杠开头,则FvwmScript将在几个不同的位置查找。如果.fvwm2rc包含命令行*FvwmScript:Path path_of_the_script_directory,则FvwmScript将尝试在该目录中查找。如果这不起作用,FvwmScript将尝试系统配置目录和用户配置目录,如fvwm手册页中的“Read”命令所述。
如果要在fvwm初始化期间生成FvwmScript,则可以将启动FvwmScript的命令单独放置在一行上,或者可以绑定到菜单或鼠标按钮或按键,以稍后调用它。
配置选项
可以在配置文件中使用以下命令(有关详细信息,请参阅fvwm(1),MODULE COMMANDS部分)。仅当脚本中未使用相应的脚本命令时,才使用它们,即这些命令不能和脚本混在一起。
*FvwmScript: DefaultFont font
指定要使用的默认字体。 如果未使用此命令或带有Font命令的脚本指定,则假定使用fixed字体。
*FvwmScript: DefaultFore color
指定要使用的默认前景色。 如果未使用此命令或使用ForeColor命令在脚本中指定,则使用黑色。
*FvwmScript: DefaultBack color
指定要使用的默认背景颜色。 如果未使用此命令或使用BackColor命令在脚本中指定,则使用grey85。
*FvwmScript: DefaultHilight color
指定要使用的默认高亮颜色。 如果未使用此命令或在带有HilightColor命令的脚本中指定,则使用grey100。
*FvwmScript: DefaultShadow color
指定要使用的默认阴影颜色。 如果未使用此命令或使用ShadowColor命令在脚本中指定,则使用grey55。
*FvwmScript: DefaultColorset colorset
告诉模块使用颜色集colorset作为默认颜色集。
脚本结构
FvwmScript使用特定的编程语言。脚本由五部分组成:
- 第一部分:标题包含窗口的一般特征,以及所有窗口小部件的默认属性。
- 第二部分:包含在脚本启动时执行的指令。
- 第三部分:包含每秒执行的周期性任务。
- 第四部分:包含在退出时执行的函数指令。
- 第五部分:包含小部件的描述,决定了小部件中显示的内容。
小部件由11种类型的项组成:text labels, single-line text inputs, radio buttons, checkbox, push buttons, horizontal and vertical scrollbars, rectangles, pop up menus, swallowexecs, mini scrollbars。
第一部分:脚本标题
语法如下:
WindowTitle {string}
此选项设置窗口标题。
WindowSize width height
此选项设置窗口大小。参数width和height为数值。
WindowPosition x y
该选项设置窗口位置。参数x和y是数值。
ForeColor {color}
设置所有控件的默认前景色。
BackColor {color}
设置所有控件的背景色。
HilightColor {color}
设置所有控件的默认高亮颜色。
ShadowColor {color}
设置所有控件的默认阴影颜色。
Colorset {n}
设置所有控件的默认颜色集。
Font {font}
设置所有控件的默认字体。
UseGettext [locale_path]
允许使用由WindowLocaleTitle,LocaleTitle,ChangeLocaleTitle指令和Gettext函数使用的gettext机制。 如果未给出参数,则使用默认的FvwmScript语言环境目录。 此目录位于语言环境fvwm安装目录下,文本域为FvwmScript(install_prefix/share/locale/*/LC_MESSAGES/FvwmScript.mo)。 您可以使用与LocalePath fvwm命令相同的方式重置此目录或添加一些目录(请参阅fvwm手册页)。该指令应放在WindowLocaleTitle指令之前。
WindowLocaleTitle string
此选项设置窗口标题,但使用使用UseGettext定义的区域设置目录。
第二部分:脚本初始化
这部分包含将在启动时执行的指令。 例如:
WarpPointer 1
Set $ToDo=Restart
这些指令用于播放声音,将指针移动到窗口小部件1,并在每次启动时将$ToDo初始化为“Restart”。
第三部分:脚本周期任务
脚本的这一部分包含每秒执行的指令。 例如:
此示例显示如何每10秒启动xcalc程序。
第四部分:脚本退出函数
脚本的这一部分包含脚本退出时执行的指令(在Quit指令之后,或使用Close,Delete,Destroy这些fvwm命令关闭窗口时)。 例如
QuitFunc
请注意,如果使用KillModule指令来关闭脚本,则不会执行依赖脚本和fvwm之间存在通信链接的某些指令或函数(例如Do命令)。 要使用fvwm命令平滑地终止脚本,请参阅COMMANDS部分。
第五部分:小部件描述
脚本的第五部分包含脚本中每个窗口小部件的描述。 每个小部件描述都有两个部分:
- 第一部分:描述初始属性;
- 第二部分:包含小部件接收消息时,执行的指令。
所有小部件都可以发送和接收消息。所有消息都由一个数字标识。当用户操作小部件时,消息“UserAction”被发送到小部件。
第一部分的语法
Widget id # 一个1到999之间的数字(包含)
Size width height
Position x y # 必须为每个窗口小部件指定该参数。
Title { string }
LocaleTitle { string } # 可以用来代替Title,以便使用UseGettext定义的语言环境目录。
Value int
MaxValue int
MinValue int
Font string
ForeColor { color }
BackColor { color }
HilightColor { color }
ShadowColor { color }
Colorset int
Flags flagsOpt
指令Flags的flagsOpt选项是一个以空格分隔的列表,其中包含一个或多个关键字Hidden,NoReliefString,NoFocus,Left/Center/Right。关键字Hidden用于指定窗口小部件在启动时是否隐藏。NoReliefString指定是否使用浮雕绘制字符串。 NoFocus指定窗口小部件是否可以获得键盘焦点。 默认情况下,所有窗口小部件都可以获得焦点,但Rectangle、HDipstick、VDipstick除外。 此外,当您使用(Shift-)Tab快捷方式在小部件周围循环时,会跳过NoFocus小部件。Left/Center/Right指定文本位置。 这些仅适用于ItemDraw,List,Menu,PopupMenu和PushButton。 对于其他小部件,默认值为ItemDraw为Center;PushButton为Left。
第二部分的语法
Main
# list of instructions which will be
# executed when widget receives
# message “SingleClic”. This message is
# generated by the user.
End
1 :
Begin
# list of instructions which will be
# executed when widget receives
# message 1
End
参数
大多数命令都使用参数。 有两种参数:数字和字符串。数值参数是介于-32000和+32000之间的值。字符串总是用大括号括起来。
变量始终以字符“$”开头,并且可以包含数字和字符串。
注意事项
FvwmScript crashes if widgets are accessed that have not been defined.
FvwmScript must be spawned by Fvwm. It will not work from the command line.
参考文献
man 1 FvwmScript, Version 2.8-1+b1
Documentation/FvwmScript