最后还包括它们何时启动和关闭以及它们在后台和前台运行了多少次。
我不需要每个应用程序都这样做,只需要几个应用程序。我可能会使用桌面文件中的自定义启动器(但怎么做呢?)。但由于我要跟踪十几个应用程序,因此通用解决方案会更好。
提前致谢 !!
编辑:当窗口具有焦点时,我调用前台。
答案1
我不知道有任何现成的解决方案。
如果你正在运行 X Window,你可以轻松地编写基于这个答案。您将有一个循环,在其中运行xprop -root _NET_ACTIVE_WINDOW
,从中剪切出窗口 ID,然后将其传递给xprop -id ...
,处理其输出(例如,grep
获取一些相关键)并将其存储在某处(例如,附加到文本文件)。最后,sleep
循环大概需要 10 秒钟。
同时,编写一些处理日志文件的脚本(或将其上传到数据库等)。
由于 Wayland 的安全模型,这种方法无法在其下工作,恐怕您需要破解合成器才能为您完成此日志记录。
答案2
去检查哪个窗口具有焦点您可以在终端中运行它:
[romano:~] 3s 130 % while true; do
xprop -root _NET_ACTIVE_WINDOW
sleep 3
done
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x3600006
_NET_ACTIVE_WINDOW(WINDOW): window id # 0x3a00010
(请注意,如果您在键入时发出命令xprop...
,您显然会得到您正在键入的终端窗口的 ID...)
然后你就可以看到拥有该窗口的进程的 PID和:
[romano:~] % xprop -id 0x3a00010 _NET_WM_PID
_NET_WM_PID(CARDINAL) = 18522
...然后搜索进程使用任何ps
工具。
[romano:~] % ps -p 18522
PID TTY TIME CMD
18522 ? 00:04:55 firefox
请注意,这适用于 X11 --- 不了解 Wayland。