Допустим, у меня есть приложения A
], B
, C
в текущем рабочем пространстве. A
и B
находятся рядом друг с другом (предположим, что приложение A
] находится в фокусе), а C
не отображается на экране (он может [свертываться] или [не сворачиваться, но не виден]). Я хочу, чтобы программа печатала A, B (и не C).
Я пробовал использовать пакет Wnck
, но мне удалось получить только следующее:
screen.get_active_window ()
. screen.get_windows ()
. но я не могу получить приложение только в представлении пользователя, то есть A
и B
.
TL; DR: - Распечатать все приложения в представлении пользователя (которое видно на экране), независимо от в зависимости от того, в фокусе он или нет.
Вы можете сделать что-то вроде этого:
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()
возвращает список всех открытых окон и текущей рабочей области. Код после него печатает только несвернутые окна текущей рабочей области.