GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Evitar que los dispositivos externos se bloqueen en el lanzador?

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

  1. Copie el script en un archivo vacío, guárdelo como myown_blacklist.py
  2. 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.

  3. 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/?
Ubuntu
  1. ¿Evitar que los Syslogs se registren en Journalctl?

  2. ¿Agregar aplicaciones personalizadas a Gnome Launcher?

  3. ¿Usando Udev para montar automáticamente un disco duro externo?

  4. ¿Sin tablero, sin lanzador en Ubuntu 14.10?

  5. Al usar un servicio Vps, ¿puedo evitar que el host Vps acceda a los datos?

Cómo crear una tabla externa en Hive

Cómo evitar que un paquete se actualice en distribuciones de Linux basadas en Ubuntu y Debian

¿Icono sin icono duplicado del lanzador?

¿Cómo evitar que las pantallas se apaguen cuando la pantalla está bloqueada?

¿Qué es un DDoS y cómo evitamos que nuestro negocio sea atacado?

Evite que Ubuntu 14.04 se bloquee en virtualbox si Windows está bloqueado