您的位置:首页 > 其它

fvwm学习笔记之命令扩展 by stack

2008-08-27 16:20 190 查看

命令扩展(Command Expansion)

fvwm在执行命令的时候总会将参数扩展。参数是由'$'开始的,后面跟着单个字符或者括在括号内的单词。如果fvwm遇到一个没有加引号的参数,那么它
将会把这个参数扩展为字符串。fvwm不会处理它不认识的参数。参数扩展的优先级比引号高,如果需要得到'$',那么请输入'$$'。

如果命令带有'-'号前缀,那么fvwm将不会执行参数扩展。这只适用于紧挨着'-'号的命令,因为通常在这样的情况下参数扩展已经执行过了。当参数扩展和其他前缀一起使用时,必须放在其他前缀的前面。

比如说像下面这样:
Pick -Exec exec xmessage '$[w.name]'

这个命令将会打开一个对话框,里面写着"$[w.name]",而不是扩展以后的内容。

这个长变量可能在它的名字里面包含其它的变量,内部的变量将首先被扩展。

在fvwm的早期版本中提供一些单字符的变量,但是单字符变量会引起很多问题,所以现在已经没有了。应该使用较长的变量名来替代。

例:

#打印当前的桌面编号和页面的水平编号和窗口的类(在这里没有扩展,因为没有窗口)

Echo $[desk.n] $[page.nx] $[w.class]

注意:如果这个命令在窗口的焦点之外被执行,它将会打印"$[w.class]"而不是类的名字。通常来说把鼠标指针放在一个窗口上面来获得窗口焦点是不够的。Current命令可以强制使窗口具有焦点。

Current Echo $[desk.n] $[page.nx] $[w.class]

fvwm能够识别的参数有:

$$

字母'$'

$

fvwm正在读的这个文件的绝对路径。用来创建可重新定位的配置树。如果在任何可读文件之外使用则返回'.'。

$0 to $9

分别标示传递到函数的第1个到第10个参数。如果相应的参数在函数中没有定义,那么这个参数会被命令行自动删除。

$*

表示传递到函数的所有参数,包括$9以后的参数。

$

传递到函数的第n个参数,n是从0开始计数的。如果这个参数在函数中没有定义,那么这个参数会被命令行自动删除。这个参数扩展时不带引号。( The parameter is expanded unquoted. )

$[n-m]

传递给函数的第n个到第m个参数。如果所有的参数在函数中都没有定义,那么这个"$[...]"会被命令行自动删除。如果只是部分参数有定义,那么扩展所有已定义的参数,忽略其它。所有的参数扩展时都不带引号。

$[n-]

传递给函数的从n开始的所有参数。如果所有的参数在函数中都没有定义,那么这个"$[...]"会被命令行自动删除。所有的参数扩展时都不带引号。

$[*]

传递给函数的所有参数。和$[0-]等效。

$[version.num]

fvwm的版本号

$[version.info]

fvwm的版本信息,像"(from cvs)",正式发行的版本没有这个信息。

$[version.line]

fvwm --version命令输出的第一行

$[vp.x] $[vp.y] $[vp.width] $[vp.height]

当前视口(viewport)的坐标、宽度或者高度。

$[desk.n]

当前桌面的编号。

$[desk.name<n>]

这个参数会被自动替换为第n个桌面的名字。桌面的名字是通过DesktopName命令来定义的。如果桌面没有命名,那么这个变量返回这个桌面的默认名字。

$[desk.width] $[desk.height]

整个桌面的宽度或者高度。也就是单个桌面的宽度或高度乘以x或者y方向上这里桌面里页面的个数。

$[desk.pagex] $[desk.pagesy]

一个桌面中x方向的页面个数或者y方向的页面个数。这两个参数的值是通过DesktopSize命令来设置的。

$[page.nx] $[page.ny]

当前页面的编号,也就是当前页面离x和y轴的距离。编号是从0开始计数的。这里页面相当于GNOME当中的区域。

$[w.id]

调用这个命令的窗口的ID(用16进制表示,比如 0x10023c),或者如果没有窗口和它关联,那么它的值就是字符串"$[w.id]"。

$[w.name] $[w.iconname] $[w.class] $[w.resource]
$[w.iconfile] $[w.miniiconfile] $[w.iconfile.svgopts]
$[w.miniiconfile.svgopts]

