Я пишу небольшой скрипт на python, который отслеживает, как я делю свое время между программами. Он должен обнаружить текущее активное окно (в идеале, приложение, контролирующее это окно, но я могу обойтись только заголовком окна), а также время простоя.
В настоящее время я использую KIdleTime , чтобы определить, как долго я не касаюсь своего компьютера, что само по себе прекрасно работает.
Я также пытаюсь использовать wnck , чтобы определить, какие окна активны, и опять же, это прекрасно работает само по себе.
Когда я пытаюсь объединить две программы в одну, возникают проблемы. Поскольку wnck - это библиотека gnome, а KIdleTime - это библиотека KDE, их нужно запускать в своих собственных потоках, чтобы сработали сигналы изменения окна и времени ожидания.
У меня проблемы с поиском способа сделать это в Python - если я использую модуль потоков, чтобы попытаться запустить один из них в отдельном потоке, библиотека KDE жалуется, что он не в основном потоке или в Gnome Библиотека имеет впечатляющий распад и съедает всю память, которую она может получить (кстати, ulimit был очень полезен в этом случае, я могу рекомендовать это).
Итак, у меня есть четыре варианта:
- Найдите библиотеку KDE, которая может обнаружить
когда окно меняется - я бы
думал, что dbus выставит
это в Kwin, но это не кажется
к.
- Найдите способ запуска библиотек kde и gnome одновременно
время.
- Найдите эквивалент KIdleTime, который запускается в потоке событий Gnome.
- Используйте таймеры для опроса KIdleTime из потока Gnome (который
что я делаю сейчас, но далеко от идеала, это приводит к неточности в
определение времени простоя).
Может кто-нибудь предложить мне решение?