- 论坛徽章:
- 0
|
http://blog.csdn.net/jinn8522/archive/2008/08/27/2838767.aspx
fvwm在执行命令的时候总会将参数扩展。参数是由'$'开始的,后面跟着单个字符或者括在括号内的单词。如果fvwm遇到一个没有加引号的参数,那么它
将会把这个参数扩展为字符串。fvwm不会处理它不认识的参数。参数扩展的优先级比引号高,如果需要得到'$',那么请输入'$$'。
如果命令带有'-'号前缀,那么fvwm将不会执行参数扩展。这只适用于紧挨着'-'号的命令,因为通常在这样的情况下参数扩展已经执行过了。当参数扩展和其他前缀一起使用时,必须放在其他前缀的前面。
比如说像下面这样:
Pick
-
Exec
exec xmessage '$[w.name]'
这个命令将会打开一个对话框,里面写着[color="#ff6600"]"$[w.name]",而不是扩展以后的内容。
这个长变量可能在它的名字里面包含其它的变量,内部的变量将首先被扩展。
在fvwm的早期版本中提供一些单字符的变量,但是单字符变量会引起很多问题,所以现在已经没有了。应该使用较长的变量名来替代。
例:
#打印当前的桌面编号和页面的水平编号和窗口的类(在这里没有扩展,因为没有窗口)
Echo
$[desk.n] $[page.nx] $[w.class]
注意:如果这个命令在窗口的焦点之外被执行,它将会打印[color="#ff6600"]"$[w.class]"而不是类的名字。通常来说把鼠标指针放在一个窗口上面来获得窗口焦点是不够的。
Current
命令可以强制使窗口具有焦点。
Current
Echo
$[desk.n] $[page.nx] $[w.class]
fvwm能够识别的参数有:
[color="#ff6600"]$$
字母'$'
[color="#ff6600"]$
fvwm正在读的这个文件的绝对路径。用来创建可重新定位的配置树。如果在任何可读文件之外使用则返回'.'。
[color="#ff6600"]$0 to $9
分别标示传递到函数的第1个到第10个参数。如果相应的参数在函数中没有定义,那么这个参数会被命令行自动删除。
[color="#ff6600"]$*
表示传递到函数的所有参数,包括$9以后的参数。
[color="#ff6600"]$[n]
传递到函数的第n个参数,n是从0开始计数的。如果这个参数在函数中没有定义,那么这个参数会被命令行自动删除。这个参数扩展时不带引号。[color="#808080"]( The parameter is expanded unquoted. )
[color="#ff6600"]$[n-m]
传递给函数的第n个到第m个参数。如果所有的参数在函数中都没有定义,那么这个[color="#ff6600"]"$[...]"会被命令行自动删除。如果只是部分参数有定义,那么扩展所有已定义的参数,忽略其它。所有的参数扩展时都不带引号。
[color="#ff6600"]$[n-]
传递给函数的从n开始的所有参数。如果所有的参数在函数中都没有定义,那么这个[color="#ff6600"]"$[...]"会被命令行自动删除。所有的参数扩展时都不带引号。
[color="#ff6600"]$
传递给函数的所有参数。和[color="#ff6600"]$[0-]等效。
[color="#ff6600"]$[version.num]
fvwm的版本号
[color="#ff6600"]$[version.info]
fvwm的版本信息,像[color="#ff6600"]"(from cvs)",正式发行的版本没有这个信息。
[color="#ff6600"]$[version.line]
fvwm --version命令输出的第一行
[color="#ff6600"]$[vp.x] $[vp.y] $[vp.width] $[vp.height]
当前视口[color="#808080"](viewport)的坐标、宽度或者高度。
[color="#ff6600"]$[desk.n]
当前桌面的编号。
[color="#ff6600"]$[desk.name]
这个参数会被自动替换为第n个桌面的名字。桌面的名字是通过
DesktopName
命令来定义的。如果桌面没有命名,那么这个变量返回这个桌面的默认名字。
[color="#ff6600"]$[desk.width] $[desk.height]
整个桌面的宽度或者高度。也就是单个桌面的宽度或高度乘以x或者y方向上这里桌面里页面的个数。
[color="#ff6600"]$[desk.pagex] $[desk.pagesy]
一个桌面中x方向的页面个数或者y方向的页面个数。这两个参数的值是通过
DesktopSize
命令来设置的。
[color="#ff6600"]$[page.nx] $[page.ny]
当前页面的编号,也就是当前页面离x和y轴的距离。编号是从0开始计数的。这里页面相当于GNOME当中的区域。
[color="#ff6600"]$[w.id]
调用这个命令的窗口的ID(用16进制表示,比如 [color="#ff6600"]0x10023c),或者如果没有窗口和它关联,那么它的值就是字符串[color="#ff6600"]"$[w.id]"。
$[w.name] $[w.iconname] $[w.class] $[w.resource]
$[w.iconfile] $[w.miniiconfile] $[w.iconfile.svgopts]
$[w.miniiconfile.svgopts]
[color="#ff6600"] $[w.name]是窗口的名字
[color="#ff6600"] $[w.iconname]是图标的名字
[color="#ff6600"] $[w.class]是resource的类
[color="#ff6600"] $[w.resource]是resource的名字
[color="#ff6600"]$[w.iconfile] 和[color="#ff6600"] $[w.miniiconfile] 是图标或者或者由
Icon
或者
MiniIcon
定义的迷你图标的文件名(这个文件在硬盘上的绝对路径)
[color="#ff6600"]$[w.iconfile.svgopts] 和 [color="#ff6600"]$[w.miniiconfile.svgopts] 是图标或者迷你图标的SVG渲染选项,只有当fvwm编译时加入了SVG支持时才有效
如果以上这些命令没有和任何窗口关联,那么这些命令会被没有扩展的字符串[color="#ff6600"]"$[w.]"替代。
注意:上面的前4个变量可能包括任何类型的字符,所以使用这些变量需要引用。这意味着这个变量的值两边需要加上单引号,而且值里面所有单独的引号都需要在前面加上反斜杠。以确保下面这样的命令:
Style
$[w.resource]
Icon
norm/network.png
可以正常运行,即使这个变量的值含有像空格或者各种引号这样特殊的符号。
[color="#ff6600"]$[w.x] $[w.y] $[w.width] $[w.height]
如果窗口没有图标话的话,这些参数分别表示当前窗口的坐标或者宽度或者高度。如果窗口已经图标话了或者没有窗口相关联的话,这些字符串的值将被保留。
[color="#ff6600"]$[w.desk]
这个变量的值为窗口所在的桌面号,如果窗口是[color="#ff6600"]sticky风格的,那么则为当前的桌面号。
[color="#ff6600"]$[w.layer]
这个变量的值为窗口所在的层。
[color="#ff6600"]$[cw.x] $[cw.y] $[cw.width] $[cw.height]
这个和[color="#ff6600"]$[w...]相似,不过返回的是窗口客户端部分的[color="#ff6600"]geometry属性,也就是说:边框和标题栏不算在内。
$[i.x], $[it.x],
$[ip.x] $[i.y], $[it.y], $[ip.y] $[i.width], $[it.width], $[ip.width]
$[i.height], $[it.height], $[ip.height]
这个和[color="#ff6600"]$[w...]相似,不过返回的是图标或者图标标题[color="#ff6600"]($[it...])或者图标所用图片[color="#ff6600"]($[ip...])的[color="#ff6600"]geometry属性。
[color="#ff6600"]$[pointer.x] $[pointer.y]
这两个变量返回鼠标光标在屏幕上的位置。如果光标不在这个屏幕上,那么这俩个变量将不会被扩展。
[color="#ff6600"]$[pointer.wx] $[pointer.wy]
这两个变量返回鼠标光标在所选择的窗口的位置。如果光标不在这个屏幕上,窗口被图标话或者没有窗口被选择,那么这俩个变量将不会被扩展。
[color="#ff6600"]$[pointer.cx] $[pointer.cy]
这两个变量返回鼠标光标在所选择窗口的子窗口([color="#808080"]client portion)的位置。如果光标不在这个屏幕上,窗口被隐藏或者图标话或者没有窗口被选定时,那么这俩个变量将不会被扩展。
[color="#ff6600"]$[screen]
fvwm正在运行的屏幕编号,对于多屏用户很有用。
[color="#ff6600"]$[fg.cs] $[bg.cs] $[hilight.cs] $[shadow.cs]
这些参数用来替代[color="#ff6600"]colorset中定义的前景色([color="#ff6600"]fg),背景色([color="#ff6600"]bg),高亮色([color="#ff6600"]hilight)或者阴影颜色([color="#ff6600"]shadow)。(用一个正整数来替代参数里面的[color="#ff6600"])。例如 [color="#ff6600"]"$[fg.cs3]"将会被扩展为名字为[color="#ff6600"]colorset 3的前景色(像[color="#ff6600"]rgb:rrrr/gggg/bbbb 这样的格式)。[color="#ff6600"]colorset的详情请参见
Colorsets
。
[color="#ff6600"]$[schedule.last]
这个参数会用
Schedule
命令调度的最后一条命令的ID替换自己,不管这个命令是否已经执行。
[color="#ff6600"]$[schedule.next]
在没有明确指定其它的ID的情况下,这个参数会用
Schedule
命令调度的下一条命令的ID替换自己。
[color="#ff6600"]$[cond.rc]
返回最后一个判断语句的返回值。这个变量只在函数内部有效,而且不能被判断语句用来作为判断的条件。详情请查看命令列表中的
Conditional Commands
章节。
[color="#ff6600"]$[func.context]
当使用
Mouse
,
Key
或者
PointerKey
命令时用来获得运行命令的上下文字符。可以像下面这个例子这样来用:
Mouse
3 FS N
WindowShade
$$[func.context]
[color="#ff6600"]$[gt.str]
返回当前区域目录中str的翻译。如果没有找到翻译则返回原文。详见
LocalePath
章节。
[color="#ff6600"]$[...]
如果[color="#ff6600"][ ]里面的字符串不是上面的任何一个,fvwm将试着找一个同名的环境变量来替换它,并将这个环境变量的值给这个参数(比如说 [color="#ff6600"]"$[PAGER]" 可以被[color="#ff6600"]"more"替换)。如果找不到则保留这个变量。
在
AddToFunc
章节的描述中可以找到一些具体的例子。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104526/showart_2064901.html |
|