GUI 应用程序无法在系统会话中作为 systemd 服务(守护进程)启动

GUI 应用程序无法在系统会话中作为 systemd 服务(守护进程)启动

我正在尝试在系统模式下将 GUI 应用程序作为 systemd 服务运行,但启动失败并出现错误:

GTKTest[236921]: Unable to init server: Could not connect: Connection refused
unknown[236921]: cannot open display:

这是我的.service 文件。

[Unit]
Description=daemon service in user session created for startup ways in linux
PartOf=graphical-session.target
After=graphical-session.target

[Service]
User=vipul.gupta
WorkingDirectory=/home/vipul.gupta/MyWorkspace/GTKdir
ExecStart=/home/vipul.gupta/MyWorkspace/GTKdir/GTKTest
Type=exec
Restart=no

[Install]
WantedBy=graphical-session.target

我可以在用户会话中启动 GUI 应用程序,但不能在系统会话中启动。如果可能的话,有什么帮助吗?

答案1

您正尝试在启动发动机之前驾驶飞机。

图形应用程序需要显示服务器。

但是从 18.04 开始,显示服务器不会在启动时启动,并且无法再由 root 启动。显示服务器在登录时启动,由非 root 用户拥有。这样做是为了解决显示服务器以 root 身份运行时的一个长期安全问题。

想要在设备或服务器启动时启动显示器(如标牌控制器)的人应该研究一下Ubuntu 框架,可轻松使用。

想要某种始终在线的桌面窗口的人应该在登录时启动该应用程序(启动应用程序),而不是在启动时启动该应用程序(systemd 服务)。

相关内容