我正在尝试在 Fedora 20 启动时自动启动幻灯片。我从一个简单的脚本开始。eog 是“eye on gnome”,它是一个幻灯片查看器,我的图片位于 /home/admin/Downloads 目录中。这很完美。
#!/bin/bash
#
eog --slide-show /home/admin/Downloads
接下来我在 /etc/systemd/system 中创建了一个单元文件
[Unit]
Description=Starts the pics program
[Service]
ExecStart=/home/admin/pics
[Install]
WantedBy=graphical.target
当我尝试运行启动脚本时,我得到了以下内容
Loaded: loaded (/etc/systemd/system/pics.service; enabled)
Active: failed (Result:exit-code)...
Process: 4752 ExecStart=/home/admin/pics
Main PID: 4799 (code=exited, status=1/FAILURE)
...:Unable to init server: Could not connect: Connection refused
...:Cannot open display:
...:Run 'eog --help' to see a full...
...:Unit pics.service entered failed state.
经过研究,我发现我需要包含以下内容,但无论我将其放在哪里,我都会不断遇到不同的失败。显然这与以不同用户身份运行程序有关。我可以得到一些帮助来修复我的代码吗?
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
答案1
使用桌面应用程序自动启动反而。
在里面$XDG_CONFIG_HOME/autostart/
(默认值$HOME/.config/autostart
:),创建一个pics.desktop
文件,其中应包含:
[Desktop Entry]
Type=Application
Exec=/home/admin/pics
Hidden=false
X-GNOME-Autostart-enabled=true
Name[en_US]=pics
Name=pics
Comment[en_US]=Starts the pics program
Comment=Starts the pics program
如果你确实想使用 systemd 单元,至少:
更改进程以使用非 root UID。图形应用程序不应以 root 身份运行。
[Service] User=admin ExecStart=/home/admin/pics
-
[Service] Environment="DISPLAY=:0" User=admin ExecStart=/home/admin/pics