我正在编写一个小的 python 脚本来跟踪我如何在程序之间分配时间。它需要检测当前活动的窗口(理想情况下,控制该窗口的应用程序,但我可以只使用窗口标题)以及空闲时间。
目前,我正在使用KIdleTime来确定我有多久没有碰过我的电脑,这本身就可以正常工作。
我还尝试使用wnck来确定哪些窗口处于活动状态,而且这本身就可以正常工作。
当我尝试将两者结合到一个程序中时,我遇到了麻烦。由于 wnck 是一个 gnome 库,而 KIdleTime 是一个 KDE 库,它们需要在自己的线程上运行才能触发窗口更改和空闲超时信号。
我很难在 python 中找到一种方法 - 如果我使用线程模块尝试在单独的线程上运行其中一个,KDE 库会抱怨它不在主线程上,或者 Gnome 库有一个令人印象深刻的崩溃并吃掉了它可以获得的所有内存(顺便说一下,ulimit 在这种情况下非常有用,我可以推荐它)。
所以,我有四个选择:
- 找到一个可以检测窗口何时更改的 KDE 库——我原以为 dbus 会在 kwin 中公开它,但似乎没有。
- 找到一种同时运行 kde 和 gnome 库的方法。
- 查找在 Gnome 事件线程上运行的等效 KIdleTime。
- 使用计时器从 Gnome 线程中轮询 KIdleTime(这是我现在正在做的,但远非理想,它会导致确定空闲时间时不精确)。
谁能给我一个解决方案?