从 crontab 执行时 xdotool 返回不同的输出

从 crontab 执行时 xdotool 返回不同的输出

所以我正在制作一个脚本来监视我的应用程序使用情况。它通过每分钟运行一个 cronjob 来实现这一点,相关的 cronjob 会检查哪个窗口被聚焦并将其计数器加 1。

代码的其他部分无关紧要,这是重要的部分:

focused=$(xdotool getwindowfocus)
pid=$(xdotool getwindowpid $focused 2>/dev/null)
[ "$pid" ] &&
    pname="$(cat /proc/$pid/comm)" ||
    pname="idling"

我测试了该脚本,并且每次都应该从dmenu、 终端或i3blocks运行它。pname但是当我从 crontab 运行它时,最终每次echo $pname都会产生结果。idling

我检查了我是否以我的用户身份而不是 root 身份运行 crontab。

编辑:理想情况下,我想将所有 cronjobs 保留在个人 crontab 中,而不是/etc/crontab例如。

答案1

听起来您根本没有提到 DISPLAY 环境变量。使用 xdotool,您将使用 X11,因此变量 DISPLAY 应与您在图形会话的终端中运行时的 DISPLAY 变量相匹配:

echo $DISPLAY

编辑:在答案中添加卡西莫多的评论:

在你的脚本中尝试一下export DISPLAY=:0

相关内容