72 lines
3.2 KiB
Bash
Executable File
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."
|