Comment arrêter les icônes de partition dans le lanceur Unity?

8

Nouveau problème. Ubuntu 16.04 / 16.10. Maintenant, chaque fois que je démarre gparted, de nouvelles icônes de partition de disque apparaissent, juste au-dessus de l'icône de la corbeille, dans le lanceur Unity. Je dois "déverrouiller du lanceur" pour m'en débarrasser.

Les publications plus anciennes pour les anciennes versions d'Ubuntu proposent diverses corrections qui ne s'appliquent plus en 16.04 / 16.10. Des idées sur la façon de se débarrasser définitivement de ces icônes embêtantes?

Voici une capture d'écran qui montre les 3 icônes, juste au-dessus de l'icône de la poubelle:

entrez la description de l'image ici

heynnema
la source
Veuillez ajouter une capture d'écran
You'reAGitForNotUsingGit
La capture d'écran ne me permet pas de prendre un instantané des 3 icônes de partition de disque qui sont ajoutées chaque fois que je lance gparted, car le lanceur ne défilera pas au bas de la liste du lanceur lorsque la capture d'écran est active. ps: Si je pouvais obtenir une capture d'écran, comment l'ajouter à l'avenir?
heynnema
Lorsque vous modifiez votre publication, dans la barre supérieure, il y a une petite icône d'image. Si vous cliquez dessus, il vous permet d'incorporer une image.
You'reAGitForNotUsingGit
De plus, si vous dites à la capture d'écran de faire une capture de fenêtre complète avec un retard, cela devrait fonctionner :)
You'reAGitForNotUsingGit

Réponses:

6

La cause

La suppression d'appareils du lanceur mettra l'appareil sur liste noire dans la gsettingstouche ( )

com.canonical.Unity.Devices blacklist

Cependant, si le périphérique est supprimé (déconnecté de quelque manière que ce soit), le périphérique est également supprimé de la liste noire. La prochaine fois que vous connectez l'appareil, l'histoire recommence.

La solution

La solution ci-dessous stockera les appareils sur liste noire dans un fichier. Après les avoir supprimés une fois , l'appareil n'apparaîtra plus jamais dans le lanceur. Si vous déconnectez un périphérique, le script ajoutera (ré) immédiatement le périphérique en tant que liste noire.

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

Comment utiliser

  1. Copiez le script dans un fichier vide
  2. Enregistrez-le sous remember_blacklist.py
  3. Testez-le par la commande:

    python3 /path/to/remember_blacklist.py
    
  4. Si tout fonctionne bien, ajoutez aux applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajoutez la commande:

    python3 /path/to/remember_blacklist.py
    

Remarque

  1. La lecture de gsettings(pratiquement tout ce que fait le script) est extrêmement légère et n'ajoutera aucune charge notable à votre système
  2. Si (et tant que) l'appareil est ouvert dans n'importe quelle nautilusfenêtre, il apparaîtra toujours dans le lanceur. L'icône ne sera cependant pas verrouillée sur le lanceur et disparaîtra.
Jacob Vlijm
la source
Merci de votre aide! Je vais le tester sous peu. Ensuite, je reviendrai et voterai / accepterai.
heynnema
1
Semble fonctionner! Quand je le testais, j'ai fait un contrôle-c pour l'arrêter, et j'ai eu ceci ... $ python3 ~/bin/remember_blacklist.py ^CTraceback (most recent call last): File "/home/alheynneman/bin/remember_blacklist.py", line 23, in <module> time.sleep(2) KeyboardInterruptComment serait-il difficile d'ajouter un gestionnaire "d'interruption" qui mène à une belle sortie propre?
heynnema
@heynnema ouais, c'est ce que vous devriez obtenir en appuyant sur Ctrl -c. Cela signifie que la boucle a été arrêtée par Ctrl c. Sinon, la boucle serait impossible à arrêter.
Jacob Vlijm
1
Que se passerait-il ... et je suppose que ce ne serait jamais le cas si c'était dans Startup Applications... qu'un contrôle-c (ou un kill?) Interromprait l'écriture dans le .blacklist_data et le corromprait?
heynnema
Nono, c'est là que vous l'exécutez à partir d'un terminal :)
Jacob Vlijm