Skip to Content
Building OsDesktop images

Desktop images

OpenFactory’s feature registry includes multiple desktop environments and desktop applications. Choose the desktop explicitly; a generic desktop request commonly means GNOME, while desktop-kde, desktop-xfce, and other named features select different sessions where the base supports them.

Desktop settings live under os.desktop_settings and use snake_case. Many fields are implemented through GNOME settings, so they should not be assumed to affect KDE, Xfce, or another desktop. Desktop-specific feature modules such as KDE favorites or layout features own some non-GNOME behavior.

Canonical settings example

{ "os": { "features": ["desktop", "firefox"], "desktop_settings": { "color_scheme": "prefer-dark", "gtk_theme": "Yaru-dark", "icon_theme": "Yaru", "cursor_theme": "Adwaita", "cursor_size": 24, "wallpaper_sources": ["attachment:wallpaper-file-id"], "wallpaper_selection": "first", "wallpaper_mode": "zoom", "favorite_apps": [ "firefox.desktop", "org.gnome.Terminal.desktop" ], "fonts": { "interface_font": "Ubuntu 11", "document_font": "Sans 11", "monospace_font": "Ubuntu Mono 13" }, "power": { "idle_delay": 600, "sleep_inactive_ac_timeout": 0, "sleep_inactive_ac_type": "nothing", "lid_close_ac_action": "suspend" } } } }

Older fields such as desktop, accentColor, favorites, screenBlankTimeout, or suspendOnIdle are not the canonical schema. They can be ignored during normalization.

Wallpapers and assets

Prefer a previously uploaded attachment or another reviewed, immutable asset. HTTPS wallpaper URLs are fetched during image creation and can change or fail. For external icon themes or fonts, use asset_sources with a simple installed name and, for archive/file inputs, a SHA-256 when supported.

Do not place copyrighted or personally identifying imagery in a public image without the required rights and consent.

Favorites are desktop-file IDs

Favorites must name installed .desktop entries, not product display names. Installing kdenlive, for example, does not guarantee its ID is kdenlive.desktop on every distribution. Inspect /usr/share/applications in the target guest and verify the launcher opens the intended application.

Verification

At minimum, test:

  • the intended display manager and session start;
  • the actual session identity (GNOME, Plasma, Xfce, and so on);
  • requested packages and application launchers;
  • wallpaper and theme on the first real user session;
  • favorites after the shell has loaded;
  • screen lock and power behavior; and
  • installer-launch behavior if the image is meant to be installable.

A package inventory cannot detect a wrong desktop session. Include a GUI smoke test and inspect the captured evidence.

Cross-desktop boundary

Do not combine generic GNOME and KDE features casually. When a prompt names KDE Plasma, require desktop-kde and KDE-specific configuration; when it names GNOME, require the GNOME desktop feature and GNOME settings. If multiple sessions are intentional, test the default selection and each supported login path separately.