Si je connecte un périphérique externe (tel qu'une clé USB ou un smartphone Android), il s'ouvrira automatiquement dans Nautilus et obtiendra une icône correspondante verrouillée sur le lanceur d'unité. Existe-t-il un moyen d'empêcher cela ?
J'utilise Ubuntu 14.04
Réponse acceptée :
Si vous déverrouillez un appareil depuis Unity Launcher, il est en fait sur liste noire du lanceur. Vous pouvez voir quels appareils sont actuellement mis sur liste noire par la commande :
gsettings get com.canonical.Unity.Devices blacklist
Le script ci-dessous est une autre façon de définir vos propres 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 )
script d'arrière-plan
Même pour un script d'arrière-plan, celui-ci est extrêmement poids léger, du fait que, si rien ne change dans la liste noire, seule la liste noire en cours est lue par le gsettings
commande. Il lit le dconf
base de données, qui est en binary
format, et donc très léger.
Le scénario
#!/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
Comment utiliser
- Copiez le script dans un fichier vide, enregistrez-le sous
myown_blacklist.py
-
Testez-le avec la commande :
python3 /pat/to/myown_blacklist.py`
Maintenant, déverrouillez vos appareils indésirables (tous, cela ne fonctionne pas seulement les appareils USB). Le déverrouillage n'est nécessaire qu'une seule fois.
-
Si tout fonctionne correctement, ajoutez-le aux applications de démarrage :choisissez Dash> Startup Applications> Add. Ajoutez la commande :
python3 /pat/to/myown_blacklist.py`
Comment ça marche
Le problème est que Unity "oublie" les appareils 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 seule fois lors du démontage de l'appareil)
Connexe :le package "grub-efi-amd64-signed" n'a pas réussi à installer la cible /?