Si conecto un dispositivo externo (como una memoria USB o un teléfono inteligente Android), se abrirá automáticamente en nautilus y se bloqueará el icono correspondiente en el iniciador de Unity. ¿Hay alguna forma de evitar esto?
Estoy usando Ubuntu 14.04
Respuesta aceptada:
Si desbloquea un dispositivo desde Unity Launcher, en realidad está en la lista negra desde el lanzador. Puede ver qué dispositivos están actualmente en la lista negra con el comando:
gsettings get com.canonical.Unity.Devices blacklist
El siguiente script es una forma alternativa de configurar sus propios dispositivos en la lista negra . La diferencia es que el script lo hace de forma permanente, hasta que elimines el archivo ~/.blacklist_data
. (ver explicación:Cómo funciona )
secuencia de comandos de fondo
Incluso para un guión de fondo, este es extremadamente peso ligero, como resultado del hecho de que, si nada cambia en la lista negra, solo la lista negra actual es leída por gsettings
dominio. Lee el dconf
base de datos, que está en binary
formato, y por lo tanto muy ligero.
El guión
#!/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
Cómo usar
- Copie el script en un archivo vacío, guárdelo como
myown_blacklist.py
-
Pruébalo:ejecútalo con el comando:
python3 /pat/to/myown_blacklist.py`
Ahora desbloquee sus dispositivos no deseados (cualquiera, no solo funciona con dispositivos USB). El desbloqueo solo es necesario una vez.
-
Si todo funciona bien, agréguelo a Aplicaciones de inicio:elija Dash> Aplicaciones de inicio> Agregar. Agregue el comando:
python3 /pat/to/myown_blacklist.py`
Cómo funciona
El problema es que Unity "olvida" los dispositivos una vez que se desmontan. Luego, el script realiza un seguimiento de lo que sucede con la salida de:
gsettings get com.canonical.Unity.Devices blacklist
Si se agrega un elemento a la lista, el script escribe la lista en un archivo oculto en su directorio de inicio. Si se elimina un elemento, lee el archivo oculto y restaura la lista negra (esto solo se necesita una vez al desmontar el dispositivo)
Relacionado:El paquete 'grub-efi-amd64-signed' no pudo instalar target/?