Verhindern, dass externe Geräte an den Launcher gebunden werden

Verhindern, dass externe Geräte an den Launcher gebunden werden

Wenn ich ein externes Gerät (wie einen USB-Stick oder ein Android-Smartphone) anschließe, wird es automatisch in Nautilus geöffnet und erhält ein entsprechendes Symbol, das an den Unity Launcher gebunden ist. Gibt es eine Möglichkeit, dies zu verhindern?

Ich verwende Ubuntu 14.04

Antwort1

Wenn Sie ein Gerät über den Unity Launcher entsperren,auf die schwarze Liste gesetztvom Launcher aus. Sie können sehen, welche Geräte derzeit auf der schwarzen Liste stehen, indem Sie den folgenden Befehl ausführen:

gsettings get com.canonical.Unity.Devices blacklist

Das folgende Skript ist eine alternative Möglichkeit, Ihr eigenesGeräte auf der schwarzen Liste. Der Unterschied besteht darin, dass das Skript dies dauerhaft tut, bis Sie die Datei entfernen ~/.blacklist_data. (siehe Erklärung:Wie es funktioniert)

Hintergrundskript

Selbst für ein Hintergrundskript ist diesäußerstgeringes Gewicht, da, wenn sich an der Blacklist nichts ändert, vom Befehl nur die aktuelle Blacklist gelesen wird gsettings. Es wird die dconfDatenbank gelesen, die im binaryFormat vorliegt und daher sehr leichtgewichtig ist.

Das Drehbuch

#!/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

Wie benutzt man

  1. Kopieren Sie das Skript in eine leere Datei und speichern Sie es untermyown_blacklist.py
  2. Testen Sie es. Führen Sie es mit dem folgenden Befehl aus:

    python3 /pat/to/myown_blacklist.py`
    

    Entsperren Sie jetzt Ihre (alle, es funktioniert nicht nur USB-Geräte) unerwünschten Geräte. Das Entsperren ist nur einmal erforderlich.

  3. Wenn alles funktioniert, fügen Sie es zu den Startprogrammen hinzu: Wählen Sie Dash > Startprogramme > Hinzufügen. Fügen Sie den Befehl hinzu:

    python3 /pat/to/myown_blacklist.py`
    

Wie es funktioniert

Das Problem besteht darin, dass Unity Geräte „vergisst“, sobald sie ausgehängt sind. Das Skript verfolgt dann, was mit der Ausgabe von Folgendem passiert:

gsettings get com.canonical.Unity.Devices blacklist

Wenn ein Element zur Liste hinzugefügt wird, schreibt das Skript die Liste in eine versteckte Datei in Ihrem Home-Verzeichnis. Wenn ein Element entfernt wird, liest es die versteckte Datei und stellt die Blacklist wieder her (dies ist nur einmal beim Aushängen des Geräts erforderlich).

verwandte Informationen