在KDE中使用Python检测活动窗口
我正在写一个小的Python脚本,用来跟踪我在不同程序之间分配的时间。这个脚本需要能检测到当前活动的窗口(最好是控制这个窗口的应用程序,但只要能获取窗口标题也可以),还要能记录闲置时间。
目前,我使用的是KIdleTime来判断我有多久没有碰电脑了,这个功能单独使用是没问题的。
我还尝试使用wnck来判断哪些窗口是活动的,这个功能单独使用也没问题。
问题出现在我想把这两个功能结合到一个程序里时。因为wnck是一个Gnome库,而KIdleTime是KDE库,它们需要在各自的线程中运行,才能正确响应窗口变化和闲置超时的信号。
我在Python中找不到合适的方法来做到这一点——如果我使用线程模块试图把其中一个放到单独的线程中,KDE库会抱怨说它不在主线程上,或者Gnome库会出现严重的问题,导致内存被疯狂占用(顺便说一下,ulimit在这种情况下非常有用,我推荐使用)。
所以,我有四个选择:
- 找一个KDE库,能检测窗口变化——我本以为dbus会在kwin中提供这个功能,但似乎没有。
- 找到一种方法,让KDE和Gnome库同时运行。
- 找一个可以在Gnome事件线程上运行的KIdleTime的替代品。
- 使用定时器从Gnome线程中轮询KIdleTime(这就是我现在在做的,但效果不理想,会导致闲置时间的判断不准确)。
有没有人能给我提供一个解决方案?
1 个回答
0
你可以使用 wxPython GUI工具包 来实现这个功能。
- 它有一个 获取当前活动窗口的方法。
- 它还有一个 定时器类,虽然你可以用多种方式来实现。
当然,你可以不考虑QT、Gnome和其他所有图形库。这里是wx可以 做的事情。