假设我在当前工作区中有应用程序A
、、B
。和彼此相邻(假设应用程序处于焦点状态)并且在屏幕上不可见(它可能[最小化]或[未最小化,但不可见])。我希望程序打印 A、B 而不是 C。C
A
B
A
C
我尝试使用该Wnck
包,但只得到以下内容:
- 重点应用:
screen.get_active_window()
。 - 工作区中的所有应用程序:
screen.get_windows()
。
但我无法仅从用户角度获取应用程序,即A
和B
。
总之,我想打印用户视图中的所有应用程序(在屏幕上可见),无论它们是否处于焦点。
答案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()
函数返回所有打开的窗口和当前工作区的列表。其后的代码仅打印当前工作区的非最小化窗口。