Узнайте, какое окно активно в Gnome/Linux/Ubuntu из Python?

Есть ли способ получить список всех окон, которые открыты в настоящее время, и посмотреть, какое окно вверху (то есть активное?) Из Python?

Это использует Gnome в Ubuntu Linux.

wnck выглядит так, как будто это может сделать это, но в документации очень не хватает.

2 ответа

Решение
import wnck
screen = wnck.screen_get_default()
window_list = screen.get_windows()
active_window = screen.get_active_window()

Смотрите также Получить заголовок активного окна в X и WnckScreen в документации. Другие вопросы, содержащие wnck, содержат полезные примеры кода.

Вот тот же код, использующий современные библиотеки GObject Introspection вместо устаревшего метода PyGTK, который написал Джош Ли:

from gi.repository import Gtk, Wnck

Gtk.init([])  # necessary if not using a Gtk.main() loop
screen = Wnck.Screen.get_default()
screen.force_update()  # recommended per Wnck documentation

window_list = screen.get_windows()
active_window = screen.get_active_window()

Что касается документации, ознакомьтесь со справочным руководством по Libwnck. Это не характерно для python, но весь смысл использования GObject Introspection заключается в том, чтобы иметь один и тот же API на всех языках, благодаря gir привязок.

Кроме того, Ubuntu поставляется с обоими wnck и его соответствующий gir привязка из коробки, но если вам нужно их установить:

sudo apt-get install libwnck-3-* gir1.2-wnck-3.0

Это также установит libwnck-3-dev, который не является необходимым, но установит полезную документацию, которую вы можете прочитать, используя DevHelp

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