
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 dconf
Datenbank gelesen, die im binary
Format 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
- Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter
myown_blacklist.py
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.
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).