仅在 VScode 集成终端中获取 org.freedesktop.DBus.Error.AccessDenied 错误 - 将 ZSH 与 spotify 连接

仅在 VScode 集成终端中获取 org.freedesktop.DBus.Error.AccessDenied 错误 - 将 ZSH 与 spotify 连接

我编辑了 powerlevel10k ZSH 主题,以在终端窗口中显示 Spotify 当前播放的歌曲 - 运行完美,除了 VS code 集成终端。Spotify 和 VS code 都是通过 Snap 安装的。

我的扩展 ZSH 主题的脚本函数(我不相信代码是错误的,因为它在 VS 代码之外完美运行):

  function prompt_my_spotifyplayed() {
    if test "$(pidof spotify | wc -l)" = 1; then
      artist="$(dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata' | awk '/artist/{getline; getline; print}' | sed 's/string//' | sed 's/"//g' | sed -e 's/^[ \t]*//' )"
      title="$(dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata' | awk '/title/{getline; print}' | sed 's/string//' | sed 's/variant//' | sed 's/"//g' | sed -e 's/^[ \t]*//' )"
      p10k segment -i '' -f '#1DB954' -t "${artist} - ${title}"
    fi
  }

整个 .zsh 主题文件:https://github.com/KrystianDerdzinski/zshPower10kCustomConfig/blob/master/.p10k.zsh

完整错误信息:

错误 org.freedesktop.DBus.Error.AccessDenied:AppArmor 策略阻止此发件人将此消息发送给此收件人;type="method_call", sender=":1.16780" (uid=1000 pid=211442 comm="dbus-send --print-reply --dest=org.mpris.MediaPlay" label="snap.code.code (complain)") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply="0" destination="org.mpris.MediaPlayer2.spotify" (uid=1000 pid=175059 comm="/snap/spotify/56/usr/share/spotify/spotify " label="snap.spotify.spotify (enforce)")

执行后

sudo snap connect code:mpris spotify:spotify-mpris 

我收到以下错误:

error: snap "code" has no plug named "mpris"

有人知道怎样让它工作吗?

答案1

好的,我明白了 - snaps apparmor 配置文件存储在 /var/lib/snapd/apparmor/profiles 中,而不是像常规应用程序那样存储在 /etc/apparmor.d 中。

我在 spotify 配置文件和 /etc/apparmor.d 之间创建了一个符号链接

sudo ln -s /var/lib/snapd/apparmor/profiles/snap.spotify.spotify /etc/apparmor.d/

然后我将 spotify apparmor 配置文件设置为投诉模式

sudo aa-complain snap.spotify.spotify

相关内容