Se você desbloquear um dispositivo a partir do Unity Launcher, ele será realmente colocado na lista negra no iniciador. Você pode ver quais dispositivos estão atualmente na lista negra pelo comando:
gsettings get com.canonical.Unity.Devices blacklist
O script abaixo é uma maneira alternativa de configurar seus próprios dispositivos na lista negra . A diferença é que o script faz isso de maneira permanente, até que você remova o arquivo ~/.blacklist_data
. (veja a explicação: Como funciona )
script de plano de fundo
Mesmo para um script de segundo plano, este é extremamente leve, como resultado do fato de que, se nada mudar para a lista negra, somente a lista negra atual será lida pelo comando gsettings
. Ele lê o banco de dados dconf
, que está no formato binary
e, portanto, muito leve.
O script
#!/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
- Copie o script em um arquivo vazio, salve-o como
myown_blacklist.py
-
Teste - execute-o pelo comando:
python3 /pat/to/myown_blacklist.py'
Agora desbloqueie seus dispositivos indesejados (qualquer um, ele funciona não apenas dispositivos usb). Desbloqueio só é necessário uma vez.
-
Se tudo funcionar bem, adicione-o a Startup Applications: escolha Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
python3 /pat/to/myown_blacklist.py'
Como funciona
A questão é 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 gravará a lista em um arquivo oculto em seu diretório pessoal. Se um item for removido, ele lê o arquivo oculto e restaura a lista negra (isso é necessário apenas uma vez ao desmontar o dispositivo)