Dans mon script bash, je monte des partitions, je les vérifie, je leur copie des fichiers et je les démonte. Lorsque le script monte la partition, Nautilus apparaît avec une fenêtre affichant la partition et volant le focus. C'est quelque chose que je veux éviter.
Remarque: je sais que je peux changer le comportement de ceci dans les paramètres système, les détails, les supports amovibles Never prompt or start programs on media insertion
, mais je ne veux pas changer le comportement, par exemple si une clé USB est branchée, je veux juste l'empêcher dans mon script bash . Étant donné que ce script s'exécute sur les ordinateurs d'autres utilisateurs, je ne peux pas modifier ces paramètres (dans le script) car s'il est interrompu anormalement, il laissera les paramètres modifiés en place (je ne pense pas non plus que cela devrait être nécessaire).
En fait, cet affichage automatique ne semble pas cohérent. Si je fais exactement la même commande depuis le terminal, Nautilus ne s'affiche pas et je sais qu'il y a d'autres montures dans mon script qui ne s'affichent pas. Alors, qu'est-ce qui pourrait en être la cause? Voici un exemple de code (les deux entraînent l'apparition de fenêtres nautilus distinctes):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Je suis intéressé à comprendre le processus par lequel le montage signale Nautilus et pourquoi cela se produit (quand ce n'est pas le cas si je monte la partition à partir du terminal). Et quelle est la meilleure façon d'empêcher que cela se produise.
J'ai remarqué ce comportement à partir de la version 11.10 (si je me souviens bien). J'utilise actuellement la version 12.04, mais le script doit fonctionner sur toutes les versions prises en charge. Je ne pense pas que la solution devrait impliquer la modification des paramètres système (qui peuvent différer entre les versions). Par exemple, si vous regardez d'autres choses qui montent des partitions (comme os-prober), aucune fenêtre nautilus n'apparaît quand il monte différentes partitions.
Le script peut être trouvé ici . Et voici la partie où Nautilus apparaît. Je pense que cela apparaît également ici , mais j'ai concentré mes tests sur le premier lien. C'est là que cela n'apparaît pas, appelé avant ces autres montages - notez que j'ai réécrit les premiers en - lecture seule et dans une instruction if et cela ne fait aucune différence.
Idéalement, la réponse expliquera pourquoi cela se produit et comment l'éviter, en d'autres termes, expliquera pourquoi le script mount
est traité différemment de celui émis par un terminal. Une bonne solution de contournement sera également acceptée s'il s'agit d'une solution entièrement expliquée et pratique qui peut prendre en charge tous les environnements de bureau (ubuntu, kubuntu, xubuntu, lubuntu, etc.) - Je veux également éviter une augmentation exponentielle des tests pour le vérifier.
Merci d'avance
============
Solution selon le lien de papashou :
add_udev_rules ()
{
for i in "$dev" "$homedev" "$bootdev" "$usrdev"; do
if [ -n "$i" ]; then
block=${i#/dev/}
echo "KERNEL==\"""$block""\",ENV{UDISKS_PRESENTATION_HIDE}=\"1\"" >> "$wubi_move_dir"/wubi_move.rules
fi
done
cp "$wubi_move_dir"/wubi_move.rules /etc/udev/rules.d/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
remove_udev_rules ()
{
rm /etc/udev/rules.d/wubi_move.rules
rm "$wubi_move_dir"/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
Cela atteint le résultat souhaité, mais ressemble à une approche de marteau. Je pense qu'il y a probablement un réglage fin dans udev qui permettra à la partition de toujours s'afficher dans Nautilus (et dans d'autres navigateurs de fichiers) sans apparaître lorsqu'elle est montée. Au fait, si quelqu'un veut essayer cela, le script suivant montrera l'effet pop-up de nautilus:
mkdir -p /tmp/testmount
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
rmdir /tmp/testmount
Je vais continuer à jouer avec udev
et j'ai également déposé un bug , car cela n'a aucun sens pour une partition qui n'est pas insérée d'agir comme une carte USB / multimédia insérée lors du montage. De plus, ce udevadm trigger
n'est pas une opération peu coûteuse qui semble (au moins le 12.04) geler temporairement tout.
Donc, en résumé, j'ai une solution réalisable (merci à tous ceux qui ont aidé), que je peux ou non mettre en œuvre (pas encore sûr); mais je vais continuer à chercher autre chose. Merci