Impedisce il blocco dei dispositivi esterni all'avvio

4

Se collego un dispositivo esterno (come una chiavetta USB o uno smartphone Android), si aprirà automaticamente in nautilus e otterrà un'icona corrispondente bloccata su unità di avvio. C'è un modo per impedirlo?

Sto usando Ubuntu 14.04

    
posta amoz871 19.01.2016 - 12:32

1 risposta

3

Se si sblocca un dispositivo da Unity Launcher, esso è effettivamente nella lista nera dal launcher. Puoi vedere quali dispositivi sono attualmente nella lista nera dal comando:

gsettings get com.canonical.Unity.Devices blacklist

Lo script di seguito è un modo alternativo per impostare i propri dispositivi nella lista nera . La differenza è che lo script lo fa in modo permanente, fino a quando non si rimuove il file ~/.blacklist_data . (vedi spiegazione: Come funziona )

script di sfondo

Anche per uno script in background, questo è estremamente leggero, in conseguenza del fatto che, se nulla cambia nella blacklist, solo la blacklist corrente viene letta dal comando gsettings . Legge il database dconf , che è in formato binary , e quindi molto leggero.

Lo 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

Come usare

  1. Copia lo script in un file vuoto, salvalo come myown_blacklist.py
  2. Test - eseguilo con il comando:

    python3 /pat/to/myown_blacklist.py'
    

    Ora sblocca i dispositivi indesiderati (qualsiasi dispositivo non funziona solo su dispositivi USB). Lo sblocco è necessario solo una volta.

  3. Se tutto funziona correttamente, aggiungilo alle applicazioni di avvio: scegli Dash & gt; Applicazioni di avvio & gt; Inserisci. Aggiungi il comando:

    python3 /pat/to/myown_blacklist.py'
    

Come funziona

Il problema è che Unity "dimentica" i dispositivi una volta smontati. Lo script tiene quindi traccia di ciò che accade all'output di:

gsettings get com.canonical.Unity.Devices blacklist

Se un elemento viene aggiunto alla lista, lo script scrive l'elenco in un file nascosto nella tua home directory. Se un elemento viene rimosso, legge il file nascosto e ripristina la lista nera (questo è necessario solo una volta durante lo smontaggio del dispositivo)

    
risposta data Jacob Vlijm 19.01.2016 - 15:23

Leggi altre domande sui tag