Как я получу заклинание для правильной работы?

Показывать пользовательские приложения в звуковом меню только в том случае, если они запускают

. Решение ниже гибко применимо для нескольких приложений одновременно с позицией в меню звука. Пользователь может определить (и изменить), какие приложения имеют постоянную позицию в меню, и какие из них следует удалить из звукового меню после их закрытия.

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)
1
задан 12 March 2017 в 21:51

1 ответ

Я вижу то же самое со свежей установкой эффектов 16.04 и 16.10 эффектов и juju. Кажется, что-то с LXD-сервисом, использующим два экземпляра. Я предлагаю попытаться удалить обе установки lxd и установить один через snap.

Удачи и дайте мне знать, если вы преуспеете

Matee

0
ответ дан 23 May 2018 в 00:42

Другие вопросы по тегам:

Похожие вопросы: