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
我用 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