Skip to main content

GNOME coverage

What of the GNOME System Administration Guide a DeskOS image can carry, page by page. Audited 2026-10-30 against GnomeProfile and the providers, not against the guide's own assumption that any dconf key is a setting.

This page is also the evidence for ADR 0024: a desktop is adopted because it exposes file-based configuration with precedence and a lock layer that a check can read, not because it is popular. The audit is how "GNOME meets that today" is a claim instead of an opinion.

The vocabulary is closed (settings.additionalProperties: false): a key is reachable only when a semantic field lowers to it. There is no raw-dconf escape, by design (ADR 0005, invariant 5), so "GNOME lets you set it" never implies "DeskOS can".

Guide pageMechanismVerdict
Setup
Browse GSettings, dconf, profiles, keyfilesdconf profile and keyfilesmodelled: the lowerer writes distro.d keyfiles and Platforms declare the database
Custom default valuesdconf defaultsmodelled, with provenance and layering
Lock down specific settingsdconf locksmodelled; Core ships none (invariant 8)
Store settings over NFSservice-db:keyfile/user first line of the profilegap: field: the platform owns the profile, and no field asks for it
Why not GSettings overridesvendor overridesmodelled for the first-boot wallpaper only; no general field
User settings
Notifications on a locked screennotifications show-banners, show-in-lock-screenmodelled since 2026-10-30 (notifications.banners, .onLockScreen)
Privacy defaultsorg.gnome.desktop.privacy recent files, temp/trash removal, telemetry, camera, microphonemodelled since 2026-10-30 (privacy.*)
Dim screen when idleplugins.power idle-dim, idle-brightness, session idle-delaymodelled since 2026-10-29 (session.idle.blankAfter, .dim, .dimBrightness)
Enable the compose keyinput-sources xkb-optionsmodelled (keyboard.xkbOptions: compose:caps, compose:menu, compose:ralt, compose:rctrl)
Disallow online accountsonline-accounts whitelisted-providersgap: field, or declined: an account is a person's, not the image's
Single-application modecustom session plus a wrapper Execrefused: arbitrary shell (invariant 5)
Disable command linelockdown disable-command-linemodelled
Disable file savinglockdown disable-save-to-diskmodelled
Disable printinglockdown disable-printingmodelled
Disable repartitioninga polkit .policy file for udisks2gap: decision: a file with security semantics, not a key; a kind here is a new surface
Disable logout and switchinglockdown disable-log-out, disable-user-switchingmodelled
Disallow fingerprint loginPAM, fprintd and a readeroutside: hardware and PAM, not image intent
Lock down extensionsshell enabled-extensions, development-toolsmodelled since 2026-10-29 (shell.extensions, shell.developmentTools)
Appearance
Choose the fonts, surface by surfaceinterface font-name, document-font-name, monospace-font-name; wm titlebar-font; the terminal's font-namemodelled since 2026-10-30 (appearance.fonts.interface, .document, .monospace, .titlebar, .terminal)
Zoom text without changing sizesinterface text-scaling-factormodelled (appearance.fonts.textScaling, 0.5 to 3.0)
Subpixel rendering and hintinginterface font-rendering, font-antialiasing, font-hinting, font-rgba-order, and fontconfig's own filemodelled (appearance.fonts.antialiasing, .hinting, .rgbaOrder, .lcdfilter): the file for every application, the keys for GNOME and X11
Extra fonts (all users)files under /usr/share/fontsartifact: a package or a placed file; deskos-gnome ships Noto (Latin, symbols, math, color emoji), Red Hat Text and Display, Overpass, Gelasio, Liberation, DejaVu, Carlito, Caladea and the URW base 35, and deskos-adwaita adds Adwaita Sans and Mono (ADR 0026)
Extra fonts (one user)$HOME/.local/share/fontsoutside ($HOME)
Extra backgroundsfiles plus the wallpaper keyartifact plus the modelled wallpaper key
Lock screen shieldscreensaver picture-urimodelled since 2026-10-29 (appearance.lockShield; the wallpaper is the default)
Lock the screen when idlescreensaver lock-enabled, lock-delaymodelled
Custom backgroundbackground picture-uri, -darkmodelled (appearance.wallpaper.light, .dark)
Default favorite applicationsshell favorite-appsmodelled, order-sensitive and checked
Login
Greeter logologin-screen logomodelled (appearance.loginLogo)
Disable the user listlogin-screen disable-user-listmodelled since 2026-10-29 (login.showUserList)
Text banner on the greeterlogin-screen banner-message-enable, -textmodelled since 2026-10-29 (login.banner), any length, never from a file
Default session per userAccountsService XSessionoutside: a provisioning choice for one account
Automatic login/etc/gdm/custom.confoutside: provisioning; the VM harness uses it for tests
Automatic logout, suspend or shutdown when idleplugins.power sleep-inactive-ac/battery-timeout, -typemodelled since 2026-10-30 (session.idle.action, .after, .batteryAction, .batteryAfter); a policy that can lose unsaved work, so the pair is explicit
Custom sessiona session file with an Execrefused: arbitrary shell
Multiple keyboard layoutsinput-sources sourcesmodelled since 2026-10-30 (keyboard.layouts, in switch order; the key lands in the distro database, which GDM's profile also reads)
Console keymaplocalectl, /etc/vconsole.confoutside: the graphical session is Wayland and reads input-sources, and the TTY keymap is set by the installer, which is provisioning (architecture.md, "What each layer owns")
Enterprise credentialsFreeIPA or AD joinMilestone 5: identity, never image content
Network and hardware
System proxyorg.gnome.system.proxy mode, PAC, ignore hosts, per-protocol serversmodelled since 2026-10-30 (network.proxy); a password is refused as a secret
Default server list$HOME/.config/gtk-3.0/servers (XBEL)outside ($HOME)
802.1X networksNetworkManager system-connectionsmodelled since 2026-10-30 (NetworkProfile, ADR 0027): the trust decision in the image, the secret and the identity from the fleet
Default VPN settingsNetworkManager vpngap: kind: a second slice, with the plugin's fields typed and no free-form vpn.data
Software
Which search providers answersearch-providers disable-external, disabledmodelled since 2026-10-30 (search.external, .disabled)
Enable machine-wide extensionsshell enabled-extensionsmodelled (shell.extensions, plus the platform's catalog)
Custom MIME typeXML under /usr/share/mime plus update-mime-databaseartifact: a package or a placed file, not a field
Override the default application/etc/xdg/mimeapps.listmodelled (applications.*); a user's file still wins
Autostart an application/etc/xdg/autostart with Execrefused: arbitrary shell
Typical processesreferencenot a field: a candidate assertion for a check, not intent
Other
Session debugging, custom sessionslogs and session filesoutside / refused

What the gaps cost​

Three different bills, and conflating them is how a backlog grows without shipping:

  • Three fields are cheap: idle logout, XKB layouts and the NFS profile line. Each is a scalar (or two) in GnomeProfile, a lowering rule, a schema entry and a check; no new kind, and the count stays at fifteen.
  • Two are kinds: a NetworkManager connection (VPN, 802.1X, proxy) and a polkit action file. The first is needed by real organizations and needs an ADR for secrets at runtime; the second is a security surface and may be refused.
  • Three are refused on purpose: single-application mode, custom sessions and autostart. All three are an Exec in a directory; invariant 5 is the reason, and it does not bend for convenience.

Decisions this produces​

  1. Add the remaining five fields, one PR per group, each with its check; the greeter's two shipped on 2026-10-29, and dim and brightness with them.
  2. Open the NetworkManager connection ADR if an organization asks; refuse polkit unless one shows a real need.
  3. Keep the refusals written down here rather than rediscovered in review.
  4. Correct the roadmap: it claimed dconf defaults and locks covered more than expected. At the audit they covered fourteen guide items exactly and four partially, which is a different claim. The greeter's two, the power pair, Looking Glass and the shield have since added five, so the table above reads nineteen and one.