Dotfiles/setup/modules/Desktop-Environments/gnome.sh

72 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# gnome.sh — GNOME Desktop Environment installer
# =============================================================================
# Part of the Dotfiles setup system for Arch Linux.
#
# GNOME is a mature, GTK4-based desktop environment that targets simplicity and
# a touch-friendly workflow. On Arch it is shipped as the 'gnome' group, which
# pulls in GNOME Shell (the compositor/WM), Mutter, GDM (the display manager),
# and the core GNOME application set.
#
# This script installs GNOME plus the PipeWire audio stack, GNOME's XDG portal
# (required for Flatpak sandboxing and screen sharing under Wayland), and
# enables the essential system services.
#
# Prerequisites: run as a normal user with sudo access; pacman available;
# internet connection active.
# =============================================================================
# Exit on any error; fail on unset variables; propagate pipeline errors.
set -euo pipefail
# Load shared logging helpers (log, warn, err) from the setup library.
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
log "Installing GNOME desktop..."
# Install GNOME and its ecosystem:
#
# gnome — the official GNOME package group; includes
# gnome-shell, mutter, gdm, gnome-control-center,
# nautilus, and other core apps
#
# gnome-tweaks — exposes advanced settings not available in
# GNOME Settings (fonts, window buttons, legacy
# GTK theme overrides, extensions toggle)
#
# xdg-desktop-portal-gnome — GNOME's implementation of the XDG Desktop
# Portal D-Bus API; required for Flatpak apps to
# open file choosers, request screenshots, and
# share screens under Wayland
#
# pipewire — low-latency audio/video routing daemon
# wireplumber — PipeWire session/policy manager
# pipewire-alsa — ALSA compatibility layer on top of PipeWire
# pipewire-jack — JACK API emulation for pro-audio software
# pipewire-pulse — PulseAudio socket emulation for legacy apps
#
# networkmanager — network connection management daemon (wired,
# Wi-Fi, VPN, etc.)
#
# flatpak — sandboxed app delivery; GNOME Software uses it
# to install Flathub applications
sudo pacman -S --noconfirm --needed \
gnome \
gnome-tweaks \
xdg-desktop-portal-gnome \
pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \
networkmanager \
flatpak
log "Enabling services..."
# GDM (GNOME Display Manager) handles the login screen and session startup.
# It is bundled with the 'gnome' group and is the canonical choice for GNOME.
sudo systemctl enable gdm.service
# Start NetworkManager on boot so connections are available before login.
sudo systemctl enable NetworkManager.service
log "GNOME installation complete. Reboot to start."