我在 Nobara (Wayland)(一个基于 Fedora 的发行版)上运行 KDE Plasma。我对 Wayland 和 Nobara/Fedora 是全新的,并且对 systemd 的经验非常有限。
我有一个 bash 脚本,它根据操作的结果发送成功、警告或错误的桌面通知。
- 当我手动运行脚本(不是 sudo)时,我收到桌面通知。
- 当我在终端(不是 sudo)中运行通知命令时,我收到桌面通知。
- 当我设置/etc/systemd/system服务时,我没有收到桌面通知,并且在journalctl中收到错误(脚本否则运行正常):
没有 X11 $DISPLAY 无法自动启动 D-Bus
脚本中的通知示例:
notify-send -a 'Successful!' -u low -i vcs-normal
系统服务:
[Unit]
Description=Test Script
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
Nice=10
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/home/username/.local/bin/test.sh
User=username
Group=users
我的搜索表明根运行的 systemd 服务无权访问用户的桌面来发出通知。我看到了围绕它的尝试,即将其添加到服务文件中:
[Service]
User=username
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/bus
就我而言,它停止了日志中的错误,但没有给我桌面通知。
我知道我可以以用户身份运行 systemd 服务,并将systemd --user start test
服务文件放置在 中~/.config/systemd/user
,并且通知将起作用(我已设法实现这一点)。但在这种情况下,我想以 root 身份运行这个脚本。
谢谢 :)