[英]Execute python code if active window change in linux
我有以下代码使用无限循环来检查活动 window 是否已更改。当活动 window 更改时,此程序会打印当前 window 的名称。 必须有更好的方法来做到这一点。 如何在没有无限循环的情况下让我的 python 代码始终监听活动的 window 变化?
import subprocess
import psutil
pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()
prevpid=pid
print(pid)
while(True):
pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()
if prevpid!=pid:
process=psutil.Process(int(pid))
processName=process.name()
print("Current Active Process is "+processName)
prevpid=pid
如果您在 X 上,而不是轮询,最好使用Wnck.Screen的active_window_changed
信号,从 Gtk 循环运行。 在一个简单的例子中:
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Wnck', '3.0')
from gi.repository import Gtk, Wnck
def dosomething(screen, previous_window):
try:
print(
previous_window.get_name(), "||",
screen.get_active_window().get_name()
)
# or run any action
except AttributeError:
pass
wnck_scr = Wnck.Screen.get_default()
wnck_scr.force_update()
wnck_scr.connect("active-window-changed", dosomething)
Gtk.main()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.