首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何最小化低级别上的X窗口(不是wmctrl或xdotool)?

如何最小化低级别上的X窗口(不是wmctrl或xdotool)?
EN

Stack Overflow用户
提问于 2015-02-25 19:57:04
回答 1查看 2.5K关注 0票数 2

默认情况下,在现代操作系统(如Ubuntu )上安装了相当多的X工具。根据man页面,有xpropxdpyinfoxwininfoxdriinfoglxinfonvinfo

例如,我似乎可以确定如下情况:

代码语言:javascript
复制
xprop -id $id -f _NET_WM_STATE 32a -set _NET_WM_STATE "_NET_WM_ACTION_MINIMIZE"

这里,根据手册,a与"atom“属性相对应。

然而,这似乎不起作用。我是不是只设置了一个属性,而不是真的更新了它呢?在这种情况下,我如何执行后者?

一个更完整的脚本,这样您就可以测试自己了,假设我们已经使用-maximized标志启动了chrome,并且希望以后最小化它:

代码语言:javascript
复制
#!/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等似乎并不在各个窗口本身的级别上。

EN

回答 1

Stack Overflow用户

发布于 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为第二个属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28728423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档