Restructure for bare Fedora: lib/ + modules/, DE selection restored
Splits setup.sh into lib/common.sh, lib/session.sh and seven modules (3 DE, 4 TWM). Targets a bare Fedora 44+ install. Fixes carried over from the first build: - DEBUG_MODE was unbound under set -u, aborting the script at the version banner - mangled 'echohttps://...' line left over from the starburst split - set -e was missing entirely; --debug flag parsing restored - unguarded 'clear' aborted the run without TERM - $PRETTY_NAME unguarded under set -u - modules were sourced, leaking shell options into the parent - Flathub added twice (system-wide + per-user) - no dnf5-plugins check before using 'dnf config-manager' - no Fedora release gate - /usr/share/xsessions assumed to exist when writing session entries
This commit is contained in:
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
set -uo pipefail
|
||||
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=../../lib/common.sh
|
||||
source "$HERE/../../lib/common.sh"
|
||||
# shellcheck source=../../lib/session.sh
|
||||
source "$HERE/../../lib/session.sh"
|
||||
|
||||
if is_debug; then set +e; else set -e; fi
|
||||
|
||||
step "Desktop environment: GNOME"
|
||||
rule
|
||||
|
||||
if pkg_installed gnome-shell; then
|
||||
ok "GNOME already installed."
|
||||
else
|
||||
info "Installing the GNOME desktop..."
|
||||
# Group names have shifted across releases; take whichever exists.
|
||||
install_group_any gnome-desktop gnome-desktop-environment workstation-product-environment
|
||||
install_optional gnome-tweaks gnome-extensions-app
|
||||
fi
|
||||
|
||||
# GNOME ships and enables gdm itself. We deliberately leave it alone: a DE module
|
||||
# never fights the DE over its own greeter. A TWM module switched on top will
|
||||
# move the system to SDDM instead.
|
||||
info "Current display manager: $(detect_display_manager)"
|
||||
|
||||
ok "GNOME setup complete."
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
set -uo pipefail
|
||||
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=../../lib/common.sh
|
||||
source "$HERE/../../lib/common.sh"
|
||||
# shellcheck source=../../lib/session.sh
|
||||
source "$HERE/../../lib/session.sh"
|
||||
|
||||
if is_debug; then set +e; else set -e; fi
|
||||
|
||||
step "Desktop environment: KDE Plasma"
|
||||
rule
|
||||
|
||||
if pkg_installed plasma-workspace; then
|
||||
ok "Plasma already installed."
|
||||
else
|
||||
info "Installing the KDE Plasma desktop..."
|
||||
install_group_any kde-desktop kde-desktop-environment
|
||||
fi
|
||||
|
||||
# Plasma's native greeter is SDDM; make sure it is actually the active one.
|
||||
install_packages sddm
|
||||
switch_display_manager sddm
|
||||
|
||||
ok "Plasma setup complete."
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
set -uo pipefail
|
||||
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=../../lib/common.sh
|
||||
source "$HERE/../../lib/common.sh"
|
||||
# shellcheck source=../../lib/session.sh
|
||||
source "$HERE/../../lib/session.sh"
|
||||
|
||||
if is_debug; then set +e; else set -e; fi
|
||||
|
||||
step "Desktop environment: XFCE"
|
||||
rule
|
||||
|
||||
if pkg_installed xfce4-session; then
|
||||
ok "XFCE already installed."
|
||||
else
|
||||
info "Installing the XFCE desktop..."
|
||||
install_group_any xfce-desktop xfce-desktop-environment
|
||||
install_optional "@xfce-extra-plugins"
|
||||
fi
|
||||
|
||||
# XFCE is X11. It needs an X server present even when it is only the session
|
||||
# provider for chadwm.
|
||||
install_packages xorg-x11-server-Xorg xorg-x11-xinit
|
||||
|
||||
# XFCE's native greeter is lightdm
|
||||
if ! pkg_installed lightdm; then
|
||||
install_packages lightdm
|
||||
fi
|
||||
switch_display_manager lightdm
|
||||
|
||||
install_nerd_font JetBrainsMono
|
||||
install_packages alacritty dconf
|
||||
|
||||
# Point XFCE's terminal preference at alacritty, seeding the config directly so
|
||||
# it applies on first login rather than needing a session restart.
|
||||
XFCONF_DIR="$HOME/.config/xfce4/xfconf/xfce-perchannel-xml"
|
||||
mkdir -p "$XFCONF_DIR"
|
||||
info "Seeding XFCE session defaults..."
|
||||
cat > "$XFCONF_DIR/xfce4-session.xml" <<'EOF'
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channel name="xfce4-session" version="1.0">
|
||||
<property name="general" type="empty">
|
||||
<property name="TerminalEmulator" type="string" value="alacritty"/>
|
||||
</property>
|
||||
</channel>
|
||||
EOF
|
||||
|
||||
ok "XFCE setup complete."
|
||||
Reference in New Issue
Block a user