默认情况下,在现代操作系统(如Ubuntu)上安装了一些X工具。根据{{1}}页面,man
,xprop
,xdpyinfo
,xwininfo
,xdriinfo
和glxinfo
。
例如,似乎我可以设置:
nvinfo
这里xprop -id $id -f _NET_WM_STATE 32a -set _NET_WM_STATE "_NET_WM_ACTION_MINIMIZE"
根据手册对应"原子"属性。
但是,这似乎不起作用。我可能只设置了一个属性并且实际上没有更新吗?在这种情况下,我该如何执行后者呢?
一个更完整的脚本,以便您可以自己测试,假设我们已经使用a
标志启动了chrome,并希望稍后将其最小化:
-maximized
也许我应该使用与#!/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
等似乎不会出现在各个窗口本身的层面上。
答案 0 :(得分:2)
_NET_WM_ACTION_MINIMIZE
是一个原子,用于在窗口支持的操作列表中指示“可以最大化”标志。要请求操作,您将_NET_WM_STATE
客户端消息发送到 root 窗口,符合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_HORIZ
作为第二个属性发送。