web-dev-qa-db-fra.com

Comment obtenir que gvfs monte automatiquement les périphériques amovibles sans Unity ou Gnome Shell

De retour en 13.04, je suis passé d’Unity à une session Gnome avec i3. Ma configuration est basée sur celle-ci .

$ cat /usr/share/xsessions/gnome-i3.desktop
[Desktop Entry]
Name=GNOME with i3
Comment=A GNOME fallback mode session using i3 as the window manager.
Exec=gnome-session --session=i3
TryExec=gnome-session
Icon=
Type=Application

$ cat /usr/share/gnome-session/sessions/i3.session
[GNOME Session]
Name=gnome-i3
RequiredComponents=gnome-settings-daemon;i3;

En 13.04 et 13.10 également, le montage automatique fonctionnait exactement comme dans Unity. Si je connectais un lecteur amovible (par exemple: une clé USB), il serait monté à /media/$USER/$VOLUME_LABEL.

Sous 14.04, cela fonctionne toujours si j'utilise Unity, mais cela ne fonctionne plus dans ma session Gnome + i3 préférée.

Si je lance nautilus (dans une session Gnome + i3) après avoir branché un lecteur, je peux voir le lecteur non monté dans le volet de gauche, mais il ne possède pas de bouton d'éjection. Il n'apparaît pas non plus dans la sortie de df. Si je clique ensuite sur le lecteur, un bouton d'éjection apparaît et il apparaîtra également dans la sortie de df. Il semble donc que le nautile monte des volumes "à la demande".

J'ai également constaté que je pouvais exécuter gvfs-mount -oi pour voir les événements gvfs au fur et à mesure qu'ils se produisaient. Lorsqu'un disque est connecté, il génère une paire d'événements tels que:

Drive connected:    'Lexar USB Flash Drive'
  Drive(0): Lexar USB Flash Drive
    Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
    ids:
     unix-device: '/dev/sdg'
...

Volume added:       'ALLMYDATAZ'
  Volume(0): ALLMYDATAZ
    Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
    ids:
     class: 'device'
     unix-device: '/dev/sdg1'
     uuid: 'BE64-1766'
     label: 'ALLMYDATAZ'
    themed icons:  ...
    symbolic themed icons:  ...
    can_mount=1
    can_eject=1
    should_automount=1
    sort_key=gvfs.time_detected_usec.1404417627659873

(Notez le bit should_automount=1 _, mais il n’est pas encore monté automatiquement.)

Je peux ensuite monter manuellement le lecteur avec gvfs-mount -d /dev/sdg1.

Alors ... y a-t-il un outil préexistant qui les lie ensemble, montant le unix-device de tous les événements "Volume ajouté" qui ont should_automount=1? C'est-à-dire, monter des volumes amovibles à mesure qu'ils sont ajoutés au système?

Notez que je ne cherche pas un moyen de faire monter les choses lors de la connexion ou du démarrage du système. Je veux qu'ils montent une fois branché.

3
Laurence Gonsalves

Puisque cette question n’a pas eu de réponse, j’ai écrit gvfs-automount .

Lors de son exécution, il écoute les événements "volume ajouté" et, si le volume ajouté est défini sur "should_automount", le monte. Il génère également une notification sur le bureau lorsqu'un volume est monté.

3
Laurence Gonsalves