如何从 Wayland 上的 sudo-run systemd 服务获取用户桌面通知?

如何从 Wayland 上的 sudo-run systemd 服务获取用户桌面通知?

我在 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 身份运行这个脚本。

谢谢 :)

相关内容