web-dev-qa-db-ja.com

UnityバーのサウンドメニューからVLCプレーヤーを削除する

そこにVLCを使用することはあまりないので、右上のサウンドメニューからVLCを削除します。それがどのようなものかを示す小さな画像を見つけました(サウンドメニューが開いており、VLCと他の音楽プレーヤーが表示されています)。

enter image description here

非常に低解像度の画像を提供して申し訳ありません。

8
Nick Bailuc
  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
    

注:誰かが サウンドインジケータメニューを変更して、非アクティブなプレーヤーからコントロールを非表示にしたり、閉じた後に削除したりする 。言い換えれば、実行中のプレイヤーにはフルコントロールがあり、閉じたプレイヤーにはランチャーのみ(コントロールボタンはありません)か、メニューから完全に消えます。

13
user.dz

サウンドメニューからVLCを削除する方法/サウンドメニューにVLCが再表示されないようにする方法

サウンドメニューからVLCを削除する

GUIメソッド

  • Dconfエディターをインストールする
  • Dconf-editorを開き、次を参照します:com/canonical/indicator/sound

enter image description here

  • サウンドメニュー(interested-media-players)アイテムのリストで、メニューに表示する必要がない/表示したくないアプリケーションを削除します。 dconf-editorを閉じます。

enter image description here

  • 完了、VLCはメニューから消えました。

enter image description hereenter image description here

コマンドラインメソッド

  • 現在のメニュー項目を読むには:

    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に置き換えます。ログアウトしてから再度ログインします。desktopfileはスクリプトにリダイレクトされ、スクリプトは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)

その他のアプリケーション

このメソッド/スクリプトは、サウンドメニューの他のアプリケーションにも使用できます。次に、他のアプリケーションに従って、スクリプトの最後のセクションの2行を変更する必要があります。

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

そして

subprocess.call(["/usr/bin/vlc"]) (change the command to run the application)
6
Jacob Vlijm

Ubuntu 14.04のシンプルなソリューション(1つのコマンドのみ、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
    
1
c4pp4

実行する場合にのみ、ユーザー定義のアプリケーションをサウンドメニューに表示します

以下のソリューションは、サウンドメニュー内の位置を使用して、複数のアプリケーションに同時に柔軟に使用できます。ユーザーは、どのアプリケーションがメニュー内で永続的な位置にあり、どのアプリケーションを閉じた後にサウンドメニューから削除するかを定義(および変更)できます。

enter image description hereenter image description here

それが何であり、何をするか

解決策は、スタートアップ(ログイン)から実行されるスクリプトの存在です。これにより、ユーザー定義のアプリケーションをサウンドメニューに表示できますが、それらのアプリケーションは閉じた後にサウンドメニューから削除されます。

スクリプトは、デスクトップファイルの機能には影響しません。プロセッサの負荷への影響に気付かず、メモリ使用量は無視できます。

使用方法

  • 以下のスクリプトを空のファイルにコピーし、cleanup_soundmenu.pyとして保存します

  • no_show =で始まる行には、アプリケーションが閉じられた後にメニューからクリーンアップする必要があるアプリケーションが設定されています。 2つの例を設定します:['rhythmbox', 'vlc']。名前はデスクトップファイルから派生し、.desktopから削除されます。

  • cleanup_intervalで始まる行では、ユーザーはクリーンアップチェックの間隔を定義できます。デフォルトでは10秒です。

  • Startup Applicationsに次の行を追加します([ダッシュ]> [スタートアップアプリケーション]> [追加])。

    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
Jacob Vlijm

記事 この機能を追加する方法については逆のシナリオを実行します:

ツール->設定->すべて->インターフェース->制御インターフェース-> D-Bus制御インターフェース

0
Hedwig