
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 ícono correspondiente en Unity Launcher. hay alguna forma de prevenir esto?
Estoy usando Ubuntu 14.04
Respuesta1
Si desbloquea un dispositivo desde Unity Launcher, en realidaden la lista negradesde el lanzador. Puedes 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 el tuyo propio.dispositivos en la lista negra. La diferencia es que el script lo hace de forma permanente, hasta que eliminas el archivo ~/.blacklist_data
. (ver explicación:Cómo funciona)
guión de fondo
Incluso para un guión de fondo, este esextremadamenteliviano, como resultado del hecho de que, si nada cambia en la lista negra, el gsettings
comando solo lee la lista negra actual. Lee la dconf
base de datos, que está en binary
formato y, por tanto, es muy ligera.
La secuencia de comandos
#!/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 utilizar
- Copie el script en un archivo vacío, guárdelo como
myown_blacklist.py
Pruebe: ejecútelo con el comando:
python3 /pat/to/myown_blacklist.py`
Ahora desbloquee sus (cualquiera, no solo funciona con dispositivos USB) dispositivos no deseados. El desbloqueo sólo es necesario una vez.
Si todo funciona bien, agréguelo a Aplicaciones de inicio: elija Tablero > 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 es necesario una vez al desmontar el dispositivo)