¿Cómo detener los iconos de partición en el lanzador de Unity?

8

Nuevo problema Ubuntu 16.04 / 16.10. Ahora, cada vez que inicio gparted, aparecen nuevos iconos de partición de disco, justo encima del icono de la papelera, en el iniciador de Unity. Tengo que "desbloquearlo desde el lanzador" para deshacerme de ellos.

Las publicaciones anteriores para versiones anteriores de Ubuntu proponen varias correcciones que ya no se aplican en 16.04 / 16.10. ¿Alguna idea de cómo deshacerse permanentemente de estos molestos íconos?

Aquí hay una captura de pantalla que muestra los 3 íconos, justo arriba del ícono de la papelera:

ingrese la descripción de la imagen aquí

heynnema
fuente
Agregue una captura de pantalla
You'reAGitForNotUsingGit
La captura de pantalla no me permite tomar una instantánea de los 3 íconos de partición de disco que se agregan cada vez que ejecuto gparted, porque el iniciador no se desplazará al final de la lista de iniciadores cuando Captura de pantalla esté activa. ps: si pudiera obtener una captura de pantalla, ¿cómo la agrego en el futuro?
heynnema
Cuando está editando su publicación, en la barra superior, hay un pequeño icono de imagen. Si hace clic en él, le permite incrustar una imagen.
You'reAGitForNotUsingGit
Además, si le dice a la captura de pantalla que haga una captura de ventana completa con un retraso, debería funcionar :)
You'reAGitForNotUsingGit

Respuestas:

6

La causa

La eliminación de dispositivos del iniciador incluirá en la lista negra el dispositivo en la gsettingstecla ( )

com.canonical.Unity.Devices blacklist

Sin embargo, si se elimina el dispositivo (desconectado de alguna manera), el dispositivo también se elimina de la lista negra. La próxima vez que conecte el dispositivo, la historia comienza de nuevo.

La solución

La solución a continuación almacenará los dispositivos en la lista negra en un archivo. Después de eliminarlos una vez , el dispositivo nunca volverá a aparecer en el iniciador. Si desconecta un dispositivo, el script inmediatamente (re) agregará el dispositivo como incluido en la lista negra.

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

Cómo utilizar

  1. Copie el script en un archivo vacío
  2. Guárdalo como remember_blacklist.py
  3. Prueba: ejecútelo con el comando:

    python3 /path/to/remember_blacklist.py
    
  4. Si todo funciona bien, agréguelo a Aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregar. Agrega el comando:

    python3 /path/to/remember_blacklist.py
    

Nota

  1. Leer de gsettings(prácticamente todo lo que hace el script) es extremadamente liviano y no agregará ninguna carga notable a su sistema
  2. Si (y por mucho tiempo) el dispositivo se abre en cualquier nautilusventana, seguirá apareciendo en el iniciador. Sin embargo, el icono no se bloqueará en el iniciador y desaparecerá.
Jacob Vlijm
fuente
¡Gracias por tu ayuda! Lo probaré en breve. Luego volveré y votaré / aceptaré.
heynnema
1
¡Parece funcionar! Cuando lo estaba probando, hice un control-c para detenerlo, y obtuve esto ... $ python3 ~/bin/remember_blacklist.py ^CTraceback (most recent call last): File "/home/alheynneman/bin/remember_blacklist.py", line 23, in <module> time.sleep(2) KeyboardInterrupt¿Qué tan difícil sería agregar un controlador de "interrupción" que vaya a una salida limpia y agradable?
heynnema
@heynnema sí, eso es lo que debes obtener al presionar Ctrl -c. Significa que Ctrl c detuvo el bucle. De lo contrario, el bucle sería imparable.
Jacob Vlijm el
1
¿Qué pasaría ... y supongo que nunca sucedería si estuviera en Startup Applications... que un control-c (o un kill?) Interrumpiría la escritura en .blacklist_data y la corrompería?
heynnema
Nono, ahí es cuando lo ejecutas desde una terminal :)
Jacob Vlijm