如何以编程方式获取用户视图中当前工作区中的所有应用程序/窗口(在 python 中)

如何以编程方式获取用户视图中当前工作区中的所有应用程序/窗口(在 python 中)

假设我在当前工作区中有应用程序A、、B。和彼此相邻(假设应用程序处于焦点状态)并且在屏幕上不可见(它可能[最小化]或[未最小化,但不可见])。我希望程序打印 A、B 而不是 C。CABAC

我尝试使用该Wnck包,但只得到以下内容:

  1. 重点应用:screen.get_active_window()
  2. 工作区中的所有应用程序:screen.get_windows()

但我无法仅从用户角度获取应用程序,即AB

总之,我想打印用户视图中的所有应用程序(在屏幕上可见),无论它们是否处于焦点。

答案1

你可以做这样的事情:

import gi
gi.require_version('Wnck', '3.0')
from gi.repository import Wnck


def get_winlist():
    """
    Get the window list and the active workspace.
    """
    scr = Wnck.Screen.get_default()
    scr.force_update()
    windows = scr.get_windows()
    active_wspace = scr.get_active_workspace()

    return windows, active_wspace

wlist, active_wspace = get_winlist()

for w in wlist:
    if w.is_visible_on_workspace(active_wspace):
        print(w.get_name())

我调整了我在这个答案中找到的代码:如何从 bash 脚本确定窗口是否最大化或最小化

get_winlist()函数返回所有打开的窗口和当前工作区的列表。其后的代码仅打印当前工作区的非最小化窗口。

相关内容