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.