大约一周以来,我一直在尝试将我的应用程序添加到 Unity 的声音指示器菜单中。老实说,关于这个问题的文档缺乏得令人震惊。我找到的所有声称是文档的链接都失效了。
我的情况如下:我使用 mopidy-mpris 源代码作为指南,了解如何构建符合 MPRIS 规范的 DBus 服务。我可以运行此服务,并使用一个漂亮的 Python MPRIS 客户端与其通信/控制它 (https://github.com/airtower-luna/mpris-python)。我能够使用 查询所有属性,qdbus
并且就 MPRIS 而言,一切似乎都按规范运行。
我读过几篇文章,要将应用程序添加到声音指示器,您应该将其添加到/com/canonical/indicator/sound/interested-media-players
dconf 中的键(它还需要一个.desktop
文件~/.local/share/applications
)。我这样做了,我的应用程序在登录/退出时出现在声音指示器中。这看起来很棒,但是当我单击我的应用程序时,它只是开始在播放按钮上旋转。我的应用程序确实启动了,但我无法通过菜单与它交互。我曾经dbus-monitor
查看过发送/接收的 dbus 消息,但什么也没得到。我使用上面的 MPRIS 客户端发送了一些手动消息,我可以在 dbus-monitor 中看到它们,它们成功控制了播放器,所以至少这是可行的。
我又查看了一下 mopidy 源代码,发现他们提到通过创建指示器服务向声音指示器发送启动通知。当然,他们使用了一个旧的指示模块,但我改用了它gi.repository.Indicate
,它基本上就位了。我像这样初始化一个指示服务器:
from gi.repository import Indicate
indicate_server = Indicate.Server()
indicate_server.set_type('music.myapp')
indicate_server.set_desktop_file(os.path.abspath('myapp.desktop'))
indicate_server.show()
这没起到什么作用。播放按钮上仍然出现卡住/旋转/加载动画,无法控制。
任何帮助都将不胜感激。最好的情况是:提供实际文档的链接就更好了。