最初的问题
Unity 的优势之一是各种标准化指标。我想使用运行小型 shell 脚本的附加菜单项来定制声音指示器。我不怕一点 Python 代码,我希望有人能指出正确文件中的正确子程序。我认为这会相当容易,但所有指标都太臃肿了,我无法在合理的时间内查看它们的代码。
任何帮助都值得感激。我知道这是可能的,因为奇妙的Skype 包装器可以。
编辑 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 找到了解决方案,但只能点击一次?
由于某种原因解决方案提议者塔卡特缺点是指示声音中的结果条目每个会话只能点击一次。如果有人有解决方案,请评论或回答,您将获得点赞。您可以在这里看到结果:
我强烈怀疑问题与 .desktop 文件有关在 中/home/confus/.local/share/application/toggleSpeaker.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
答案1
通过运行dconf-编辑器来自dconf-工具 我们可能会纳入 MPRIS 兼容媒体播放器使用键进入声音菜单“com.canonical.indicator.sound.interested-media-players”。
此处的示例test
包含指向一个test.desktop
文件的内容~/.local/share/applications
,我们可以从该文件中从现场运行我们的应用程序Exec=
。重新启动会话即可生效。
由于此菜单中的条目与媒体播放器密切相关,因此应用程序控制由 DBus 会话总线完成。com.canonical.indicator.sound这就是为什么在指标重置完成之前我们无法重新运行脚本的原因。我在执行后成功重新启动了测试应用程序 关闭()在org/ayatana/指标/服务对象,但这是一个相当棘手的问题,而且绝对不是指示器声音菜单应该使用的方式。
但它可能指向正确的方向。即我们需要为我们的脚本或应用程序使用 DBus,我们希望它们驻留在声音指示器菜单中。