Удалить проигрыватель VLC из меню звука в панели Unity

Я знаю, что этот вопрос действительно старый, но, пройдя ту же проблему, я думаю, что, наконец, создал обходной путь для этого и решил поделиться с кем-то, у кого есть эта проблема:

не может установить несколько WMClasses для одного файла .desktop, почему бы не установить все окна на один WMClass?

Мы можем сделать что-то вроде этого (очевидно, заменим Window 1, Window 2 и potatoes с вашими именами окон и желаемым WMClass):

xprop -name "Window 1" -f WM_CLASS 8s -set WM_CLASS "potatoes"

xprop -name "Window 2" -f WM_CLASS 8s -set WM_CLASS "potatoes"

И в файле .desktop мы можем сделать это: StartupWMClass=potatoes

Tadam! Теперь все окна сгруппированы. Но эй, мы делаем это вручную каждый раз, когда программа открывается? Конечно, нет.

Мы можем просто пойти и сделать сценарий bash, который автоматически выполняет это каждые полсекунды:

while true
do
    xprop -name "Window 1" -f WM_CLASS 8s -set WM_CLASS "potatoes"
    xprop -name "Window 2" -f WM_CLASS 8s -set WM_CLASS "potatoes"
    sleep 0.5
done

И, наконец, установите .sh, которые мы создали, чтобы запускать каждый время запуска ОС:

Надеюсь, что мой ответ будет полезен любому, кто просматривает этот вопрос.

1
задан 20 May 2014 в 08:35

4 ответа

Как удалить VLC из меню звука / Как предотвратить повторное появление VLC в звуковом меню.

Как удалить VLC из меню звука / Как предотвратить повторное появление VLC в звуковое меню.

GUI method

Установить dconf editor Открыть dconf-editor и перейти к: com/canonical/indicator/sound

Установить dconf editor

enter image description here

Готово, VLC исчез из меню.

GUI method

Done, VLC исчез из меню. Открыть dconf -editor и перейдите к: com/canonical/indicator/sound

Предотвращение возврата VLC в звуковое меню (14.04)

Решение удаляет VLC из звукового меню, но если вы запускаете VLC, он снова появится в меню звука. Сценарий ниже не предотвращает это, но сразу и автоматически удаляет его, как только VLC закрыт.

Чтобы использовать его:

Скопируйте сценарий ниже, вставьте его в пустой текстовый файл и сохраните он как vlc, делает его исполняемым. Затем скопируйте файл vlc.desktop с /usr/share/applications на ~/.local/share/applications и замените (первую) строку, начиная с Exec= на 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)

Предотвращение VLC от возврат в звуковое меню (14.04)

Этот метод / сценарий также можно использовать для других приложений в меню звука. Две строки в последнем разделе скрипта должны быть изменены тогда, согласно другому приложению:

if item == "vlc.desktop":  (change to desktop file of the application)

и

subprocess.call(["/usr/bin/vlc"]) (change the command to run the application)
6
ответ дан 24 May 2018 в 07:37
  • 1
    Я сделал метод терминала, потому что я не хотел устанавливать ненужные приложения. спасибо, он работал мгновенно – Nick Bailuc 19 May 2014 в 21:02
  • 2
    Согласен! если не нужно, я бы предпочел не устанавливать дополнительное программное обеспечение. Рад, что это сработало. – Jacob Vlijm 19 May 2014 в 21:05
  • 3
    Но он будет прочтён, как только вы снова откроете VLC ... – Aibara Iduas 23 May 2014 в 21:36
  • 4
    Коррекция: как только вы снова начнете воспроизводить видео в VLC. – Aibara Iduas 23 May 2014 в 21:50
  • 5
    @NickBailuc Я пробовал, и вы правы, я вернусь к вам по этому поводу! – Jacob Vlijm 14 June 2014 в 23:33

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

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

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
ответ дан 24 May 2018 в 07:37
  • 1
    Да, это работает, но проверка каждые 10 секунд для события, которое может произойти один или два раза за сеанс, кажется крайне неэффективным. – Lilley 11 March 2015 в 04:24
  • 2
    @Lilley, получающий значения из gsettings, чрезвычайно легковесен, и имейте в виду, что система постоянно работает со всеми типами циклов. – Jacob Vlijm 11 March 2015 в 09:23

Простое решение Ubuntu 14.04 (только одна команда, без sudo, no script).

Откройте приложение Terminal, затем скопируйте, вставьте и выполните одну из следующих команд. После этого после того, как 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)
отменять изменения: [ f3]
1
ответ дан 24 May 2018 в 07:37

В этой статье о том, как добавить эту функцию, выполните противоположный сценарий:

Инструменты -> Настройки -> все -> Интерфейс -> Интерфейс управления -> Интерфейс управления D-Bus
0
ответ дан 24 May 2018 в 07:37
  • 1
    Этот параметр больше не присутствует в VLC. – Aibara Iduas 25 May 2014 в 22:02
  • 2
    D'oh, это существует для меня, возможно, у меня старая версия. – Hedwig 25 May 2014 в 22:30

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

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