从Unity栏中的声音菜单中删除VLC播放器
我没有那么多使用VLC,所以我想将它从右上方的声音菜单中删除。 我发现了一个小图像来显示它的样子(声音菜单是打开的,并显示VLC和其他音乐播放器)。
很抱歉给出了非常低分辨率的图像。
-
移动VLC DBus插件
sudo mv /usr/lib/vlc/plugins/control/libdbus_plugin.so /usr/lib/vlc/plugins/control/libdbus_plugin.so.backup
-
打开
dconf-editor
,从以下位置删除vlc.desktop
:/com/canonical/indicator/sound/interested-media-players
或者只是通过终端重置它
dconf reset /com/canonical/indicator/sound/interested-media-players
注意:某些人可能喜欢修改声音指示器菜单以隐藏非活动播放器中的控件或关闭后将其删除 。 换句话说,正在运行的玩家有完全控制,关闭的玩家只有发射器(没有控制按钮)或完全从菜单中消失。
如何从声音菜单中删除VLC /如何防止VLC再次出现在声音菜单中。
从声音菜单中删除VLC
GUI方法
- 安装dconf编辑器
- 打开dconf-editor,浏览到:
com/canonical/indicator/sound
- 在soundmenu(
interested-media-players
)项目列表中,删除您不需要/想要出现在菜单中的应用程序。 关闭dconf编辑器。
- 完成后,VLC从菜单中消失了。
命令行方法
-
要阅读当前菜单项:
gsettings get com.canonical.indicator.sound interested-media-players
给出如下输出:
['rhythmbox.desktop', 'vlc.desktop']
-
要删除VLC,
vlc.desktop
从列表中删除vlc.desktop
,然后通过以下命令设置更改的菜单:gsettings set com.canonical.indicator.sound interested-media-players "['rhythmbox.desktop']"
防止VLC在声音菜单中返回(14.04)
该解决方案从声音菜单中删除VLC,但如果您启动VLC,它将再次出现在声音菜单中。 下面的脚本不会阻止这种情况,但会在VLC关闭后立即自动删除它。
要使用它:
复制下面的脚本,将其粘贴到空文本文件中并将其保存为vlc
,使其可执行。 然后将vlc.desktop
文件从/usr/share/applications
复制到~/.local/share/applications
并替换以Exec=/path/to/script/vlc
开头的(第一行)。 注销并重新登录。桌面文件将被重定向到脚本,脚本将启动VLC并等待它停止并立即从声音菜单中删除VLC。
#!/usr/bin/python3 import subprocess import getpass import time curruser = getpass.getuser() def read_currentmenu(): # read the current launcher contents get_menuitems = subprocess.Popen([ "gsettings", "get", "com.canonical.indicator.sound", "interested-media-players" ], stdout=subprocess.PIPE) return eval((get_menuitems.communicate()[0].decode("utf-8"))) def set_current_menu(current_list): # preparing subprocess command string current_list = str(current_list).replace(", ", ",") subprocess.Popen([ "gsettings", "set", "com.canonical.indicator.sound", "interested-media-players", current_list, ]) subprocess.call(["/usr/bin/vlc"]) current_list = read_currentmenu() for item in current_list: if item == "vlc.desktop": current_list.remove(item) set_current_menu(current_list)
其他应用
此方法/脚本也可用于声音菜单中的其他应用程序。 根据另一个应用程序,需要更改脚本最后一部分中的两行:
if item == "vlc.desktop": (change to desktop file of the application)
和
subprocess.call(["/usr/bin/vlc"]) (change the command to run the application)
仅在声音菜单运行时才在声音菜单中显示用户定义的应用程序
下面的解决方案可以在声音菜单中的位置一次灵活地用于多个应用程序。 用户可以定义(和更改)哪些应用程序在菜单中具有永久位置,以及哪些应用程序在关闭后应从声音菜单中删除。
它是什么以及它做了什么
解决方案存在从启动(登录)运行的脚本。 它允许用户定义的应用程序出现在声音菜单中,但在关闭后从声音菜单中删除这些应用程序。
该脚本对桌面文件的function没有影响。 我没有注意到对处理器负载的任何影响,内存使用量可以忽略不计。
如何使用
-
将下面的脚本复制到一个空文件中,将其另存为
cleanup_soundmenu.py
-
在以
no_show =
开头的行中,设置了应用程序,应在关闭后从菜单中清除这些应用程序。 设置了两个例子:['rhythmbox', 'vlc']
。 名称来自他们的桌面文件,从.desktop
剥离。 -
在行中,从
cleanup_interval
开始,用户可以定义清理检查之间的间隔。 默认情况下为10秒。 -
将以下行添加到
Startup Applications
(Dash>启动应用程序>添加):python3 /path/to/cleanup_soundmenu.py
在下次登录时,如果未运行,将从声音菜单中清除已定义的应用程序。
剧本
#!/usr/bin/env python3 import subprocess import time import getpass no_show = ['rhythmbox', 'vlc'] # add names here, to set apps not to show cleanup_interval = 10 # cleanup interval (in seconds) curruser = getpass.getuser() def createlist_runningprocs(): processesb = subprocess.Popen( ["ps", "-u", curruser], stdout=subprocess.PIPE) process_listb = (processesb.communicate()[0].decode("utf-8")).split("\n") return process_listb def read_soundmenu(): # read the current launcher contents get_menuitems = subprocess.Popen([ "gsettings", "get", "com.canonical.indicator.sound", "interested-media-players" ], stdout=subprocess.PIPE) try: return eval(get_menuitems.communicate()[0].decode("utf-8")) except SyntaxError: return [] def set_soundmenu(new_list): # set the launcher contents subprocess.Popen([ "gsettings", "set", "com.canonical.indicator.sound", "interested-media-players", str(new_list)]) def check_ifactionneeded(): snd_items = read_soundmenu() procs = createlist_runningprocs() remove = [item+".desktop" for item in no_show if not item in str(procs)] if len(remove) != 0: for item in remove: try: snd_items.remove(item) except ValueError: pass return snd_items else: pass while 1 != 0: new_list = check_ifactionneeded() if new_list != None: set_soundmenu(new_list) time.sleep(cleanup_interval)
Ubuntu 14.04简单解决方案(只有一个命令,没有sudo,没有脚本)。
打开终端应用程序,然后复制,粘贴并执行以下命令之一。 之后,VLC退出后声音指示将自动清除。
-
不要在声音指示器中留下任何条目:
(mkdir -p ~/.local/share/applications);(cp /usr/share/applications/vlc.desktop ~/.local/share/applications);(sed -i 's/Exec=\/usr\/bin\/vlc --started-from-file %U/Exec=sh -c "\/usr\/bin\/vlc --started-from-file %U; gsettings reset com.canonical.indicator.sound interested-media-players"/' ~/.local/share/applications/vlc.desktop)
-
将Rhythmbox条目留在声音指示器中:
(mkdir -p ~/.local/share/applications);(cp /usr/share/applications/vlc.desktop ~/.local/share/applications);(sed -i 's/Exec=\/usr\/bin\/vlc --started-from-file %U/Exec=sh -c "\/usr\/bin\/vlc --started-from-file %U; gsettings set com.canonical.indicator.sound interested-media-players \\\"['\'rhythmbox.desktop\'']\\\""/' ~/.local/share/applications/vlc.desktop)
-
取消更改:
rm ~/.local/share/applications/vlc.desktop
这篇关于如何添加此function的文章执行相反的方案:
工具 – >首选项 – >全部 – >接口 – >控制接口 – > D-Bus控制接口