Как получить заголовок активного окна в KDE Plasma 6 (Wayland) через Python/DBus?Python

Программы на Python
Anonymous
Как получить заголовок активного окна в KDE Plasma 6 (Wayland) через Python/DBus?

Сообщение Anonymous »

Я работаю над проектом преобразования речи в текст (Python) в CachyOS (Arch Linux), используя KDE Plasma 6 (Wayland). Мне нужно получить заголовок активного окна для контекстно-зависимой обработки входных данных.
Проблема:
Стандартные решения на базе X11, такие как xdotool или xprop, не работают для собственных окон Wayland, выдавая ошибки BadWindow:

Код: Выделить всё

XGetWindowProperty\[\_NET_ACTIVE_WINDOW\] failed (code=1)

xdo_get_active_window reported an error

X Error of failed request: BadWindow (invalid Window parameter)

Что я исследовал:
Я проверил несколько существующих решений на StackOverflow, но они либо устарели, либо специфичны для X11:
  • Как получить список всех открытых окон в KDE из CLI: предлагает qdbus и wmctrl. Однако qdbus не установлен в моей системе по умолчанию, а wmctrl не поддерживает собственные окна Wayland.
  • Как показать заголовок окна приложений с графическим интерфейсом в терминале в Linux: в первую очередь обсуждаются xdotool и xtitle, которые основаны на X11 и не работают в моем сеансе Wayland.
  • Обнаружение активных окон в моей системе Python с KDE: в этом ответе 13-летней давности предлагается PyKDE4 (устаревший) или qdbus. В Plasma 6 было перемещено множество интерфейсов, и эти устаревшие методы больше не работают.
Моя попытка:
Поскольку qdbus отсутствует, я попробовал использовать dbus-send:

Код: Выделить всё

dbus-send --session --print-reply --dest=org.kde.KWin /KWin org.kde.KWin.activeWindow

Результат: Ошибка org.freedesktop.DBus.Error.UnknownMethod: нет такого метода «activeWindow» в интерфейсе «org.kde.KWin» по пути к объекту «KWin»
Среда:
  • ОС: CachyOS (На основе Arch)
  • Рабочий стол: KDE Plasma Версия: 6.3.5
  • Python 3.13.3
Вопрос:
Как я могу надежно получить заголовок активного окна в Plasma 6/Wayland (например, с помощью dbus-send или библиотеки Python)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ython-dbus

Вернуться в «Python»