setup: add KDE Plasma, GNOME, COSMIC, XFCE, LXQt DE modules

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 <noreply@anthropic.com>
main
The_miro 2026-05-18 11:59:31 +02:00
parent fb9893504c
commit 9cde41ddde
7 changed files with 154 additions and 6 deletions

View File

@ -84,6 +84,11 @@ run_module() {
count_steps() { count_steps() {
local sel="$1" local sel="$1"
TOTAL=0 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" == *"ollama"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"llama-cpp"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$sel" == *"llama-cpp"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"open-webui"* ]] && TOTAL=$(( TOTAL + 1 )) [[ "$sel" == *"open-webui"* ]] && TOTAL=$(( TOTAL + 1 ))
@ -150,6 +155,12 @@ SELECTED=$(dialog --backtitle "$BACKTITLE" \
--title " Select Modules " \ --title " Select Modules " \
--checklist "Space toggles · Enter confirms · Arrow keys scroll" 40 76 32 \ --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 \ "ollama" "Ollama local LLM runner + API server" off \
"llama-cpp" "llama.cpp standalone inference CLI + server" off \ "llama-cpp" "llama.cpp standalone inference CLI + server" off \
"open-webui" "Open WebUI browser UI for Ollama / LLM backends" 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; } [[ -z "$SELECTED" ]] && { clear; echo "Nothing selected."; exit 0; }
SUMMARY="" 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" == *"ollama"* ]] && SUMMARY+=" ✦ Ollama\n"
[[ "$SELECTED" == *"llama-cpp"* ]] && SUMMARY+=" ✦ llama.cpp\n" [[ "$SELECTED" == *"llama-cpp"* ]] && SUMMARY+=" ✦ llama.cpp\n"
[[ "$SELECTED" == *"open-webui"* ]] && SUMMARY+=" ✦ Open WebUI\n" [[ "$SELECTED" == *"open-webui"* ]] && SUMMARY+=" ✦ Open WebUI\n"
@ -246,6 +262,12 @@ dialog --backtitle "$BACKTITLE" \
count_steps "$SELECTED" 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" == *"ollama"* ]] && run_module "Ollama" "$APPS/ollama.sh"
[[ "$SELECTED" == *"llama-cpp"* ]] && run_module "llama.cpp" "$APPS/llama-cpp.sh" [[ "$SELECTED" == *"llama-cpp"* ]] && run_module "llama.cpp" "$APPS/llama-cpp.sh"
[[ "$SELECTED" == *"open-webui"* ]] && run_module "Open WebUI" "$APPS/open-webui.sh" [[ "$SELECTED" == *"open-webui"* ]] && run_module "Open WebUI" "$APPS/open-webui.sh"

View File

@ -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. ==="

View File

@ -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. ==="

View File

@ -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. ==="

View File

@ -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. ==="

View File

@ -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. ==="

View File

@ -175,9 +175,14 @@ DE="none"
if [[ "$COMPONENTS" == *"de"* ]]; then if [[ "$COMPONENTS" == *"de"* ]]; then
DE=$(dialog --backtitle "$BACKTITLE" \ DE=$(dialog --backtitle "$BACKTITLE" \
--title " Desktop Environment " \ --title " Desktop Environment " \
--menu "Select a desktop environment:" 11 56 3 \ --menu "Select a desktop environment:" 20 70 8 \
"hyprland" "Hyprland — Wayland WM, full setup (primary)" \ "hyprland" "Hyprland — Wayland WM, full setup (primary)" \
"sway" "Sway — Wayland tiling WM" \ "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" \ "none" "Skip DE installation" \
3>&1 1>&2 2>&3) || DE="none" 3>&1 1>&2 2>&3) || DE="none"
fi fi
@ -299,6 +304,11 @@ if [[ "$COMPONENTS" == *"de"* && "$DE" != "none" ]]; then
case "$DE" in case "$DE" in
hyprland) run_module "Hyprland" "$MODULES/Desktop-Environments/hyprland.sh" ;; hyprland) run_module "Hyprland" "$MODULES/Desktop-Environments/hyprland.sh" ;;
sway) run_module "Sway" "$MODULES/Desktop-Environments/sway.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 esac
fi fi