Utiliser Gio en ligne de commande

J'ai depuis quelques mois décidé de changer radicalement ma façon d'utiliser mon ordinateur : je veux aller au plus simple, rapide et sans fioritures. Fini l'environnement de bureau Gnome et bonjour utilisation plus intensive des applications en ligne de commande ou en version "terminal".

J'ai aussi choisi de me passer des services d'un gestionnaire de fichiers et d'utiliser exclusivement mon émulateur de terminal pour gérer mon arborescence : pour l'instant j'en suis ravi. Il y a cependant un point qui peut très vite coincer : Un gestionnaire de fichiers moderne permet le montage automatique des périphériques USB ou encore le montage facile des ressources réseaux et enfin le montage par les utilisateurs non privilégiés du système.

Bien sûr je ne veux pas utiliser le montage automatique, mais pour tout le reste il est possible d'utiliser Gio, la librairie issu du projet Gnome et utilisée pour les montage de périphériques de stockage.

Commençons simple, un disque USB

Le premier cas que nous allons étudier, et le plus simple, est celui de la clé USB. Bien entendu il fait avoir installé Gio, sur Archlinux :

pacman -S gvfs

Une fois la clé branchée il suffira de trouver le périphérique représentant notre support dans /dev/ et la partition que l'on veux monter avec lsblk

lsblk
sda                  8:0    1  14,5G  0 disk
└─sda1               8:1    1  14,5G  0 part
nvme0n1            259:0    0   477G  0 disk
[...]

Dans l'exemple, je veux utiliser ma clé /dev/sda1

gio mount -d /dev/sda1
/dev/sda1 a é monté sur /run/media/ephase/MaCle

-d <device> indique le périphérique de block à monter. La commande retourne le dossier ou le périphérique est monté.

Pour démonter le périphérique, il suffira de faire

gio mount -u /run/media/ephase/MaCle

Attention, si la commande retourne le message gio:file:///run/media/ephase/MaCle: Un ou plusieurs programmes empêchent l’opération de démontage. il se pourrait que dans un de vos émulateurs de terminal lancés le répertoire courant soit celui de votre montage (ou de ses sous répertoires).

Monter un dossier via ssh

La commande n'est pas très compliquée mais le point de montage est un peu moins simple à trouver et cette fois la commande ne le retourne pas le point de montage. Bonne nouvelle tout de même : gio prend en compte les fichiers ~/.ssh/config et sait utiliser les clefs.

gio mount ssh://myhost.com
Saisissez la phrase de passe de la clé SSH de myhost.com
Password:

Le point de montage est un sous-dossier de /run/users/<uid>/gvfs/<uid> est celui de votre utilisateur, dans le cas ci-dessus :

tree
/run/user/1000/gvfs
└── sftp:host=myhost.com
    └── mon_dossier

Le démontage est simple :

gio mount -u ssh://myhost.com

La commande s'applique pour toute ressource smb, nfs, afp. Il faut tout de même penser à installer les modules gio correspondant : gvfs-smb, gvfs-nfs et gvfs-afp.

Monter un périphérique MTP

Dernier cas étudié : le MTP, c'est le protocole de communication utilisé notamment par les téléphones Android. Il faut là aussi installer un paquet pour que tout fonctionne, sous Archlinux gvfs-mtp. La commande est plus complexe :

gio mount -li | awk -F= '{if(index($2,"mtp") == 1)system("gio mount "$2)}'

gio mount -li donne des informations détaillées sur les périphériques disponibles. Il suffit de passer le tout à awk, d'utiliser le séparateur = et de chercher la présence de mtp dans la seconde colonne et si c'est le cas d'exécuter gio mount.

Cette commande réalisera un montage de tous les périphériques MTP disponibles sans distinction, il vous faudra l'adapter en fonction de vos besoins.

Comme pour les protocoles réseaux, la commande ne retourne rien et le point de montage est un sous dossier de /run/users/<uid>/gvfs.

Pour le démontage, soit nous connaissez l'URI du périphérique (du style mtp://Android_ae45f6) et il suffit de faire :

gio mount -u mtp://Android_ae45f6

Sinon il est possible de donner le point de montage à la commande gio :

gio mount -u /run/users/1000/mtp:Android_ae45f6

En conclusion

Utiliser exclusivement l'émulateur de terminal pour gérer les fichiers est, de mon point de vue, simple et bigrement efficace. Avec gio c'est juste parfait : peu de dépendances, rapide et facile à utiliser. Il est aussi possible d'utiliser udevil, mais ce projet semble au point mort (pas de mise à jour ou correction de bug depuis juillet 2017).