Si je connecte un périphérique externe (une clé USB, un smartphone Android, par exemple), celui-ci s'ouvre automatiquement dans Nautilus et une icône correspondante est verrouillée dans le lanceur de l'unité. Est-il un moyen d'empêcher cela?
J'utilise Ubuntu 14.04
Si vous déverrouillez un appareil à partir du programme de lancement d'Unity, il est en réalité sur liste noire à partir du programme de lancement. Vous pouvez voir quels périphériques sont actuellement sur la liste noire à l'aide de la commande:
gsettings get com.canonical.Unity.Devices blacklist
Le script ci-dessous est une autre façon de définir votre propre appareils sur liste noire. La différence est que le script le fait de manière permanente, jusqu'à ce que vous supprimiez le fichier ~/.blacklist_data
. (voir explication: Comment ça marche)
Même pour un script en tâche de fond, celui-ci est extrêmement léger, en raison du fait que, si rien ne change à la liste noire, seule la liste noire actuelle est lue par la commande gsettings
. Il lit la base de données dconf
, qui est au format binary
et est donc très légère.
#!/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
myown_blacklist.py
Testez-le avec la commande:
python3 /pat/to/myown_blacklist.py`
Maintenant, déverrouillez vos périphériques indésirables (tous, cela ne fonctionne pas uniquement sur les périphériques usb). Le déverrouillage n'est nécessaire qu'une seule fois.
Si tout fonctionne correctement, ajoutez-le aux applications de démarrage: choisissez Tableau de bord> Applications de démarrage> Ajouter. Ajoutez la commande:
python3 /pat/to/myown_blacklist.py`
Le problème est que Unity "oublie" les périphériques une fois qu'ils sont démontés. Le script garde ensuite une trace de ce qui arrive à la sortie de:
gsettings get com.canonical.Unity.Devices blacklist
Si un élément est ajouté à la liste, le script écrit la liste dans un fichier caché de votre répertoire personnel. Si un élément est supprimé, il lit le fichier caché et restaure la liste noire (ceci n'est nécessaire qu'une fois lors du démontage de l'appareil).