FvwmCommand
名称(NAME):
FvwmCommand – FVWM 外部命令接口
概要(SYNOPSIS):
FvwmCommand [-cmrvw] [-S name] [-i level] [-f name] [-F level] [command...]
描述(DESCRIPTION):
FvwmCommand 使你能够监控 fvwm 的执行(fvwm transaction),并从shell命令行或者脚本文件发送 fvwm 命令。FvwmCommand 把每个参数都当作一个fvwm命令。如果命令包含空格,则必须加上引号,如
FvwmCommand ‘FvwmPager 0 1'
调用(INVOCATION):
在调用 FvwmCommand 之前,FvwmCommandS 需要被fvwm调用一次,通过.fvwm2rc文件,菜单,或者 FvwmConsole 都可以。之后,就可以通过shell或脚本调用 FvwmCommand。
通过.fvwm2rc文件调用 FvwmCommandS:
Module FvwmCommandS
或
AddToFunc StartFunction "I" Module FvwmCommandS
然后,通过脚本文件或shell调用 FvwmCommand:
FvwmCommand 'popup Utilities'
选项(OPTIONS):
-c
通知 FvwmCommand 从标准输入读取多个命令,而不是命令行参数中指定的一个命令。它禁止了-m或-i选项。
(echo "Exec xload"; echo "Beep") | FvwmCommand -c
-F
指定了 FvwmCommand 输出窗口标记(fvwm window flags)的层次。
0 没有窗口标记输出
1 如果信息层(information level),即-i选项,为2或3,则输出全部窗口标记,
-f
指定一个和server通信的可选FIFO。默认FIFO设置是/var/tmp/FvwmCommand-${DISPLAY}C。FvwmCommand..C 用来发送命令和 FvwmCommand。M用来接受消息。如果这个路径不可用,将使用 ${FVWM_USERDIR}/FvwmCommand-${DISPLAY} 取代。必须在 FvwmCommand 调用前使用同样的作为第一个参数调用 FvwmCommandS。可选的,选项-S可以被使用。参考选项-S。
-i
指定 FvwmCommand 输出的信息的层次。
0 仅显示错误信息。
FvwmCommand -i 0 FvwmBanner
将显示一个不带任何输出的徽标(banner)。
另一方面,
FvwmCommand -i 0 foobar
将返回
[FVWM][executeModule]: <> No such module
'foobar' in ModulePath '/usr/lib/X11/fvwm'
注意,Fvwm 本身将不返回任何一个错误信息,以避免象下面这样的情况,因为'windowid'自己是一个有效的命令。
FvwmCommand -i 0 ‘windowid foo bar'
1 显示错误和窗口配置信息。为默认设置。
FvwmCommand send_windowlist
将显示类似下面的信息。
0x02000014 window FvwmConsole
0x02000014 icon FvwmConsole
0x02000014 class XTerm
0x02000014 resource FvwmConsole
0x01c00014 window console
0x01c00014 icon console
0x01c00014 class XTerm
0x01c00014 resource console
0x01000003 window Fvwm Pager
0x01000003 icon
0x01000003 class FvwmModule
0x01000003 resource FvwmPager
0x00c0002c window emacs: FvwmCommand.man
0x00c0002c icon FvwmCommand.man
0x00c0002c icon file xemacs.xpm
0x00c0002c class Emacs
0x00c0002c resource emacs
end windowlist
第一列表示窗口的ID号,它们可以用作’windowid'命令的参数。第二列表示信息类型。最后一列表示信息内容。如果没有信息返回,需要增加-w
2 显示上面的信息和静态的窗口信息
FvwmCommand -i2 'FvwmPager 0 1'
将显示类似下面的信息。
0x03c00003 frame x 962, y 743, width 187, height 114
0x03c00003 desktop 0
0x03c00003 StartIconic no
0x03c00003 OnTop yes
0x03c00003 Sticky yes
0x03c00003 WindowListSkip yes
0x03c00003 SuppressIcon no
0x03c00003 NoiconTitle no
0x03c00003 Lenience no
0x03c00003 StickyIcon no
0x03c00003 CirculateSkipIcon no
0x03c00003 CirculateSkip no
0x03c00003 ClickToFocus no
0x03c00003 SloppyFocus no
0x03c00003 SkipMapping no
0x03c00003 Handles no
0x03c00003 Title no
0x03c00003 Mapped no
0x03c00003 Iconified no
0x03c00003 Transient no
0x03c00003 Raised no
0x03c00003 Visible no
0x03c00003 IconOurs no
0x03c00003 PixmapOurs no
0x03c00003 ShapedIcon no
0x03c00003 Maximized no
0x03c00003 WmTakeFocus no
0x03c00003 WmDeleteWindow yes
0x03c00003 IconMoved no
0x03c00003 IconUnmapped no
0x03c00003 MapPending no
0x03c00003 HintOverride yes
0x03c00003 MWMButtons no
0x03c00003 MWMBorders no
0x03c00003 title height 0
0x03c00003 border width 4
0x03c00003 base size width 8, height 7
0x03c00003 size increment width 9, height 9
0x03c00003 min size width 8, height 7
0x03c00003 max size width 32767, height 32767
0x03c00003 gravity SouthEast
0x03c00003 pixel text 0xffffff, back 0x7f7f7f
0x03c00003 window Fvwm Pager
0x03c00003 icon Fvwm Pager
0x03c00003 class FvwmModule
0x03c00003 resource FvwmPager
3 显示所有可用的信息。
FvwmCommand -i3 'Killmodule Fvwm*'
将报告哪个窗口被关闭。
0x03400003 destroy
0x02400002 destroy
-m
监控 fvwm 的窗口信息处理。FvwmCommand 不断地输出它接受到的信息。这个选项能够用在后台任务里,常和-i3选项一起动态控制窗口。
FvwmCommand -mi3 | grep 'iconify'
将报告窗口什么时候图标化(iconfy)或反图标化(de-iconfy)。
注意:FvwmCommand 不缓冲它的输出,但很多grep或sed这样的使用块缓冲的机制。下一个例子的输出将直到 FvwmCommand 被终止或stdout缓冲被填满时才显示。
FvwmCommand -mi3 | grep ' map' |
sed 's/\(0x[0-9a-f]*\).*/windowid \1 move 0 0/'
作为替代,可以使用缓冲控制工具,比如pty或perl。下面是一个例子。
Fvwm -mi3 | perl -ne '
$|=1;
print "windowid $1 iconify\n" if /^(0x\S+) add/;
' > ~/.FvwmCommandC
-r
退出前等待一个回复。在一个指定的时间之内,如果没有返回任何信息或错误,FvwmCommand 将退出。指定选项-r时,将等候至少一条返回消息。收到第一条消息之后,它将在指定的时间限制内,等候另外一条返回消息。
-S
-v
显示 FvwmCommand 的版本号。
-w
等候一个消息
错误:
如果显示下面的错误消息,很有可能是没有运行 FvwmCommandS。
FvwmCommand error in opening message fifo
--No such file or directory--
fvwm的模块不返回错误消息给 fvwm,而是显示在stderr上。这些错误消息将被当作 FvwmCommand消息显示。