Title: Utiliser Gio en ligne de commande Category: sysadmin Tags: pl-fr, GIO, fichiers, terminal Date: 2019-04-25 1:30 Status: published 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 été monté sur /run/media/ephase/MaCle ``` `-d ` 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//gvfs/` où `` 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][l_mtp_w], 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//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][l_udevil], mais ce projet semble au point mort (pas de mise à jour ou correction de bug depuis juillet 2017). [l_mtp_w]:https://fr.wikipedia.org/wiki/Media_Transfer_Protocol [l_udevil]:https://github.com/IgnorantGuru/udevil/