Impedir que dispositivos externos sejam bloqueados no inicializador

Impedir que dispositivos externos sejam bloqueados no inicializador

Se eu conectar um dispositivo externo (como um pendrive ou smartphone Android), ele será aberto automaticamente no nautilus e terá um ícone correspondente bloqueado no inicializador do Unity. Existe alguma maneira de evitar isso?

Estou usando Ubuntu 14.04

Responder1

Se você desbloquear um dispositivo no Unity Launcher, ele realmentena lista negrado lançador. Você pode ver quais dispositivos estão atualmente na lista negra pelo comando:

gsettings get com.canonical.Unity.Devices blacklist

O script abaixo é uma forma alternativa de definir o seu própriodispositivos na lista negra. A diferença é que o script faz isso de forma permanente, até que você remova o arquivo ~/.blacklist_data. (ver explicação:Como funciona)

roteiro de fundo

Mesmo para um script de fundo, este éextremamenteleve, pois, se nada mudar na lista negra, apenas a lista negra atual será lida pelo gsettingscomando. Ele lê o dconfbanco de dados, que está em binaryformato e, portanto, muito leve.

O roteiro

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

Como usar

  1. Copie o script em um arquivo vazio e salve-o comomyown_blacklist.py
  2. Teste - execute-o pelo comando:

    python3 /pat/to/myown_blacklist.py`
    

    Agora desbloqueie seus dispositivos indesejados (qualquer um, não funciona apenas com dispositivos USB). O desbloqueio só é necessário uma vez.

  3. Se tudo funcionar bem, adicione-o aos Aplicativos de Inicialização: escolha Dash > Aplicativos de Inicialização > Adicionar. Adicione o comando:

    python3 /pat/to/myown_blacklist.py`
    

Como funciona

O problema é que o Unity “esquece” os dispositivos quando eles são desmontados. O script então acompanha o que acontece com a saída de:

gsettings get com.canonical.Unity.Devices blacklist

Se um item for adicionado à lista, o script grava a lista em um arquivo oculto em seu diretório inicial. Se um item for removido, ele lê o arquivo oculto e restaura a lista negra (isso só é necessário uma vez na desmontagem do dispositivo)

informação relacionada