$[w.name]是窗口的名字

$[w.iconname]是图标的名字

$[w.class]是resource的类

$[w.resource]是resource的名字

$[w.iconfile] 和 $[w.miniiconfile] 是图标或者或者由 Icon 或者 MiniIcon 定义的迷你图标的文件名(这个文件在硬盘上的绝对路径)

$[w.iconfile.svgopts] 和 $[w.miniiconfile.svgopts] 是图标或者迷你图标的SVG渲染选项,只有当fvwm编译时加入了SVG支持时才有效

如果以上这些命令没有和任何窗口关联,那么这些命令会被没有扩展的字符串"$[w.<attribute>]"替代。

注意:上面的前4个变量可能包括任何类型的字符,所以使用这些变量需要引用。这意味着这个变量的值两边需要加上单引号,而且值里面所有单独的引号都需要在前面加上反斜杠。以确保下面这样的命令:

Style $[w.resource] Icon norm/network.png

可以正常运行,即使这个变量的值含有像空格或者各种引号这样特殊的符号。

$[w.x] $[w.y] $[w.width] $[w.height]

如果窗口没有图标话的话,这些参数分别表示当前窗口的坐标或者宽度或者高度。如果窗口已经图标话了或者没有窗口相关联的话,这些字符串的值将被保留。

$[w.desk]

这个变量的值为窗口所在的桌面号,如果窗口是sticky风格的,那么则为当前的桌面号。

$[w.layer]

这个变量的值为窗口所在的层。

$[cw.x] $[cw.y] $[cw.width] $[cw.height]

这个和$[w...]相似,不过返回的是窗口客户端部分的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]

这个和$[w...]相似,不过返回的是图标或者图标标题($[it...])或者图标所用图片($[ip...])的geometry属性。

$[pointer.x] $[pointer.y]

这两个变量返回鼠标光标在屏幕上的位置。如果光标不在这个屏幕上,那么这俩个变量将不会被扩展。

$[pointer.wx] $[pointer.wy]

这两个变量返回鼠标光标在所选择的窗口的位置。如果光标不在这个屏幕上,窗口被图标话或者没有窗口被选择,那么这俩个变量将不会被扩展。

$[pointer.cx] $[pointer.cy]

这两个变量返回鼠标光标在所选择窗口的子窗口(client portion)的位置。如果光标不在这个屏幕上,窗口被隐藏或者图标话或者没有窗口被选定时,那么这俩个变量将不会被扩展。

$[screen]

fvwm正在运行的屏幕编号,对于多屏用户很有用。

$[fg.cs<n>] $[bg.cs<n>] $[hilight.cs<n>] $[shadow.cs<n>]

这些参数用来替代colorset中定义的前景色(fg),背景色(bg),高亮色(hilight)或者阴影颜色(shadow)。(用一个正整数来替代参数里面的<n>)。例如 "$[fg.cs3]"将会被扩展为名字为colorset 3的前景色(像rgb:rrrr/gggg/bbbb 这样的格式)。colorset的详情请参见Colorsets

$[schedule.last]

这个参数会用Schedule命令调度的最后一条命令的ID替换自己,不管这个命令是否已经执行。

$[schedule.next]

在没有明确指定其它的ID的情况下,这个参数会用Schedule命令调度的下一条命令的ID替换自己。

$[cond.rc]

返回最后一个判断语句的返回值。这个变量只在函数内部有效,而且不能被判断语句用来作为判断的条件。详情请查看命令列表中的Conditional Commands章节。

$[func.context]

当使用 Mouse, Key 或者 PointerKey 命令时用来获得运行命令的上下文字符。可以像下面这个例子这样来用:

Mouse 3 FS N WindowShade $$[func.context]

$[gt.str]

返回当前区域目录中str的翻译。如果没有找到翻译则返回原文。详见 LocalePath 章节。

$[...]

如果[ ]里面的字符串不是上面的任何一个,fvwm将试着找一个同名的环境变量来替换它,并将这个环境变量的值给这个参数(比如说 "$[PAGER]" 可以被"more"替换)。如果找不到则保留这个变量。

AddToFunc章节的描述中可以找到一些具体的例子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: