$ show JaKooLit/Arch-Hyprland
This repository contains a comprehensive set of Bash scripts to automate the installation and configuration of the Hyprland window manager on Arch Linux, along with associated desktop components (waybar, rofi, sddm, pipewire, fonts, GTK themes, etc.). The main entry point is `install.sh`, which presents an interactive whiptail-based menu to let users select desired features (NVIDIA setup, Bluetooth, Thunar, ZSH, dotfiles, etc.). It orchestrates over 30 modular sub-scripts in `install-scripts/` that handle package installation via pacman and AUR helpers, service enabling, configuration file copying (including the popular KooL Hyprland dotfiles from a separate repository), and system modifications. The codebase is well-structured for its purpose: it uses a centralized logging system, progress indicators, and a global functions library (`Global_functions.sh`) that encapsulates package installation and error handling. Additional utility scripts provide battery, disk, and temperature monitoring as optional systemd user services. The project is actively maintained with changelog updates and issue templates, though it is tightly coupled to the Arch Linux ecosystem and the KooL Hyprland dotfiles. It is not a reusable library but serves as a polished, user-friendly deployment tool for end-users.
The LLM identified 3 files worth highlighting for reuse:
Provides reusable Bash functions (`install_package`, `uninstall_package`, `show_progress`) used by all install sub-scripts. It standardizes package installation via pacman or AUR helpers, logs output, and displays animated progress indicators. This module is self-contained (no internal imports beyond color variables) and could be extracted into any Bash-based system deployment project with minimal modification.
A self-contained installer script that sets up a battery level monitoring daemon. It installs `acpi` and `libnotify`, generates a monitoring Bash script, creates a systemd user service, and enables it. The generated monitor script uses configurable thresholds (LOW=20%, CRITICAL=10%) and debounces notifications to avoid spam. This pattern is directly reusable for any Linux distribution with systemd and can be easily adapted for other monitoring tasks (e.g., CPU temperature, disk space).
An interactive uninstaller that uses whiptail to let users select specific packages and configuration directories to remove. It implements retry logic for package removal, confirms twice before action, and logs all operations. The separation of package and directory listing into arrays with metadata, plus the modular `remove_packages` and `remove_directories` functions, makes this a clean template for crafting guided removal tools for other software stacks.