如何将自定义项添加到声音指示器(并使其可单击多次)?

原来的问题

声音指示器

Unity的优势之一是各种标准化指标。 我想通过运行小型shell脚本的附加菜单项来自定义声音指示器 。 我不怕一点Python代码,我希望有人能指出我在正确文件中的正确子程序。 我怀疑这将是相当容易的,但所有的指标都是如此臃肿,我无法在合理的时间内查看他们的代码。

任何帮助表示赞赏。 我知道这可能是奇妙的Skype-Wrapper所做的。


编辑2 – 现在是一个肮脏的DBus黑客

之前一次编辑的单击问题现在变成了DBus问题。 基本上我们必须告诉声音指示器我们的虚假播放器现在终止了。 一个肮脏的黑客导航围绕这个问题:

#!/bin/bash # This is '/home/confus/bin/toggleSpeaker.sh' notify-send "Toggle Speaker" "$(date)" qdbus \ com.canonical.indicator.sound \ /org/ayatana/indicator/service \ org.ayatana.indicator.service.Shutdown exit 0 

感谢社区的帮助,因为我对DBus没有任何经验。


编辑1 – Takkat找到了一个解决方案,但只能点击一次?

出于某种原因, Takkat提出的解决方案的缺点是, 每个会话只能点击指示器声音中的结果输入一次 。 如果某人有解决方案,请发表评论或回答,您将被投票赞成。 在这里你可以看到结果:

带脚本输入的声音指示器

我强烈怀疑这个问题与 /home/confus/.local/share/application/toggleSpeaker.desktop 的.desktop文件有关 ,这是:

 [Desktop Entry] Type=Application Name=toggleSpeaker GenericName=Toggle Speaker Icon=gstreamer-properties Exec=/home/confus/bin/toggleSpeaker.sh Terminal=false 

以下是/home/confus/bin/toggleSpeaker.sh 脚本最小示例供您考虑:

 #!/bin/bash # This is '/home/confus/bin/toggleSpeaker.sh' notify-send "Toggle Speaker" "$(date)" exit 0 

通过dconf-tools运行dconf-editor 安装dconf-tools 我们可以使用关键字“com.canonical.indicator.sound.interested-media-players”将MPRIS可抱媒体播放器应用程序合并到声音菜单中。

在此处输入图像描述

在这里的示例中包含了test ,它指向~/.local/share/applications中的test.desktop文件,我们可以从Exec=字段运行我们的appplication。 重新启动会话以使其生效。

在此处输入图像描述

由于此菜单中的条目与媒体播放器密切相关,因此应用程序控制由DBus会话总线com.canonical.indicator.sound完成 。 这就是为什么在完成指标重置之前我们无法重新运行脚本的原因。 在org / ayatana / indicator / service对象上执行Shutdown()之后,我成功重新启动了测试应用程序,但这非常糟糕 ,绝对不是应该使用指示器声音菜单的方式。

然而,它可能指向正确的方向。 即我们需要将DBus用于我们希望驻留在声音指示器菜单中的脚本或应用程序