使用wmctrl关闭窗口

时间:2011-03-16 17:41:30

标签: window wine

我可以使用在Ubuntu上运行wine的wmctrl关闭窗口吗?

上下文:

$ wmctrl -m
Name: compiz
Class: N/A
PID: N/A
Window manager's "showing the desktop" mode: OFF

此外:

$ wmctrl -l
0x0240a3be -1 mjol N/A
0x02000003  0 mjol Top Expanded Edge Panel
0x0200004c  0 mjol Bottom Expanded Edge Panel
0x01e00024  0 mjol x-nautilus-desktop
0x04800253  0 mjol using wmctrl to close windows - Stack Overflow - Google Chrome
0x03c0c8c3  0 mjol Terminal
0x03c53f25  0 mjol Terminal
0x04400001  0 mjol Untitled - SketchUp
0x04400003  0 mjol Instructor
0x04400009  0 mjol SketchUp

我要关闭的窗口是最后一个:

0x04400009  0 mjol SketchUp

我尝试了以下内容:

$ wmctrl -c "SketchUp"

$ wmctrl -c 0x04400009

$ wmctrl -i 0x04400009

$ wmctrl -c -i 0x04400009

但没有任何作用。

3 个答案:

答案 0 :(得分:6)

也许有点晚了,但现在第一次见到。 阅读wmctrl的信息,它表示正确的语法是actions之前的'选项',而-i是一个选项,-c是一个动作。试试wmctrl -i -c 0x04400009

答案 1 :(得分:1)

我遇到了同样的问题,只是找到了解决方法!

这是将正常关闭所有Google Chrome窗口的单行代码:

wmctrl -lix |grep 'Google-chrome'|cut -d ' ' -f 1 |xargs -i% wmctrl -i -c %

说明:

wmctrl -lix列出所有窗口,包括其ID和Class

grep 'Google-chrome'仅grep具有Google-chrome类的窗口(这很重要,因为当您将网站与app / shortcut选项一起使用时,它将获得其自己的类,例如“ calendar.google.com.Google-chrome” < / p>

cut -d ' ' -f 1将输出剪切为仅获得ID列

xargs -i% wmctrl -i -c %使用ID 选项 wmctrl将每个ID传递到-i,然后关闭命令 -c < / p>

注意:仅当我使用-i选项指定替换字符串时,xargs才起作用。否则,它只会作用于第一项。

答案 2 :(得分:0)

根据the man page,您应首先使用选择选项选择,例如-r-a,例如:

$ wmctrl -l      
0x01800006  0 hostname Terminal - byobu

$ wmctrl -a Terminal

这里确实选择(并且由于-a而引起+焦点)终端窗口。

然后您可以使用调整大小/移动选项,例如-e gravity,X,Y,width,height

关于你的问题,我刚刚对此进行了测试:

$ wmctrl -l                              
0x01800006  0 machine_hostname - byobu
0x06800002  0 moe Microsoft Excel - Classeur1

当我进入

时,Excel(显然是在Wine中运行)优雅地关闭了
$ wmctrl -c Microsoft

大量额外信息here