Wie stoppe ich Partitionssymbole in Unity Launcher?

8

Neues Problem. Ubuntu 16.04 / 16.10. Wenn ich jetzt mit gparted beginne, werden im Unity-Starter neue Symbole für die Festplattenpartition direkt über dem Papierkorbsymbol angezeigt. Ich muss "vom Launcher entsperren", um sie loszuwerden.

Ältere Beiträge für ältere Versionen von Ubuntu schlagen verschiedene Korrekturen vor, die in 16.04 / 16.10 nicht mehr gelten. Irgendwelche Ideen, wie man diese lästigen Symbole dauerhaft loswird?

Hier ist ein Screenshot, der die 3 Symbole direkt über dem Papierkorbsymbol zeigt:

Geben Sie hier die Bildbeschreibung ein

Heynnema
quelle
Bitte fügen Sie einen Screenshot hinzu
You'reAGitForNotUsingGit
Mit Screenshot kann ich nicht die 3 Festplattenpartitionssymbole aufnehmen, die hinzugefügt werden, wenn ich gparted ausführe, da der Launcher bei aktivem Screenshot nicht zum Ende der Launcher-Liste scrollt. ps: Wenn ich einen Screenshot bekommen könnte, wie füge ich ihn in Zukunft hinzu?
Heynnema
Wenn Sie Ihren Beitrag bearbeiten, befindet sich in der oberen Leiste ein kleines Bildsymbol. Wenn Sie darauf klicken, können Sie ein Bild einbetten.
You'reAGitForNotUsingGit
Auch wenn Sie Screenshot
anweisen,

Antworten:

6

Die Ursache

Wenn Sie Geräte aus dem Launcher entfernen, wird das Gerät in der gsettingsTaste ( ) auf die schwarze Liste gesetzt

com.canonical.Unity.Devices blacklist

Wenn das Gerät jedoch entfernt (in irgendeiner Weise getrennt) wird, wird das Gerät auch von der Blacklist entfernt. Wenn Sie das Gerät das nächste Mal anschließen, beginnt die Geschichte von vorne.

Die Lösung

Die folgende Lösung speichert Geräte auf der schwarzen Liste in einer Datei. Nach einmaligem Entfernen wird das Gerät nie wieder im Launcher angezeigt. Wenn Sie ein Gerät trennen, fügt das Skript das Gerät sofort (erneut) als schwarze Liste hinzu.

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

key = "com.canonical.Unity.Devices"
bl_file = os.environ["HOME"]+"/.blacklist_data"

while True:
    time.sleep(2)

    current = subprocess.check_output([
        "gsettings", "get", key, "blacklist",
        ]).decode("utf-8")
    if "@as" in current:
        current = []
    else:
        current = eval(current)        
    try:
        r = open(bl_file).read()
        r = [] if r == '' else r.splitlines()           
    except FileNotFoundError:
        r = []
    if current != r:
        newlist = list(set([d for d in current+r if not d == '']))
        open(bl_file, "wt").write("\n".join(newlist))
        subprocess.Popen(["gsettings", "set", key, "blacklist", str(newlist)])

Wie benutzt man

  1. Kopieren Sie das Skript in eine leere Datei
  2. Speichern Sie es als remember_blacklist.py
  3. Testen Sie es mit dem folgenden Befehl:

    python3 /path/to/remember_blacklist.py
    
  4. Wenn alles einwandfrei funktioniert, fügen Sie Startanwendungen hinzu: Dash> Startanwendungen> Hinzufügen. Fügen Sie den Befehl hinzu:

    python3 /path/to/remember_blacklist.py
    

Hinweis

  1. Das Lesen von gsettings(praktisch alles, was das Skript tut) ist extrem leicht und belastet Ihr System nicht merklich
  2. Wenn (und solange) das Gerät in einem nautilusFenster geöffnet ist , wird es weiterhin im Launcher angezeigt . Das Symbol wird jedoch nicht an den Launcher gebunden und verschwindet.
Jacob Vlijm
quelle
Danke für Ihre Hilfe! Ich werde es in Kürze testen. Dann werde ich zurückkommen und abstimmen / akzeptieren.
Heynnema
1
Scheint zu funktionieren! Als ich es getestet habe, habe ich ein Control-C ausgeführt, um es zu stoppen, und ich habe Folgendes ... $ python3 ~/bin/remember_blacklist.py ^CTraceback (most recent call last): File "/home/alheynneman/bin/remember_blacklist.py", line 23, in <module> time.sleep(2) KeyboardInterruptWie schwierig wäre es, einen "Interrupt" -Handler hinzuzufügen, der zu einem schönen, sauberen Ausgang führt?
Heynnema
@heynnema ja, das ist, was Sie sollten erhalten , wenn Strg - c drücken. Dies bedeutet, dass die Schleife durch Strg c gestoppt wurde. Andernfalls wäre die Schleife nicht zu stoppen.
Jacob Vlijm
1
Was würde passieren ... und ich nehme an, es würde niemals passieren, wenn Startup Applicationsein Control-C (oder ein Kill?) Das Schreiben in die .blacklist_data unterbrechen und es beschädigen würde?
Heynnema
Nono, dann führen Sie es von einem Terminal aus :)
Jacob Vlijm