Fedora 20 启动时启动脚本

Fedora 20 启动时启动脚本

我正在尝试在 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
    

相关内容