默认情况下,在现代操作系统(如Ubuntu )上安装了相当多的X工具。根据man页面,有xprop,xdpyinfo,xwininfo,xdriinfo,glxinfo和nvinfo。
例如,我似乎可以确定如下情况:
xprop -id $id -f _NET_WM_STATE 32a -set _NET_WM_STATE "_NET_WM_ACTION_MINIMIZE"这里,根据手册,a与"atom“属性相对应。
然而,这似乎不起作用。我是不是只设置了一个属性,而不是真的更新了它呢?在这种情况下,我如何执行后者?
一个更完整的脚本,这样您就可以测试自己了,假设我们已经使用-maximized标志启动了chrome,并且希望以后最小化它:
#!/bin/bash
search=chrome
filter=maximized
findpid=$(ps aux | grep $search | grep $filter | tr -s ' ' ' ' | cut -f2 -d' ')
# pick only one pid
findpid=$(echo $findpid | cut -f1 -d' ')
echo "Search for window with pid=$findpid"
known_windows=$(xwininfo -root -children|sed -e 's/^ *//'|grep -E "^0x"|awk '{ print $1 }')
for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d'=' -f2|tr -d ' ')
if test "x${pid}" = x${findpid}
then
echo "Windows Id: $id"
xprop -id $id
xprop -id $id -f _NET_WM_STATE 32a -set _NET_WM_STATE "_NET_WM_ACTION_MINIMIZE"
fi
fi
done也许我应该使用与xprop不同的东西,但是xset等似乎并不在各个窗口本身的级别上。
发布于 2015-02-26 02:34:23
_NET_WM_ACTION_MINIMIZE是一个原子,用于表示窗口支持的操作列表中的“可以最大化”标志。若要请求操作,请将_NET_WM_STATE客户端消息发送到根窗口,而符合emwh规范的WM将为您执行操作,请参阅http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#idm140130317598336。
要使_NET_WM_STATE_REMOVE最大化,您可以将_NET_WM_STATE_MAXIMIZED_VERT设置为操作并发送消息,其中_NET_WM_STATE_MAXIMIZED_VERT为第一个属性,_NET_WM_STATE_MAXIMIZED_HORIZ为第二个属性。
https://stackoverflow.com/questions/28728423
复制相似问题