我编写了一个 Java 程序,使用附加的 API 在 Linux 中启动各种程序。我希望这个 Java 程序以我的用户身份在后台运行,并在系统启动时自动启动。我尝试从 systemd 服务运行 jar 文件,但在尝试启动 GUI 应用程序时失败。
我知道,为了运行 GUI 应用程序,需要设置两个环境变量:DISPLAY 和 XAUTHORITY
我尝试在 systemd 服务文件中设置它们,但 java 进程仍然无法启动任何 GUI 程序。从终端运行 jar 文件时启动 GUI 应用程序没有问题。
这个问题可以通过 systemd 或任何其他后台守护进程解决吗?
我的服务文件如下所示:
[Unit]
Description=Application API
After=network.target
[Service]
User=me
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/me/.Xauthority
ExecStart=/usr/bin/java -jar /usr/local/bin/windows-application-launcher.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
更新:它仅需要在我登录到我的桌面环境时运行。
答案1
作为登录流程的一部分启动您的流程。
- 要为所有用户添加它:为其添加一个 .desktop 文件
/etc/xdg/autostart
(完整规格这里)。 - 如果只为自己添加,请在 中添加 .desktop
~/.config/autostart/
。您的桌面管理器可能有一些设置对话框可以为您执行此操作 - 在 KDE5 中(系统设置):Settings>Workspace>Startup and shutdown>Autostart