Обнаружение активных окон в python с помощью KDE - PullRequest
2 голосов
/ 20 января 2011

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 03 апреля 2012

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

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

...