重新启动时启动 GUI 应用程序

重新启动时启动 GUI 应用程序

我试图在启动时通过 Cron 执行我自己的脚本(openMonitor.sh),该脚本在 Firefox 中打开本地 html 文件并通过模拟 F11 切换到全屏:

#!/bin/bash
sleep 10;
export DISPLAY=:0.0 &&
export XAUTHORITY=/home/pi/.xauthority &&
now=$(date +"%T")
echo "script run at "+$now >> /home/pi/monitor/run.log
/usr/bin/firefox --url /home/pi/monitor/monitor.html &
sleep 10;
xdotool key F11

该脚本列在我的 RaspberryPi2 Raspbian Jessie 上的 crontab 中:

@reboot /home/pi/monitor/./openMonitor.sh

已成功触发,html 文件已打开,但 Firefox 未切换到全屏。仅当我以登录用户身份执行脚本时,它才有效。

由于 crontab 具有“最小”环境并且没有设置 DISPLAY 或 XAUTHORITY 环境(因此无法访问 X 服务器),因此在连接的显示器上运行 xdotool 可能会出现问题。如何解决这个问题?

答案1

问题不仅仅是DISPLAY环境尚未设置,而是显示可能还不存在,即使存在(您的 cron 作业和 GUI 启动之间存在竞争条件),您也不会有权使用它。您需要先登录 GUI。

@rebootcrontab 中的条目用于独立于登录会话执行的操作。在控制台上显示某些内容需要登录会话。

相反,为pi用户启用自动登录。您可以从raspi-config(参见https://raspberrypi.stackexchange.com/questions/47823/how-to-prevent-autologin-of-gui)。然后将您的脚本(Firefox 的启动和窗口最大化)添加到用户的登录脚本。如果您使用 LXDE 界面,您可以在自动启动列表中添加一个条目:请参阅启动时执行脚本(请注意,本页上的许多答案不适用于 GUI 程序)。

相关内容