как получить все приложения / окна в текущей рабочей области в представлении пользователя программно (в python)

Допустим, у меня есть приложения A ], B , C в текущем рабочем пространстве. A и B находятся рядом друг с другом (предположим, что приложение A ] находится в фокусе), а C не отображается на экране (он может [свертываться] или [не сворачиваться, но не виден]). Я хочу, чтобы программа печатала A, B (и не C).

Я пробовал использовать пакет Wnck , но мне удалось получить только следующее:

  1. Приложение в фокусе: screen.get_active_window () .
  2. ] Все приложения в рабочей области: screen.get_windows () .

но я не могу получить приложение только в представлении пользователя, то есть A и B .

TL; DR: - Распечатать все приложения в представлении пользователя (которое видно на экране), независимо от в зависимости от того, в фокусе он или нет.

3
задан 8 November 2020 в 20:15

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() возвращает список всех открытых окон и текущей рабочей области. Код после него печатает только несвернутые окна текущей рабочей области.

0
ответ дан 7 November 2020 в 21:12

Другие вопросы по тегам:

Похожие вопросы: