外部デバイスがランチャーにロックされるのを防ぐ

外部デバイスがランチャーにロックされるのを防ぐ

外部デバイス(USB スティックや Android スマートフォンなど)を接続すると、自動的に Nautilus で開き、対応するアイコンが Unity Launcher にロックされます。これを防ぐ方法はありますか?

私はUbuntu 14.04を使用しています

答え1

Unityランチャーからデバイスのロックを解除すると、実際にはブラックリスト入りランチャーから。次のコマンドで、現在ブラックリストに登録されているデバイスを確認できます。

gsettings get com.canonical.Unity.Devices blacklist

以下のスクリプトは、独自の設定を行う別の方法です。ブラックリストに登録されたデバイス違いは、スクリプトはファイルを削除するまで永続的にそれを実行することです~/.blacklist_data。(説明を参照:使い方

背景スクリプト

背景スクリプトとしても、これは非常にブラックリストに変更がない場合、コマンドによって現在のブラックリストのみが読み取られるため、軽量です。フォーマットされたデータベースgsettingsを読み取るため、非常に軽量です。dconfbinary

スクリプト

#!/usr/bin/env python3
import subprocess
import os
import time

blacklist_data = os.environ["HOME"]+"/.blacklist_data"

def get_setlist():
    cmd = "gsettings get com.canonical.Unity.Devices blacklist"
    blacklist = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()
    return "[]" if blacklist == "@as []" else blacklist

try:
    blacklist1 = str(open(blacklist_data).read()).strip()
    cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+blacklist1+'"'
    subprocess.call(["/bin/bash", "-c", cmd])
except FileNotFoundError:
    blacklist1 = "[]"
    open(blacklist_data, "wt").write(blacklist1)

while True:
    time.sleep(1)
    blacklist2 = get_setlist()
    if blacklist2 != blacklist1:
        oldlist = open(blacklist_data).read().strip()
        n_old = len(eval(oldlist))
        try:
            n_new = len(eval(blacklist2))
        except SyntaxError:
            n_new = 0
        if n_old < n_new:
            open(blacklist_data, "wt").write(blacklist2)
        else:
            cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+oldlist+'"'
            subprocess.call(["/bin/bash", "-c", cmd])
    blacklist1 = blacklist2

使い方

  1. スクリプトを空のファイルにコピーし、myown_blacklist.py
  2. 次のコマンドでテスト実行します:

    python3 /pat/to/myown_blacklist.py`
    

    これで、不要なデバイス(USB デバイスだけでなく、あらゆるデバイス)のロックを解除できます。ロック解除は 1 回だけ必要です。

  3. すべて正常に動作する場合は、スタートアップ アプリケーションに追加します。[Dash] > [スタートアップ アプリケーション] > [追加] を選択します。次のコマンドを追加します。

    python3 /pat/to/myown_blacklist.py`
    

使い方

問題は、Unity がデバイスをマウント解除するとそれを「忘れる」ことです。スクリプトは、次の出力に何が起こるかを追跡します。

gsettings get com.canonical.Unity.Devices blacklist

リストにアイテムが追加されると、スクリプトはリストをホームディレクトリの隠しファイルに書き込みます。アイテムが削除されると、隠しファイルを読み取り、ブラックリストを復元します (これはデバイスのアンマウント時に 1 回だけ必要です)

関連情報