wmctrl有哪些替代方案?

joe*_*dle 12 linux x11

你知道wmctrl的其他选择吗?一个程序,允许您从命令行操作窗口和窗口管理.

wmctrl的一个缺点是,虽然你可以操作当前窗口,但是你不能让wmctrl列出关于当前窗口的信息(它忽略了-r).

Ami*_*mir 11

要查找当前活动窗口的ID,请使用:

xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
Run Code Online (Sandbox Code Playgroud)

使用此ID,您可以获得有关当前活动窗口的大量信息:

xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}")
Run Code Online (Sandbox Code Playgroud)

从那里,你可以得到grep你需要的东西,或者让它以我_NET_ACTIVE_WINDOW上面提取的方式显示所需的字段.因此,要查找当前活动窗口的PID,您将附加-f _NET_WM_PID 0c " \$0\\n" _NET_WM_PID到上面的命令,使其成为:

xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") -f _NET_WM_PID 0c " \$0\\n" _NET_WM_PID | awk "{print \$2}"
Run Code Online (Sandbox Code Playgroud)

请注意,wmctrl它还与-i标志一起接受相同类型的id .


Dev*_*ine 9

您可以通过打开详细模式并告诉它使用无效参数移动活动窗口来欺骗wmctrl输出活动窗口的ID号:

wmctrl -v -r :ACTIVE: -e dummy
Run Code Online (Sandbox Code Playgroud)

虽然这确实以错误状态退出,但它也输出活动窗口的ID号:

envir_utf8: 1
Using window: 0x08400004
The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"
Run Code Online (Sandbox Code Playgroud)

获得活动窗口的ID号后,您可以列出所有窗口并搜索该ID号:

 wmctrl -l
Run Code Online (Sandbox Code Playgroud)

使用wmctrl获取有关活动窗口的信息很尴尬,但这是可能的.

  • `wmctrl -a:ACTIVE:-v`也有效,并且具有为您提供有意义的退出代码的轻微优势. (9认同)