From 9cde41ddde419b03313e827152b770c939a71c75 Mon Sep 17 00:00:00 2001 From: The_miro Date: Mon, 18 May 2026 11:59:31 +0200 Subject: [PATCH] setup: add KDE Plasma, GNOME, COSMIC, XFCE, LXQt DE modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each script installs the DE meta-package, an appropriate display manager, PipeWire audio, NetworkManager, Bluetooth, and Flatpak, then enables the relevant services (sddm/gdm/lightdm/cosmic-greeter). COSMIC falls back to sddm if cosmic-greeter is not installed. tui-install.sh: DE menu expanded from 3 to 8 entries (height 20×70). install-modules.sh: DEs added to checklist, summary, and dispatch so they can be installed standalone on an existing system. Co-Authored-By: Claude Sonnet 4.6 --- setup/install-modules.sh | 22 ++++++++++++++++ setup/modules/Desktop-Environments/cosmic.sh | 25 +++++++++++++++++++ setup/modules/Desktop-Environments/gnome.sh | 19 ++++++++++++++ .../Desktop-Environments/kde-plasma.sh | 24 ++++++++++++++++++ setup/modules/Desktop-Environments/lxqt.sh | 25 +++++++++++++++++++ setup/modules/Desktop-Environments/xfce.sh | 23 +++++++++++++++++ setup/tui-install.sh | 22 +++++++++++----- 7 files changed, 154 insertions(+), 6 deletions(-) create mode 100755 setup/modules/Desktop-Environments/cosmic.sh create mode 100755 setup/modules/Desktop-Environments/gnome.sh create mode 100755 setup/modules/Desktop-Environments/kde-plasma.sh create mode 100755 setup/modules/Desktop-Environments/lxqt.sh create mode 100755 setup/modules/Desktop-Environments/xfce.sh diff --git a/setup/install-modules.sh b/setup/install-modules.sh index e8e3b48..e8badec 100755 --- a/setup/install-modules.sh +++ b/setup/install-modules.sh @@ -84,6 +84,11 @@ run_module() { count_steps() { local sel="$1" TOTAL=0 + [[ "$sel" == *"kde-plasma"* ]] && TOTAL=$(( TOTAL + 1 )) + [[ "$sel" == *"gnome"* ]] && TOTAL=$(( TOTAL + 1 )) + [[ "$sel" == *"cosmic"* ]] && TOTAL=$(( TOTAL + 1 )) + [[ "$sel" == *"xfce"* ]] && TOTAL=$(( TOTAL + 1 )) + [[ "$sel" == *"lxqt"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$sel" == *"ollama"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$sel" == *"llama-cpp"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$sel" == *"open-webui"* ]] && TOTAL=$(( TOTAL + 1 )) @@ -150,6 +155,12 @@ SELECTED=$(dialog --backtitle "$BACKTITLE" \ --title " Select Modules " \ --checklist "Space toggles · Enter confirms · Arrow keys scroll" 40 76 32 \ \ + "kde-plasma" "KDE Plasma full Plasma DE + sddm" off \ + "gnome" "GNOME GNOME Shell + gdm" off \ + "cosmic" "COSMIC Rust-based Wayland DE (System76)" off \ + "xfce" "XFCE lightweight X11 DE + lightdm" off \ + "lxqt" "LXQt lightweight Qt X11 DE + sddm" off \ + \ "ollama" "Ollama local LLM runner + API server" off \ "llama-cpp" "llama.cpp standalone inference CLI + server" off \ "open-webui" "Open WebUI browser UI for Ollama / LLM backends" off \ @@ -197,6 +208,11 @@ SELECTED=$(dialog --backtitle "$BACKTITLE" \ [[ -z "$SELECTED" ]] && { clear; echo "Nothing selected."; exit 0; } SUMMARY="" +[[ "$SELECTED" == *"kde-plasma"* ]] && SUMMARY+=" ✦ KDE Plasma\n" +[[ "$SELECTED" == *"gnome"* ]] && SUMMARY+=" ✦ GNOME\n" +[[ "$SELECTED" == *"cosmic"* ]] && SUMMARY+=" ✦ COSMIC\n" +[[ "$SELECTED" == *"xfce"* ]] && SUMMARY+=" ✦ XFCE\n" +[[ "$SELECTED" == *"lxqt"* ]] && SUMMARY+=" ✦ LXQt\n" [[ "$SELECTED" == *"ollama"* ]] && SUMMARY+=" ✦ Ollama\n" [[ "$SELECTED" == *"llama-cpp"* ]] && SUMMARY+=" ✦ llama.cpp\n" [[ "$SELECTED" == *"open-webui"* ]] && SUMMARY+=" ✦ Open WebUI\n" @@ -246,6 +262,12 @@ dialog --backtitle "$BACKTITLE" \ count_steps "$SELECTED" +DE_DIR="$MODULES/Desktop-Environments" +[[ "$SELECTED" == *"kde-plasma"* ]] && run_module "KDE Plasma" "$DE_DIR/kde-plasma.sh" +[[ "$SELECTED" == *"gnome"* ]] && run_module "GNOME" "$DE_DIR/gnome.sh" +[[ "$SELECTED" == *"cosmic"* ]] && run_module "COSMIC" "$DE_DIR/cosmic.sh" +[[ "$SELECTED" == *"xfce"* ]] && run_module "XFCE" "$DE_DIR/xfce.sh" +[[ "$SELECTED" == *"lxqt"* ]] && run_module "LXQt" "$DE_DIR/lxqt.sh" [[ "$SELECTED" == *"ollama"* ]] && run_module "Ollama" "$APPS/ollama.sh" [[ "$SELECTED" == *"llama-cpp"* ]] && run_module "llama.cpp" "$APPS/llama-cpp.sh" [[ "$SELECTED" == *"open-webui"* ]] && run_module "Open WebUI" "$APPS/open-webui.sh" diff --git a/setup/modules/Desktop-Environments/cosmic.sh b/setup/modules/Desktop-Environments/cosmic.sh new file mode 100755 index 0000000..a28fa10 --- /dev/null +++ b/setup/modules/Desktop-Environments/cosmic.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -euo pipefail + +echo "=== COSMIC Desktop Installer ===" + +echo "[+] Installing COSMIC..." +sudo pacman -S --noconfirm --needed \ + cosmic \ + pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ + networkmanager \ + bluez bluez-utils \ + flatpak + +echo "[+] Enabling services..." +# cosmic-greeter is COSMIC's own display manager; fall back to sddm if absent +if pacman -Qi cosmic-greeter &>/dev/null; then + sudo systemctl enable cosmic-greeter.service +else + sudo pacman -S --noconfirm --needed sddm + sudo systemctl enable sddm.service +fi +sudo systemctl enable NetworkManager.service +sudo systemctl enable bluetooth.service + +echo "=== COSMIC installation complete. Reboot to start. ===" diff --git a/setup/modules/Desktop-Environments/gnome.sh b/setup/modules/Desktop-Environments/gnome.sh new file mode 100755 index 0000000..9a6d0f9 --- /dev/null +++ b/setup/modules/Desktop-Environments/gnome.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -euo pipefail + +echo "=== GNOME Installer ===" + +echo "[+] Installing GNOME..." +sudo pacman -S --noconfirm --needed \ + gnome \ + gnome-tweaks \ + xdg-desktop-portal-gnome \ + pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ + networkmanager \ + flatpak + +echo "[+] Enabling services..." +sudo systemctl enable gdm.service +sudo systemctl enable NetworkManager.service + +echo "=== GNOME installation complete. Reboot to start. ===" diff --git a/setup/modules/Desktop-Environments/kde-plasma.sh b/setup/modules/Desktop-Environments/kde-plasma.sh new file mode 100755 index 0000000..fa02ce0 --- /dev/null +++ b/setup/modules/Desktop-Environments/kde-plasma.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -euo pipefail + +echo "=== KDE Plasma Installer ===" + +echo "[+] Installing KDE Plasma..." +sudo pacman -S --noconfirm --needed \ + plasma-meta \ + sddm sddm-kcm \ + xdg-desktop-portal-kde \ + konsole dolphin kate gwenview ark spectacle okular elisa \ + plasma-browser-integration \ + pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ + networkmanager \ + bluez bluez-utils bluedevil \ + power-profiles-daemon \ + flatpak + +echo "[+] Enabling services..." +sudo systemctl enable sddm.service +sudo systemctl enable NetworkManager.service +sudo systemctl enable bluetooth.service + +echo "=== KDE Plasma installation complete. Reboot to start. ===" diff --git a/setup/modules/Desktop-Environments/lxqt.sh b/setup/modules/Desktop-Environments/lxqt.sh new file mode 100755 index 0000000..9fc685f --- /dev/null +++ b/setup/modules/Desktop-Environments/lxqt.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -euo pipefail + +echo "=== LXQt Installer ===" + +echo "[+] Installing LXQt..." +sudo pacman -S --noconfirm --needed \ + lxqt \ + openbox obconf-qt \ + sddm \ + breeze-icons \ + xdg-desktop-portal-gtk \ + xorg-server xorg-xinit \ + pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ + networkmanager network-manager-applet \ + bluez bluez-utils blueman \ + gvfs gvfs-smb gvfs-mtp \ + flatpak + +echo "[+] Enabling services..." +sudo systemctl enable sddm.service +sudo systemctl enable NetworkManager.service +sudo systemctl enable bluetooth.service + +echo "=== LXQt installation complete. Reboot to start. ===" diff --git a/setup/modules/Desktop-Environments/xfce.sh b/setup/modules/Desktop-Environments/xfce.sh new file mode 100755 index 0000000..84aa141 --- /dev/null +++ b/setup/modules/Desktop-Environments/xfce.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -euo pipefail + +echo "=== XFCE Installer ===" + +echo "[+] Installing XFCE..." +sudo pacman -S --noconfirm --needed \ + xfce4 xfce4-goodies \ + lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \ + xdg-desktop-portal-gtk \ + pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ + xfce4-pulseaudio-plugin \ + networkmanager network-manager-applet \ + bluez bluez-utils blueman \ + gvfs gvfs-smb gvfs-mtp \ + flatpak + +echo "[+] Enabling services..." +sudo systemctl enable lightdm.service +sudo systemctl enable NetworkManager.service +sudo systemctl enable bluetooth.service + +echo "=== XFCE installation complete. Reboot to start. ===" diff --git a/setup/tui-install.sh b/setup/tui-install.sh index 7f578e4..567258d 100755 --- a/setup/tui-install.sh +++ b/setup/tui-install.sh @@ -175,10 +175,15 @@ DE="none" if [[ "$COMPONENTS" == *"de"* ]]; then DE=$(dialog --backtitle "$BACKTITLE" \ --title " Desktop Environment " \ - --menu "Select a desktop environment:" 11 56 3 \ - "hyprland" "Hyprland — Wayland WM, full setup (primary)" \ - "sway" "Sway — Wayland tiling WM" \ - "none" "Skip DE installation" \ + --menu "Select a desktop environment:" 20 70 8 \ + "hyprland" "Hyprland — Wayland WM, full setup (primary)" \ + "sway" "Sway — Wayland tiling WM" \ + "kde-plasma" "KDE Plasma — feature-rich Wayland/X11 DE" \ + "gnome" "GNOME — modern Wayland DE" \ + "cosmic" "COSMIC — Rust-built Wayland DE (System76)" \ + "xfce" "XFCE — lightweight X11 DE" \ + "lxqt" "LXQt — lightweight Qt X11 DE" \ + "none" "Skip DE installation" \ 3>&1 1>&2 2>&3) || DE="none" fi @@ -297,8 +302,13 @@ count_steps "$COMPONENTS" "$DE" "$SELECTED_APPS" if [[ "$COMPONENTS" == *"de"* && "$DE" != "none" ]]; then case "$DE" in - hyprland) run_module "Hyprland" "$MODULES/Desktop-Environments/hyprland.sh" ;; - sway) run_module "Sway" "$MODULES/Desktop-Environments/sway.sh" ;; + hyprland) run_module "Hyprland" "$MODULES/Desktop-Environments/hyprland.sh" ;; + sway) run_module "Sway" "$MODULES/Desktop-Environments/sway.sh" ;; + kde-plasma) run_module "KDE Plasma" "$MODULES/Desktop-Environments/kde-plasma.sh" ;; + gnome) run_module "GNOME" "$MODULES/Desktop-Environments/gnome.sh" ;; + cosmic) run_module "COSMIC" "$MODULES/Desktop-Environments/cosmic.sh" ;; + xfce) run_module "XFCE" "$MODULES/Desktop-Environments/xfce.sh" ;; + lxqt) run_module "LXQt" "$MODULES/Desktop-Environments/lxqt.sh" ;; esac fi