From Fedora Project Wiki



Gvfs is a userspace virtual filesystem with backends for things like sftp, ftp, dav, smb, obexftp, etc. It is the replacement/successor of gnome-vfs.


  • Name: AlexanderLarsson

Current status

  • Targeted release: Fedora 9
  • Last updated: 2008-03-17
  • Percentage of completion: 100%

Detailed Description

Gvfs consists of two parts:

  • GIO, which is a new shared library that is part of GLib and provides the API for gvfs
  • Gvfs itself, which is a new package containing backends for various file system types and protocols such as sftp, dav, smb, obexftp.

The way gvfs works is that it runs a single master daemon (gvfsd) that keeps track of the current gvfs mounts. Each mount is run in a separate daemon (some mounts share a daemon process, but most don't). Clients talk to the mounts with a combination of dbus calls (on the session bus and using peer-to-peer dbus) and a custom protocol for file contents.

Gvfs comes into Fedora 9 as part of Gnome 2.22, but it is worth spelling it out as a feature, since it was largely conceived and written by Fedora people, namely Alexander Larsson (who did the bulk of the work), David Zeuthen, Dan Winship and Bastien Nocera.

Benefit to Fedora

A userspace virtual filesystem that can be used by all GTK+ applications without fear of undue dependencies (which is part of what prevented widespread gnome-vfs acceptance). Secondary benefits such as having Gnome and KDE use a shared spec for Trash (the gnome-vfs implementation predated the Trash spec that is already implemented by KDE), and using a common mechanism for configuring mime handlers.


Gvfs is a new package that has been in rawhide for a while now. nautilus, the GTK+ filechooser and the trash applet have been ported to Gvfs. For the progress on porting all users of gnome-vfs over to Gvfs, see (note that it is not necessary to complete this port 100% immediately, gnome-vfs will still be available).

With the port to Gvfs, nautilus takes over the automount/autorun responsibilities from gnome-volume-manager.

Test Plan

  • Use nautilus for various file management tasks on different file system types, including removable media. Verify that things work as expected.
  • Trash/untrash some files and check that nautilus, the trash applet, KDE and XFCE all operate nicely together wrt. to Trash.
  • Check that the GTK+ file chooser is functioning as well as it did before the switch to gvfs.
  • Excercise the "Open with" features of nautilus. Check that you can add, change and remove handlers for mime types.
  • Excercise the new Media tab of the "File management" capplet, and verify that autolaunching e.g. gthumb or rhythmbox works on appropriate media.
  • Do a large copy operation in nautilus, and check that you get suitable progress report. Does cancelling it work ?

User Experience

  • The user experience of nautilus and the GTK+ file chooser should be mostly unchanged.
  • Automount/autorun configuration is now available in the file management capplet.
  • Unlike gnome-vfs, gvfs mounts have "state", they persist for the session. That means if you accessed e.g. a ftp location in nautilus, you won't have to enter the password again to use it in the file chooser afterwards.


  • Gvfs can optionally use fuse to make its mounts available to non-gvfs-enabled applications. These fuse mounts will appear in ~/.gvfs. For this to work, fuse must drop the fuse group membership requirement, or all users must automatically become members of the fuse group.

Contingency Plan

  • None, realistically. Gvfs is part of Gnome 2.22, and not shipping gvfs would mean we'd have to roll all of gnome back to 2.20, which is not very practical.


  • User documentation should be added in the Gnome users guide. The sections on "Using removable media" and "Nautilus Preferences" will have to be updated.

Release Notes

  • Depending on the pace of gvfs development, we may have to mention that some of the filesystem types supported by gnome-vfs are not (yet) supported by gvfs. Notable candidates for this are the themes:// and fonts:// schemes.