Ubuntu pygame 的系统服务

Ubuntu systemd service for pygame

我用 python 和 pygame 编写了一个简单的代码来在我的显示器上显示一些图像。当我 运行 它时,一切正常。我试图在系统启动时使用 systemd 服务将其设置为 运行。这是我的服务:

[Unit]
Description=Starts pygame

[Service]
User=rplab
WorkingDirectory=/home/myuser/
ExecStart=/bin/bash /home/myuser/MyPygame.sh
KillMode=process

[Install]
WantedBy=multi-user.target 

当系统启动时,它会启动服务,但不幸的是,当我用 systemd 状态检查服务时,它给出了这个错误:

pygame.error: No available video device

好像启动太快了,找不到我的显示器,请问我可以让服务在用户登录后启动,以便它可以找到我的显示器吗?

服务文件需要告诉systemd它需要在用户会话和图形环境之后启动。

[Unit]
Description=Starts pygame
Wants=systemd-logind.service systemd-user-sessions.service display-manager.service
After=systemd-logind.service systemd-user-sessions.service display-manager.service

[Service]
....
....

[Install]
WantedBy=graphical.target

确保您是 运行 和 graphical.target 作为默认值。

$ systemctl set-default graphical.target