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

11

Я не использую VLC так часто, чтобы иметь его там, поэтому я хотел бы удалить его из меню звука в правом верхнем углу. Я нашел небольшое изображение, чтобы показать, как оно выглядит (звуковое меню открыто и показывает VLC вместе с другими музыкальными проигрывателями).

введите описание изображения здесь

Извините за предоставление изображения с очень низким разрешением.

Ник Бейлук
источник
Я задавал этот вопрос раньше, так что это своего рода дубликат. Хотя это требует только удаления VLC из звукового меню, а не прекращения его постоянного появления. Не уверен, что оба ответа должны оставаться открытыми. askubuntu.com/questions/455940/...
Aibara
Ник, я отредактировал свой ответ, чтобы он (навсегда) не вернулся в звуковое меню.
Джейкоб Влейм
да, он появляется каждый раз, когда я использую VLC. Я просматриваю интернет-учебники о том, как отключить его в настройках и не могу найти его, потому что моя версия слишком новая. его называют "D-Bus"
Ник Бейлук
Возможный дубликат: askubuntu.com/questions/177652/disable-vlcs-mpris-plugian
Exeleration-G

Ответы:

14
  1. Переместить плагин VLC DBus

    sudo mv /usr/lib/vlc/plugins/control/libdbus_plugin.so /usr/lib/vlc/plugins/control/libdbus_plugin.so.backup
    
  2. Открыть dconf-editor, Удалить vlc.desktopиз:

    /com/canonical/indicator/sound/interested-media-players
    

    Или просто сбросить через терминал

    dconf reset /com/canonical/indicator/sound/interested-media-players
    

Примечание. Кто-то может захотеть изменить меню звукового индикатора, чтобы скрыть элементы управления от неактивного плеера или удалить его после закрытия . Другими словами, бегущие игроки имеют полный контроль, закрытые - либо только панель запуска (без кнопок управления), либо полностью исчезают из меню.

user.dz
источник
3
Это исправление работает также!
Айбара
6

Как удалить 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из списка и установите измененное меню командой:

    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=помощью 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)
Якоб Влейм
источник
Я сделал метод терминала, потому что я не хотел устанавливать ненужные приложения. спасибо, это сработало мгновенно
Ник Байлук
1
Согласен! если нет необходимости, я бы предпочел не устанавливать дополнительное программное обеспечение. Рад, что все получилось.
Джейкоб Влейм
Но это будет читаться, как только вы снова откроете VLC ...
Aibara
Исправление: как только вы снова начнете воспроизводить видео в VLC.
Айбара
1
@NickBailuc Я пытался, и вы правы, я перезвоню вам об этом!
Джейкоб Влейм
1

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

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

введите описание изображения здесь введите описание изображения здесь

Что это такое и что оно делает

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

Скрипт не влияет на функциональность файлов рабочего стола. Я не мог заметить никакого влияния на загрузку процессора, использование памяти незначительно.

как пользоваться

  • Скопируйте приведенный ниже скрипт в пустой файл и сохраните его как cleanup_soundmenu.py

  • В строке, начинающейся с 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)
Якоб Влейм
источник
Да, это работает, но запуск проверки каждые 10 секунд на событие, которое может происходить один или два раза за сеанс, кажется крайне неэффективным.
Лилли
@Lilley получать значения из gsettings очень легко, и имейте в виду тот факт, что система постоянно запускает все виды циклов.
Джейкоб Влейм
1

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

Откройте приложение «Терминал», затем скопируйте, вставьте и выполните одну из следующих команд. После этого звуковой индикатор будет автоматически очищен после выхода из VLC.

  1. не оставляйте никаких записей в звуковом индикаторе:

    (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)
    
  2. оставьте запись 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)
    
  3. отменить изменения:

    rm ~/.local/share/applications/vlc.desktop
    
c4pp4
источник
0

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

Сервис -> Настройки -> все -> Интерфейс -> Интерфейс управления -> Интерфейс управления D-Bus

Хедвиг
источник
3
Эта опция больше не присутствует в VLC.
Айбара
О, это существует для меня, возможно, у меня есть старая версия ..
Хедвиг