Обнаружение активных окон в python с помощью KDE

Я пишу небольшой скрипт на Python, который отслеживает, как я распределяю свое время между программами. Ему нужно определить текущее активное окно (в идеале приложение, управляющее этим окном, но я могу обойтись только заголовком окна), а также время простоя.

На данный момент я использую KIdleTime, чтобы определить, как долго Я не трогал свой компьютер, который отлично работает сам по себе.

Я также пытаюсь использовать wnck, чтобы определить, какие окна активны, и опять же, это работает нормально само по себе.

Когда я пытаюсь объединить две программы в одну, у меня возникают проблемы. Поскольку wnck является библиотекой gnome, а KIdleTime — библиотекой KDE, их необходимо запускать в отдельных потоках, чтобы срабатывали сигналы изменения окна и тайм-аута простоя.

У меня возникли проблемы с поиском способа сделать это в python - если я использую модуль потоковой обработки, чтобы попытаться запустить один из них в отдельном потоке, библиотека KDE жалуется, что он не находится в основном потоке, или в библиотеке Gnome есть впечатляющий расплав и съедает всю память, которую может получить (кстати, ulimit был очень полезен в этом случае, я могу его порекомендовать).

Итак, у меня есть четыре варианта:

  1. Найдите библиотеку KDE, которая может определить, когда окно изменено - я думал, что dbus выставит это в kwin, но, похоже, это не так.
  2. Найдите способ одновременного запуска библиотек kde и gnome.
  3. Найдите эквивалент KIdleTime, который запускается в потоке событий Gnome.
  4. Используйте таймеры для опроса KIdleTime из потока Gnome (что я и делаю сейчас, но это далеко не идеально, это приводит к неточности в определении времени простоя).

Может ли кто-нибудь предложить мне решение?


person Widjet    schedule 20.01.2011    source источник


Ответы (1)


Для этой цели можно использовать инструментарий wxPython GUI.

Конечно, вы можете забыть о QT, Gnome и всех других графических библиотеках. Вот что wx может делать.

person Radu    schedule 03.04.2012