Skip to content

Instantly share code, notes, and snippets.

@joseivanlopez
Last active March 18, 2026 16:15
Show Gist options
  • Select an option

  • Save joseivanlopez/71b43e531770b0a9e8c27256e10bc4b8 to your computer and use it in GitHub Desktop.

Select an option

Save joseivanlopez/71b43e531770b0a9e8c27256e10bc4b8 to your computer and use it in GitHub Desktop.

RFC: Desktop Environment Selection Mechanism

1. Abstract

This document proposes a mechanism to enhance Desktop Environment (DE) selection within the Agama Software configuration. By flagging specific patterns in the product metadata, Agama can distinguish graphical environments from standard software packages, allowing the UI to present them prominently.

2. Motivation

Currently, selecting a desktop environment requires users to find specific items within a flat list of software patterns. As a primary installation decision, this choice should be visually distinct and easily accessible. Leveraging the existing user_patterns structure allows us to categorize these choices without altering the underlying configuration schema.

3. Proposed Changes

3.1 Product Definition Extension

We propose adding an optional boolean desktop field to the user_patterns collection in the product definition (e.g., tumbleweed.yaml).

Example tumbleweed.yaml:

id: Tumbleweed
user_patterns:
  - name: office
  - name: gnome
    desktop: true      # Used by UI to promote this pattern
    selected: true     # Default selection, if desired
  - name: kde
    desktop: true
  - name: xfce
    desktop: true

3.2 JSON Configuration

This proposal is backward-compatible and requires no changes to the config.json schema. Selected desktops are stored simply as pattern names within the software.patterns array.

Example config.json:

{
  "product": "Tumbleweed",
  "software": {
    "patterns": ["kde", "office"]
  }
}

3.3 User Interface Integration

The "Desktop" selection will be integrated into the Software configuration workflow but will be visually prominent to highlight its importance.

3.3.1 Software Summary (Overview Page)

  • Visual Hint: The summary will explicitly list selected desktops (e.g., "Desktops: KDE Plasma").
  • Validation/Alerts: If no pattern marked desktop: true is selected, the summary may display a non-blocking info alert (e.g., "No desktop environment selected").

3.3.2 Software Selection Page

The available desktops will be offered as part of the software selection, probably presenting desktops in a prominent way. The page will display the name, icon, and description of patterns flagged as desktop: true.

The UI will support selecting multiple desktops.

To ensure a rich UI, the patterns used as desktops should ideally provide an icon and a localized description.

3.3.3 Confirmation popup

The confirmation popup will include an alert if no pattern marked desktop: true is selected.

@jreidinger
Copy link

Just one note about "4.2 Pattern Metadata". User patterns does not have metadata now. I am not sure if we should add it as it is already part of zypp metadata. I would use just zypp ones and if they are not sufficient we can extend it.
Overall I would say it looks good to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment