0
我试图建立一个脚本,当另一个窗口变为活动状态时,记录窗口标题。这是我到目前为止:glib主循环在Popen后挂起
import glib
import dbus
from dbus.mainloop.glib import DBusGMainLoop
def notifications(bus, message):
if message.get_member() == "event":
args = message.get_args_list()
if args[0] == "activate":
print "Hello world"
activewindow = Popen("xdotool getactivewindow getwindowname", stdout=PIPE, stderr=PIPE);
print activewindow.communicate()
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string_non_blocking("interface='org.kde.KNotify',eavesdrop='true'")
bus.add_message_filter(notifications)
mainloop = glib.MainLoop()
mainloop.run()
但是,我的Popen调用显然是错误的,而glib似乎吞咽了错误。至少,这是IRC频道上的某个人告诉我的。当我删除Popen
和activewindow.communicate()
调用时,一切都继续工作,我收到一条消息“Hello world!”每当我切换到一个新窗口时都会打印在外壳中。
随着Popen
和communicate()
调用,该脚本打印一个单一的“你好世界”,然后挂起。
有谁知道:
- 我怎样才能得到正确的错误消息?
- 我在做什么错在我的
Popen
打电话?
在此先感谢!