Показывать пользовательские приложения в звуковом меню только в том случае, если они запускают
. Решение ниже гибко применимо для нескольких приложений одновременно с позицией в меню звука. Пользователь может определить (и изменить), какие приложения имеют постоянную позицию в меню, и какие из них следует удалить из звукового меню после их закрытия.
Show пользовательские приложения в звуковом меню, только если они запускают
Существует решение сценария, запускаемого с момента запуска (login). Это позволяет пользовательским приложениям появляться в звуковом меню, но удаляет эти приложения из звукового меню после их закрытия.
Скрипт не влияет на функциональность файлов рабочего стола.
как использовать
Скопировать сценарий ниже в пустой файл, сохранить его как cleanup_soundmenu.py. В line, начиная с no_show =, устанавливаются приложения, которые следует очищать из меню после их закрытия. Предусмотрены два примера: ['rhythmbox', 'vlc']. Эти имена вынырнули из своих файлов на рабочем столе, разделившись с .desktop. В строке, начиная с cleanup_interval, пользователь может определить интервал между проверками очистки. По умолчанию это 10 секунд. Добавьте следующую строку в Startup Applications (Dash> Startup Applications> Add):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)
Я вижу то же самое со свежей установкой эффектов 16.04 и 16.10 эффектов и juju. Кажется, что-то с LXD-сервисом, использующим два экземпляра. Я предлагаю попытаться удалить обе установки lxd и установить один через snap.
Удачи и дайте мне знать, если вы преуспеете
Matee