如何从bash脚本确定窗口是最大化还是最小化

v010dya

我有一个bash脚本,可以在双屏设置中将窗口从左侧屏幕移动到右侧屏幕。当前,它的工作方式是循环浏览给定的窗口ID,xdotool search --onlyvisible --maxdepth 2 --class ""然后将它们向右移动屏幕宽度。它已经可以工作了……除非所讨论的窗口最大化或最小化。

因此,需要一种检查窗口当前状态的方法。我找到了一个提供添加和删除这些位的方法的答案,但是检查它们是否已设置的方法在哪里?

如果无法通过xdotool进行操作,则应该可以重用上述命令提供的窗口ID。

雅各布·弗利姆(Jacob Vlijm)

检索有关窗口状态的信息

您可以从以下命令获取信息(以及更多信息):

xprop -id <window_id>

要获得您专门寻找的东西:

xprop -id 0x04c00010 | grep "_NET_WM_STATE(ATOM)"

输出将如下所示:

_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_HIDDEN

在最大化(h + v)并同时最小化的窗口上

_NET_WM_STATE(ATOM) =

(或完全没有输出)(如果没有)。

更有趣

当然,可以使用各种语言来使用Wnck,就像下面的python片段中一样。(摘自window-shuffler的片段)。片段输出一个列表,显示窗口名称+或TrueFalse(最小化)。

#!/usr/bin/env python3
import gi
gi.require_version('Wnck', '3.0')
from gi.repository import Wnck


def get_winlist(scr=None, selecttype=None):
    """
    get the window list. possible args: screen, select_type, in case it is
    already fetched elsewhere. select type is optional, to fetch only
    specific window types.
    """
    if not scr:
        scr = Wnck.Screen.get_default()
        scr.force_update()
    windows = scr.get_windows()
    if selecttype:
        windows = [w for w in windows if check_windowtype(w, selecttype)]
    return windows

wlist = get_winlist()
for w in wlist:
    print(w.get_name(), ",", w.is_maximized())

输出看起来像:

Wnck.Window - Classes - Wnck 3.0 - Mozilla Firefox , True
Postvak IN - [email protected] - Mozilla Thunderbird , True
Showtime , False
settingsexample.vala - Visual Studio Code , False
*Niet-opgeslagen document 1 - gedit , False
desktop_weather , False
Tilix: Standaard , False

NB

  • xprop相等地处理十六进制(如从的输出wmctrl)和十进制(如从的输出xdotool)id,例如,使用以下任何一种:

    xprop -id 111371626
    

    或者

    xprop -id 0x06a3656a
    
  • 方法在Wayland上不起作用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检测另一个过程的窗口是最小化还是最大化?

来自分类Dev

最小化最大化窗口后偏移鼠标

来自分类Dev

如何从终端关闭,最小化和最大化指定窗口?

来自分类Dev

如何从终端关闭,最小化和最大化指定窗口?

来自分类Dev

如何在Lubuntu中创建最大化/最小化窗口的快捷方式?

来自分类Dev

如何最小化启动程序,并最大化还原?

来自分类Dev

从最大化状态还原窗口时,翡翠缺少关闭,最大化和最小化按钮

来自分类Dev

如何始终显示其窗口上的关闭,最小化和最大化按钮并保持全局菜单?

来自分类Dev

如何始终显示其窗口上的关闭,最小化和最大化按钮并保持全局菜单?

来自分类Dev

如何在MATE中移动窗口标题栏图标以最大化,最小化和靠近左侧?

来自分类Dev

隐藏最小化,最大化,关闭窗口中的按钮并显示图标

来自分类Dev

最小化/最大化/关闭窗口时,DispatcherTimer会暂停

来自分类Dev

删除GTK#中的最小化和最大化窗口按钮

来自分类Dev

窗口最大化/最小化/还原的WM Windows消息是什么?

来自分类Dev

缺少窗口控件;无法最大化或最小化应用程序

来自分类Dev

Windows的直接快捷方式最大化/最小化/还原窗口?

来自分类Dev

隐藏最小化,最大化,关闭窗口中的按钮并显示图标

来自分类Dev

最小化/最大化当前窗口键盘快捷键

来自分类Dev

Windows 10中最大化和最小化的窗口

来自分类Dev

要在最小化或最大化浏览器窗口时重置RadGrid高度

来自分类Dev

Chrome打包的应用窗口,当我最小化窗口时会自动调整大小-然后最大化窗口

来自分类Dev

最小化盒子和最大化对象的算法

来自分类Dev

删除最小化和最大化按钮

来自分类Dev

什么事件用于最大化/最小化?

来自分类Dev

卸下意见最小化/最大化按钮

来自分类Dev

或工具最大化/最小化OR / XOR

来自分类Dev

FVWM的Windows按钮(最大化最小化...),主题

来自分类Dev

WPF最小化和最大化

来自分类Dev

最小化和最大化<div>

Related 相关文章

  1. 1

    如何检测另一个过程的窗口是最小化还是最大化?

  2. 2

    最小化最大化窗口后偏移鼠标

  3. 3

    如何从终端关闭,最小化和最大化指定窗口?

  4. 4

    如何从终端关闭,最小化和最大化指定窗口?

  5. 5

    如何在Lubuntu中创建最大化/最小化窗口的快捷方式?

  6. 6

    如何最小化启动程序,并最大化还原?

  7. 7

    从最大化状态还原窗口时,翡翠缺少关闭,最大化和最小化按钮

  8. 8

    如何始终显示其窗口上的关闭,最小化和最大化按钮并保持全局菜单?

  9. 9

    如何始终显示其窗口上的关闭,最小化和最大化按钮并保持全局菜单?

  10. 10

    如何在MATE中移动窗口标题栏图标以最大化,最小化和靠近左侧?

  11. 11

    隐藏最小化,最大化,关闭窗口中的按钮并显示图标

  12. 12

    最小化/最大化/关闭窗口时,DispatcherTimer会暂停

  13. 13

    删除GTK#中的最小化和最大化窗口按钮

  14. 14

    窗口最大化/最小化/还原的WM Windows消息是什么?

  15. 15

    缺少窗口控件;无法最大化或最小化应用程序

  16. 16

    Windows的直接快捷方式最大化/最小化/还原窗口?

  17. 17

    隐藏最小化,最大化,关闭窗口中的按钮并显示图标

  18. 18

    最小化/最大化当前窗口键盘快捷键

  19. 19

    Windows 10中最大化和最小化的窗口

  20. 20

    要在最小化或最大化浏览器窗口时重置RadGrid高度

  21. 21

    Chrome打包的应用窗口,当我最小化窗口时会自动调整大小-然后最大化窗口

  22. 22

    最小化盒子和最大化对象的算法

  23. 23

    删除最小化和最大化按钮

  24. 24

    什么事件用于最大化/最小化?

  25. 25

    卸下意见最小化/最大化按钮

  26. 26

    或工具最大化/最小化OR / XOR

  27. 27

    FVWM的Windows按钮(最大化最小化...),主题

  28. 28

    WPF最小化和最大化

  29. 29

    最小化和最大化<div>

热门标签

归档