9.9 KiB
Option 13: Desktop & Display
1. What does this component do?
This component manages both desktop environments and display managers. Desktop Environment installs GNOME, KDE Plasma, XFCE, or LXDE; Display Manager handles LightDM, GDM3, SDDM, and greetd (login screens). It handles autologin setup, user list visibility toggles, and a specific Wayland override for NVIDIA GPUs. Desktop Environment management supports XFCE (full / minimal / Wayland labwc on Trixie / custom), LXDE (full / core), GNOME (full / core) and KDE Plasma (full / minimal), with polkit rules for suspend/backlight where applicable.
Modular layout: the menu, the shared helpers (_existing_display_manager, _offer_pipewire_after_desktop) and the display-manager configuration routines live in modules/desktop_display.sh; every desktop installer lives in its own module under modules/desktops/ (desktop_xfce.sh, desktop_lxde.sh, desktop_gnome.sh, desktop_kde.sh), lazily loaded on demand via _load_module.
2. Logical Flow of Execution
The execution logic is divided into five functional blocks:
Block 1: Desktop Environment Selection & Installation
- The main menu (
manage_desktop_displayindesktop_display.sh) offers two primary options:1 Desktop Environmentand2 Display Manager(plus3 Back to main menu). - Desktop Environment opens
desktop_environment_menuwith four environments:- XFCE: full / minimal / Wayland (
labwc, Debian 13 only) / custom package checklist. - LXDE: full / core.
- GNOME: full (
gnome) / core (gnome-core), with GDM3. - KDE Plasma: full (
kde-standard) / minimal (kde-plasma-desktop), with SDDM.
- XFCE: full / minimal / Wayland (
- Each environment lives in its own module under
modules/desktops/and is lazy-loaded from the menu dispatch with_load_module xfce|lxde|gnome|kde(dependencies:desktop_display+audio). - Display Manager opens
display_manager_menu: LightDM, GDM3, SDDM, and greetd (12/13 only). - Available Managers:
- LightDM (available on all Debian versions).
- GDM3 (available on all Debian versions).
- SDDM (available on all Debian versions).
- greetd (available only on Debian 12 and 13).
- Each selected manager opens its own dedicated configuration submenu.
Block 2: LightDM Configuration
- A checklist menu presents three options:
- Install LightDM + GTK Greeter (auto-selects the display manager via debconf-set-selections).
- Enable user list at login screen (writes
greeter-hide-users=falseto a configuration file in.conf.d). - Enable autologin for current user (uncomments
autologin-userand sets timeout to 0 in the main config).
- Idempotency: The script checks if
lightdmandlightdm-gtk-greeter-settingsare already installed before attempting installation, skipping redundant steps.
Block 3: GDM3 Configuration
- A checklist menu presents up to four options:
- Install/Reinstall gdm3 (auto-selects via debconf).
- Toggle user list visibility (toggles
disable-user-listin greeter.dconf-defaults). - Configure autologin (prompts for a username via whiptail inputbox to set in daemon.conf).
- Force Enable Wayland on NVIDIA (Bookworm/Trixie + NVIDIA only).
- Mechanism: Creates or removes a symlink:
/etc/udev/rules.d/61-gdm.rules→/dev/null. - Purpose: This disables the udev rule that blocks GDM from using Wayland on NVIDIA GPUs.
- Risk Warning: Displays a warning that this may break graphics or cause instability.
- Toggle Behavior: If the symlink exists, removing it reverts to default behavior; if not present, creating it enables the override.
- Mechanism: Creates or removes a symlink:
Block 4: SDDM Configuration
- A submenu offers two options:
- Install SDDM (auto-selects via debconf).
- Enable Autologin:
- Session Detection: Auto-detects the installed session by checking
.desktopfiles in priority order:plasmawayland→lxqt-wayland→plasma→lxqt. - Configuration: Writes autologin settings to
/etc/sddm.conf.d/autologin.conf. - Fallback: If no session is found, it enables autologin but warns that SDDM will use the default session.
- Session Detection: Auto-detects the installed session by checking
Block 5: greetd Configuration
- greetd is a minimal, modern display manager designed for Wayland environments.
- Submenu options vary by Debian version:
- All Versions: Install base
greetd, Installgreetd+tuigreet(recommended TUI greeter). - Debian 13 only: Additional options to install
gtk-greet,nwg-hello, orwlgreet.
- All Versions: Install base
- Backports Handling: On Bookworm,
tuigreetis installed from backports if not enabled. - Important Warning: greetd is installed but NOT configured by the script. The user must manually create
/etc/greetd/config.tomlto be able to log in. The script displays a warning with references to man pages for configuration details.
3. Automations
The component automates several steps:
- debconf-set-selections: Pre-selects the display manager as default before
apt install, preventing the interactive "Configuring shared/default-x-display-manager" dialog that would otherwise pause the script execution. - Session Auto-Detection (SDDM): Checks
.desktopfiles in priority order (Wayland first, then X11) to set the correct session type for autologin configuration. - Wayland Toggle: Creates or removes a udev rule symlink to
/dev/null. This is a known workaround that disables the GDM rule blocking NVIDIA Wayland support. - greetd Backports: On Bookworm,
tuigreetis installed from backports (newer version) if not already enabled in the system. - Manual Config Warning: The script explicitly informs users that greetd requires manual configuration and points to man pages for further details.
- User Detection: Uses
SUDO_USER(the real user who ran sudo) instead of$USER(which is root during script execution). This ensures the correct user is set for automatic login across all display managers. - Pre-apply Summary: every desktop installer shows a confirmation list of the packages (
_confirm_install_list) before any debconf or apt transaction starts; declining aborts safely. - Existing DM Preservation: the GNOME and KDE installers detect the current default display manager (
_existing_display_managerreads/etc/X11/default-display-manager, falling back to an enabled DM systemd unit), preseed that manager instead of the new one, and skipsystemctl enableso an already-configured login screen is never overwritten. - PipeWire Offer: after any desktop install (XFCE, LXDE, GNOME, KDE),
_offer_pipewire_after_desktopchecks forpipewire-audio(pipewireon Bullseye) and, when missing, asks once before running_install_pipewire_standard. Declining is a choice, not an error: the helper always returns 0. - Stale-lists Guard:
_ensure_apt_updatedruns before the GNOME/KDEapt installtransactions, refreshing the package lists at most once per session.
4. Packages and Resources Managed
Display Manager Packages:
| DM | Packages | Debian Versions |
|---|---|---|
| LightDM | lightdm, lightdm-gtk-greeter, lightdm-gtk-greeter-settings | All |
| GDM3 | gdm3 | All |
| SDDM | sddm | All |
| greetd (base) | greetd | 12, 13 |
| greetd + tuigreet | greetd, tuigreet | 12 (backports), 13 |
| greetd + gtk-greet | greetd, gtk-greet | 13 only |
| greetd + nwg-hello | greetd, nwg-hello | 13 only |
| greetd + wlgreet | greetd, wlgreet | 13 only |
Desktop Environment Packages:
| Environment | Variant | Packages | Display Manager |
|---|---|---|---|
| XFCE | Full | xfce4, xfce4-goodies, xfce4-power-manager | not managed by the installer |
| XFCE | Minimal | xfce4 | not managed by the installer |
| XFCE | Wayland (13 only) | xfce4, labwc | not managed by the installer |
| XFCE | Custom | user-selected checklist | not managed by the installer |
| LXDE | Full / Core | lxde / lxde-core | lightdm (always) |
| GNOME | Full / Core | gnome / gnome-core | gdm3 (installed; existing DM kept as default) |
| KDE Plasma | Full / Minimal | kde-standard / kde-plasma-desktop | sddm (installed; existing DM kept as default) |
Configuration Files Modified:
| DM | File Path | Configuration Purpose |
|---|---|---|
| LightDM | /etc/lightdm/lightdm.conf.d/50-debianito-userlist.conf | User list visibility toggle |
| LightDM | /etc/lightdm/lightdm.conf | Autologin user + timeout settings |
| GDM3 | /etc/gdm3/greeter.dconf-defaults | User list toggle (disable-user-list) |
| GDM3 | /etc/gdm3/daemon.conf | Autologin user and enable flag |
| GDM3 | /etc/udev/rules.d/61-gdm.rules | Wayland override (symlink to /dev/null) |
| SDDM | /etc/sddm.conf.d/autologin.conf | Autologin user + session type |
Session Detection Priority (SDDM Autologin):
| Priority | Session File | Session Type |
|---|---|---|
| 1 | /usr/share/wayland-sessions/plasmawayland.desktop | KDE Wayland |
| 2 | /usr/share/wayland-sessions/lxqt-wayland.desktop | LXQt Wayland |
| 3 | /usr/share/xsessions/plasma.desktop | KDE X11 |
| 4 | /usr/share/xsessions/lxqt.desktop | LXQt X11 |
⚠️ Warning: Wayland on NVIDIA: The "Force Enable Wayland on NVIDIA" option creates a symlink that disables the GDM udev rule. This is a known workaround but MAY cause graphics instability or breakage. To revert, remove
/etc/udev/rules.d/61-gdm.rules.
⚠️ Warning: greetd: Unlike other display managers, greetd is installed but NOT configured by this script. You MUST manually create
/etc/greetd/config.tomlbefore you can log in. Seeman greetdandman 5 greetd-sessionsfor configuration details.
⚠️ Warning: Autologin: All autologin configurations use
SUDO_USER(the user who ran sudo) instead of$USER(which is root during script execution). This ensures the correct user is set for automatic login.
💡 Technical Note:
debconf-set-selectionspre-selects the display manager before apt install, preventing the interactive "Configuring shared/default-x-display-manager" dialog that would otherwise pause the script.