GNOME Remote Storage Integration#
GNOME Online Accounts (GOA) and gvfs together form the two-layer stack that powers internet-based storage in GNOME Files (Nautilus) on Bluefin:
- GOA (
goa-daemon) is the credential and account broker. It runs as a D-Bus session service (org.gnome.OnlineAccounts) and exposes each account as an object under/org/gnome/OnlineAccount/Accounts/. It handles OAuth2 token refresh, password retrieval from GNOME Keyring, and presents the account setup UI in GNOME Settings → Online Accounts. - gvfs is the userspace virtual filesystem built on GIO/GLib. Its
gvfs-goa-volume-monitordaemon watches the D-Bus for accounts that implementorg.gnome.OnlineAccounts.Filesand surfaces them asGVolumeobjects in the file chooser and GNOME Files sidebar. The actual file I/O is delegated to a backend-specific daemon (gvfsd-*).
GNOME Settings → GOA (goa-daemon) → D-Bus: org.gnome.OnlineAccounts.Files
↓
gvfs-goa-volume-monitor → GVolume in Nautilus
↓
gvfsd-google / gvfsd-dav / … ← actual I/O
Bluefin note: No custom configuration for GOA or gvfs was found in the Bluefin build layers. Both components ship as standard GNOME session services and work out of the box on the GNOME desktop.
Supported Providers (Files integration)#
Only providers that implement the org.gnome.OnlineAccounts.Files interface are mounted as virtual drives in GNOME Files.
| Provider | Files | Calendar | Contacts | Photos | |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | |
| Nextcloud | ✓ | — | ✓ | ✓ | — |
| Microsoft | — | ✓ | — | — | — |
| Microsoft Exchange | — | ✓ | ✓ | ✓ | — |
| IMAP/SMTP | — | ✓ | — | — | — |
| Kerberos | — | — | — | — | — |
WebDAV (manual mount): gvfs ships a dav backend (requires libsoup, libxml) that you can connect to directly in GNOME Files via Other Locations → Connect to Server using a dav:// or davs:// URL — no GOA account required.
Architecture: How a Mount Happens#
- User adds an account in Settings → Online Accounts.
goa-daemonstores credentials in GNOME Keyring. gvfs-goa-volume-monitordetects the new account object on D-Bus and advertises aGVolumein GIO.- When the user opens GNOME Files or a file dialog, the volume appears in the sidebar. On first access gvfs auto-mounts it.
- gvfs spawns the matching backend:
- Google Drive →
gvfsd-google(useslibgdata+libgoa) - Nextcloud / WebDAV →
gvfsd-dav(useslibsoup+libxml)
- Google Drive →
- The backend performs service-specific protocol I/O. Non-GIO apps can access mounts via the FUSE bridge at
~/.gvfs/or/run/user/<uid>/gvfs/.
Key D-Bus Interfaces & Diagnostics#
| Interface / Tool | Purpose |
|---|---|
org.gnome.OnlineAccounts (session bus) | Account objects, credential state |
org.gnome.OnlineAccounts.Files | Signals to gvfs that an account has storage |
org.gnome.OnlineAccounts.OAuth2Based | OAuth2 token management |
org.gnome.OnlineAccounts.PasswordBased | Password-based credential management |
org.gtk.vfs.GoaVolumeMonitor | gvfs-goa-volume-monitor service name |
gvfs-mount -l | List all gvfs drives, volumes, and mounts |
journalctl + G_MESSAGES_DEBUG=all | Runtime debug logs for goa-daemon / gvfsd |
Credential issues: Tokens and passwords live in GNOME Keyring. Use seahorse and search for goa to inspect stored credentials. Call EnsureCredentials on the D-Bus account object to validate token state.
gvfsd not running? Confirm gvfs-goa-volume-monitor is present and running with user privileges. Restart via systemctl --user restart gvfs-goa-volume-monitor.
Primary References#
| Resource | URL |
|---|---|
| GOA GitLab | https://gitlab.gnome.org/GNOME/gnome-online-accounts/ |
| GOA API docs | https://gnome.pages.gitlab.gnome.org/gnome-online-accounts/ |
| GOA Providers matrix | wiki.gnome.org/Projects/GnomeOnlineAccounts/Providers |
| GOA Debugging guide | wiki.gnome.org/Projects/GnomeOnlineAccounts/Debugging |
| gvfs GitLab | https://gitlab.gnome.org/GNOME/gvfs/ |
| gvfs backends list | wiki.gnome.org/Projects/gvfs/backends |
| GNOME Components overview | developer.gnome.org/components |