diff --git a/CHANGELOG.md b/CHANGELOG.md index 564cf93..428f96e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## CHANGELOG +## 23 January 2026 + +- New layout for building Hyprland Source + - The `build` directory will hold the source and compiler output + - Now you can just remove the build directory after install +- Updated the default Hyprland version to `v0.53.2` +- Updated the documentation on the new directory layout +- Fixed issue of Fastfetch reading old hyprland version file + ## 21 January 2026 ### Important Note for Debian `Trixie` users. @@ -19,7 +28,7 @@ ## 02 January 2026 -### > Note: Support for Hyprland v0.53.1 is now available for Debian Stable (Trixie) +### > Note: Support for Hyprland v0.53.2 is now available for Debian Stable (Trixie) ### > At this time it should be considered BETA, not for production use @@ -28,7 +37,7 @@ ### > Only Intel, AMD, and in VMs - Updated: - - Default Hyprland stack versions now target 0.53.1 (see `hypr-tags.env`) + - Default Hyprland stack versions now target 0.53.2 (see `hypr-tags.env`) - Added trixie compatibility mode flags: - `--build-trixie` / `--no-trixie` (auto-detected on Debian 13) - Added `--force-update` to refresh pinned package versions diff --git a/Debian-Hyprland-Install-Upgrade.es.md b/Debian-Hyprland-Install-Upgrade.es.md index af5eb81..9f3260e 100644 --- a/Debian-Hyprland-Install-Upgrade.es.md +++ b/Debian-Hyprland-Install-Upgrade.es.md @@ -128,7 +128,7 @@ Archivo con etiquetas de versión para todos los componentes de Hyprland: ```bash # Versiones actuales (ejemplo) -HYPRLAND_TAG=v0.53.1 +HYPRLAND_TAG=v0.53.2 AQUAMARINE_TAG=v0.10.0 HYPRUTILS_TAG=v0.11.0 HYPRLANG_TAG=v0.6.8 @@ -327,6 +327,20 @@ Notas: - **Sin cambios en el sistema**: No instala archivos en /usr/local o /usr ## Gestión de Logs +## Artefactos de Build y Limpieza + +Todas las fuentes descargadas y salidas de compilación ahora viven en `~/Debian-Hyprland/build/`: + +- **Fuentes:** `build/src/` +- **Salida de build:** `build/` + +Esto mantiene el repositorio limpio. Para eliminar todos los artefactos de compilación: + +```bash +rm -rf ~/Debian-Hyprland/build +``` + +Nota: Esto solo elimina artefactos de compilación y fuentes descargadas; no desinstala nada del sistema. ### Ubicación de Logs diff --git a/Debian-Hyprland-Install-Upgrade.md b/Debian-Hyprland-Install-Upgrade.md index 612d530..d011a66 100644 --- a/Debian-Hyprland-Install-Upgrade.md +++ b/Debian-Hyprland-Install-Upgrade.md @@ -128,7 +128,7 @@ This file contains version tags for all Hyprland components: ```bash # Current versions (example) -HYPRLAND_TAG=v0.53.1 +HYPRLAND_TAG=v0.53.2 AQUAMARINE_TAG=v0.10.0 HYPRUTILS_TAG=v0.11.0 HYPRLANG_TAG=v0.6.8 @@ -327,6 +327,20 @@ Notes: - **No system changes**: No files installed to /usr/local or /usr ## Log Management +## Build Artifacts & Cleanup + +All source clones and build outputs now live under `~/Debian-Hyprland/build/`: + +- **Sources:** `build/src/` +- **Build output:** `build/` + +This keeps the repo root clean. To remove all build artifacts: + +```bash +rm -rf ~/Debian-Hyprland/build +``` + +Note: This only removes build artifacts and downloaded sources; it does not uninstall anything from your system. ### Log Location diff --git a/README.md b/README.md index 1541681..8490a2d 100644 --- a/README.md +++ b/README.md @@ -102,14 +102,14 @@ sudo nano /etc/apt/sources.list [Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md) - 10 January 2026 Update! -- Debian now builds Hyprland v0.53.1! +- Debian now builds Hyprland v0.53.2! - This requires the just released `Debian-Hyprland v2.9.4` installer - Debian 13 (`Trixie`, aka `Stable`) - - While it does now support v0.53.1 + - While it does now support v0.53.2 - At this time it should not be used for production - Testing is on going but NVIDIA GPUs have not been tested - Intel, AMD, and in VMs only so far - - Debian Testing (`Forky`) and Unstable (`SID`) - Build and run Hyprland v0.53.1 without issue + - Debian Testing (`Forky`) and Unstable (`SID`) - Build and run Hyprland v0.53.2 without issue - 10 October 2025 Update! - Hyprland-Debian nows builds 0.51.1 from source! diff --git a/hypr-tags.env b/hypr-tags.env index a3484a6..bea7ca8 100644 --- a/hypr-tags.env +++ b/hypr-tags.env @@ -1,18 +1,13 @@ -# Central tag overrides for the Hyprland stack -# You can edit these values or let update-hyprland.sh manage them. -# Each module script reads its TAG from these environment variables if set. - -# Hyprland 0.53.x stack (includes hyprwire) -HYPRLAND_TAG=v0.53.1 AQUAMARINE_TAG=v0.10.0 -HYPRUTILS_TAG=v0.11.0 -HYPRLANG_TAG=v0.6.8 HYPRGRAPHICS_TAG=v0.5.0 -HYPRTOOLKIT_TAG=v0.4.1 -HYPRWAYLAND_SCANNER_TAG=v0.4.5 +HYPRLAND_GUIUTILS_TAG=v0.2.1 HYPRLAND_PROTOCOLS_TAG=v0.7.0 HYPRLAND_QT_SUPPORT_TAG=v0.1.0 HYPRLAND_QTUTILS_TAG=v0.1.5 -HYPRLAND_GUIUTILS_TAG=v0.2.0 +HYPRLAND_TAG=v0.53.2 +HYPRLANG_TAG=v0.6.8 +HYPRTOOLKIT_TAG=v0.5.3 +HYPRUTILS_TAG=v0.11.0 +HYPRWAYLAND_SCANNER_TAG=v0.4.5 HYPRWIRE_TAG=v0.2.1 WAYLAND_PROTOCOLS_TAG=1.46 diff --git a/install-scripts/Global_functions.sh b/install-scripts/Global_functions.sh index 365f74c..b9af393 100755 --- a/install-scripts/Global_functions.sh +++ b/install-scripts/Global_functions.sh @@ -25,6 +25,12 @@ if [ ! -d Install-Logs ]; then mkdir Install-Logs fi +# Shared build output root (override with BUILD_ROOT env) +BUILD_ROOT="${BUILD_ROOT:-$PWD/build}" +mkdir -p "$BUILD_ROOT" +SRC_ROOT="${SRC_ROOT:-$BUILD_ROOT/src}" +mkdir -p "$SRC_ROOT" + # Show progress function show_progress() { local pid=$1 diff --git a/install-scripts/ags.sh b/install-scripts/ags.sh index af27776..6cf7f62 100755 --- a/install-scripts/ags.sh +++ b/install-scripts/ags.sh @@ -95,8 +95,9 @@ sudo npm install --global typescript 2>&1 | tee -a "$LOG" # ags v1 printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n" -# Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0") -for SRC_DIR in "ags" "ags_v1.9.0"; do +# Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0") under build/src +for OLD in "ags" "ags_v1.9.0"; do + SRC_DIR="$SRC_ROOT/$OLD" if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing %s directory...\\n" "$SRC_DIR" rm -rf "$SRC_DIR" @@ -107,11 +108,14 @@ printf "\n%.0s" {1..1} printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n" printf "\n%.0s" {1..1} # Clone repository with the specified tag and capture git output into MLOG -if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then - cd ags_v1.9.0 || exit 1 +SRC_DIR="$SRC_ROOT/ags_v1.9.0" +if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/ags_v1.9.0" + mkdir -p "$BUILD_DIR" npm install - meson setup build - if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then + meson setup "$BUILD_DIR" + if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then printf "\n${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" # Patch installed AGS launchers to ensure GI typelibs in /usr/local/lib are discoverable in GJS ESM @@ -203,11 +207,11 @@ WRAP echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG" fi # Move logs to Install-Logs directory - mv "$MLOG" ../Install-Logs/ || true + mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG" - mv "$MLOG" ../Install-Logs/ || true + mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true exit 1 fi diff --git a/install-scripts/aquamarine.sh b/install-scripts/aquamarine.sh index 60f0f4c..a23ab37 100755 --- a/install-scripts/aquamarine.sh +++ b/install-scripts/aquamarine.sh @@ -41,19 +41,22 @@ MLOG="install-$(date +%d-%H%M%S)_aquamarine.log" # Installation of dependencies printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" -# Check if aquamarinedirectory exists and remove it -if [ -d "aquamarine" ]; then - rm -rf "aquamarine" +# Check if aquamarinedirectory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/aquamarine" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n" -if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git; then - cd aquamarine || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` +if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/aquamarine" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}aquamarine $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -62,7 +65,7 @@ if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git; the echo "${NOTE} DRY RUN: Skipping installation of aquamarine $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/dotfiles-branch.sh b/install-scripts/dotfiles-branch.sh index 070fd7a..56ea44b 100755 --- a/install-scripts/dotfiles-branch.sh +++ b/install-scripts/dotfiles-branch.sh @@ -24,15 +24,16 @@ fi # Check if Hyprland-Dots exists printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n" -# Check if Hyprland-Dots exists -if [ -d Hyprland-Dots-Debian ]; then - cd Hyprland-Dots-Debian +# Check if Hyprland-Dots exists (under build/src) +SRC_DIR="$SRC_ROOT/Hyprland-Dots-Debian" +if [ -d "$SRC_DIR" ]; then + cd "$SRC_DIR" git stash && git pull chmod +x copy.sh ./copy.sh else - if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots Hyprland-Dots-Debian; then - cd Hyprland-Dots-Debian || exit 1 + if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 chmod +x copy.sh ./copy.sh else diff --git a/install-scripts/gtk_themes.sh b/install-scripts/gtk_themes.sh index e7cc6fd..9c1fbc4 100755 --- a/install-scripts/gtk_themes.sh +++ b/install-scripts/gtk_themes.sh @@ -29,18 +29,19 @@ for PKG1 in "${engine[@]}"; do install_package "$PKG1" "$LOG" done -# Check if the directory exists and delete it if present -if [ -d "GTK-themes-icons" ]; then +# Check if the directory exists and delete it if present (under build/src) +SRC_DIR="$SRC_ROOT/GTK-themes-icons" +if [ -d "$SRC_DIR" ]; then echo "$NOTE GTK themes and Icons directory exist..deleting..." 2>&1 | tee -a "$LOG" - rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG" -if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git ; then - cd GTK-themes-icons +if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git "$SRC_DIR"; then + cd "$SRC_DIR" chmod +x auto-extract.sh ./auto-extract.sh - cd .. + cd "$PARENT_DIR" echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG" else echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprcursor.sh b/install-scripts/hyprcursor.sh index f5f8b7a..c2bd291 100755 --- a/install-scripts/hyprcursor.sh +++ b/install-scripts/hyprcursor.sh @@ -45,25 +45,28 @@ for PKG1 in "${cursor[@]}"; do fi done -# Check if hyprcursor folder exists and remove it -if [ -d "hyprcursor" ]; then +# Check if hyprcursor folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprcursor" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprcursor folder...\n" - rm -rf "hyprcursor" + rm -rf "$SRC_DIR" fi # Clone and build printf "${NOTE} Installing hyprcursor...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git; then - cd hyprcursor || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then +if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprcursor" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} hyprcursor installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprcursor." 2>&1 | tee -a "$MLOG" fi #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true + mv $MLOG "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprgraphics.sh b/install-scripts/hyprgraphics.sh index 6dbf026..cede489 100755 --- a/install-scripts/hyprgraphics.sh +++ b/install-scripts/hyprgraphics.sh @@ -53,19 +53,22 @@ for PKG1 in "${hyprgraphics[@]}"; do done printf "\n%.0s" {1..1} -# Check if hyprgraphics directory exists and remove it -if [ -d "hyprgraphics" ]; then - rm -rf "hyprgraphics" +# Check if hyprgraphics directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprgraphics" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; then - cd hyprgraphics || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` +if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprgraphics" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hyprgraphics $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$MLOG" @@ -74,7 +77,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; the echo "${NOTE} DRY RUN: Skipping installation of hyprgraphics $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index 3b85f96..f5670b5 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -37,24 +37,27 @@ for PKG1 in "${idle[@]}"; do fi done -# Check if hypridle directory exists and remove it -if [ -d "hypridle" ]; then - rm -rf "hypridle" +# Check if hypridle directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hypridle" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git; then - cd hypridle || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build - cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then +if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hypridle" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hypridle $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$MLOG" fi #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true + mv $MLOG "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprland-guiutils.sh b/install-scripts/hyprland-guiutils.sh index fc6df4f..1f179de 100755 --- a/install-scripts/hyprland-guiutils.sh +++ b/install-scripts/hyprland-guiutils.sh @@ -63,15 +63,16 @@ done printf "\n%.0s" {1..1} -# Check if hyprland-guiutils directory exists and remove it -if [ -d "hyprland-guiutils" ]; then - rm -rf "hyprland-guiutils" +# Check if hyprland-guiutils directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprland-guiutils" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hyprland-guiutils $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git; then - cd hyprland-guiutils || exit 1 +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 # Prefer /usr/local Hypr* libs so we don't accidentally link against copies in /lib. export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}" export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}" @@ -79,10 +80,12 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git export LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath-link,/usr/local/lib ${LDFLAGS:-}" export CPPFLAGS="-I/usr/local/include ${CPPFLAGS:-}" - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + BUILD_DIR="$BUILD_ROOT/hyprland-guiutils" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hyprland-guiutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -91,7 +94,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git echo "${NOTE} DRY RUN: Skipping installation of hyprland-guiutils $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprland-protocols.sh b/install-scripts/hyprland-protocols.sh index dbcbb4f..09fa660 100755 --- a/install-scripts/hyprland-protocols.sh +++ b/install-scripts/hyprland-protocols.sh @@ -41,18 +41,21 @@ MLOG="install-$(date +%d-%H%M%S)_protocols2.log" # Installation of dependencies printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}" -# Check if hyprland-protocols directory exists and remove it -if [ -d "hyprland-protocols" ]; then - rm -rf "hyprland-protocols" +# Check if hyprland-protocols directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprland-protocols" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hyprland-protocols $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git; then - cd hyprland-protocols || exit 1 - meson setup build +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprland-protocols" + mkdir -p "$BUILD_DIR" + meson setup "$BUILD_DIR" if [ $DO_INSTALL -eq 1 ]; then - if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then + if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hyprland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -61,7 +64,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.gi echo "${NOTE} DRY RUN: Skipping installation of hyprland-protocols $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprland-qt-support.sh b/install-scripts/hyprland-qt-support.sh index 2018c66..b7a15b5 100755 --- a/install-scripts/hyprland-qt-support.sh +++ b/install-scripts/hyprland-qt-support.sh @@ -61,19 +61,22 @@ done printf "\n%.0s" {1..1} -# Check if hyprland-qt-support directory exists and remove it -if [ -d "hyprland-qt-support" ]; then - rm -rf "hyprland-qt-support" +# Check if hyprland-qt-support directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprland-qt-support" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hyprland-qt-support $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git; then - cd hyprland-qt-support || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` +if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprland-qt-support" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hyprland-qt-support $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -82,7 +85,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.g echo "${NOTE} DRY RUN: Skipping installation of hyprland-qt-support $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index bec3c75..6236c7e 100755 --- a/install-scripts/hyprland.sh +++ b/install-scripts/hyprland.sh @@ -3,7 +3,7 @@ # Main Hyprland Package# #specific branch or release -tag="v0.53.0" +tag="v0.53.2" # Auto-source centralized tags if env is unset if [ -z "${HYPRLAND_TAG:-}" ]; then TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env" @@ -73,14 +73,17 @@ printf "\n%.0s" {1..1} # Clone, build, and install Hyprland using Cmake printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n" -# Check if Hyprland folder exists and remove it -if [ -d "Hyprland" ]; then +# Check if Hyprland folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/Hyprland" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing Hyprland folder...\n" - rm -rf "Hyprland" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi -if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then - cd "Hyprland" || exit 1 +if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland" "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprland" + mkdir -p "$BUILD_DIR" # Compatibility shim for toolchains without std::vector::{insert_range,append_range} RANGE_HDR="$(pwd)/hypr_range_compat.hpp" @@ -129,9 +132,9 @@ EOF fi # Apply patch only if it applies cleanly; otherwise skip - if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then - if patch -p1 --dry-run <../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then - patch -p1 <../assets/0001-fix-hyprland-compile-issue.patch + if [ -f "$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" ]; then + if patch -p1 --dry-run <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" >/dev/null 2>&1; then + patch -p1 <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" else echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping." fi @@ -179,19 +182,121 @@ EOF -DCMAKE_CXX_FLAGS="-Wno-unknown-warning-option -include ${RANGE_HDR}" "${SYSTEM_FLAGS[@]}" ) - cmake -S . -B build "${CONFIG_FLAGS[@]}" - cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" + cmake -S . -B "$BUILD_DIR" "${CONFIG_FLAGS[@]}" + cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then printf "${OK} ${MAGENTA}Hyprland tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" + + # Update version header file for tools like fastfetch that read it at runtime + printf "${NOTE} Updating system version header for Hyprland...\n" + VER_OUTPUT="" + if [ -x "$BUILD_DIR/Hyprland" ]; then + VER_OUTPUT=$("$BUILD_DIR/Hyprland" --version) + elif [ -x "$BUILD_DIR/hyprland" ]; then + VER_OUTPUT=$("$BUILD_DIR/hyprland" --version) + elif command -v Hyprland >/dev/null 2>&1; then + VER_OUTPUT=$(Hyprland --version) + elif command -v hyprctl >/dev/null 2>&1; then + VER_OUTPUT=$(hyprctl version) + fi + + if [ -n "$VER_OUTPUT" ]; then + VERSION=$(printf '%s' "$VER_OUTPUT" | head -n1 | awk '{print $2}') + COMMIT=$(printf '%s' "$VER_OUTPUT" | grep -oP 'commit \K[a-f0-9]+' | head -1) + TAG=$(printf '%s' "$VER_OUTPUT" | grep -oP 'Tag: \K[^,]+' | head -1) + COMMIT_DATE=$(printf '%s' "$VER_OUTPUT" | grep -oP '^Date:\s+\K.*' | head -1) + COMMITS=$(printf '%s' "$VER_OUTPUT" | grep -oP 'commits:\s*\K[0-9]+' | head -1) + DIRTY=$(printf '%s' "$VER_OUTPUT" | grep -qi 'dirty' && echo "dirty" || echo "clean") + COMMIT_MSG=$(printf '%s' "$VER_OUTPUT" | head -n1 | sed -n 's/.*(version: \(.*\))\..*/\1/p') + + [ -z "$COMMIT" ] && COMMIT="unknown" + [ -z "$TAG" ] && TAG="v$VERSION" + [ -z "$COMMIT_DATE" ] && COMMIT_DATE="$(date)" + [ -z "$COMMITS" ] && COMMITS="0" + [ -z "$COMMIT_MSG" ] && COMMIT_MSG="version: bump" + + # Prefer versions from hyprland --version; fall back to hypr-tags.env values + parse_ver() { printf '%s' "$VER_OUTPUT" | grep -m1 "$1:" | grep -oP '\d+\.\d+\.\d+' | head -1; } + AQUA_VER=$(parse_ver "Aquamarine") + HYPRLANG_VER=$(parse_ver "Hyprlang") + HYPRUTILS_VER=$(parse_ver "Hyprutils") + HYPRCURSOR_VER=$(parse_ver "Hyprcursor") + HYPRGRAPHICS_VER=$(parse_ver "Hyprgraphics") + + [ -z "$AQUA_VER" ] && AQUA_VER="${AQUAMARINE_TAG#v}" + [ -z "$HYPRLANG_VER" ] && HYPRLANG_VER="${HYPRLANG_TAG#v}" + [ -z "$HYPRUTILS_VER" ] && HYPRUTILS_VER="${HYPRUTILS_TAG#v}" + [ -z "$HYPRGRAPHICS_VER" ] && HYPRGRAPHICS_VER="${HYPRGRAPHICS_TAG#v}" + [ -z "$HYPRCURSOR_VER" ] && HYPRCURSOR_VER="0.1.13" + [ -z "$AQUA_VER" ] && AQUA_VER="0.0.0" + [ -z "$HYPRLANG_VER" ] && HYPRLANG_VER="0.0.0" + [ -z "$HYPRUTILS_VER" ] && HYPRUTILS_VER="0.0.0" + [ -z "$HYPRGRAPHICS_VER" ] && HYPRGRAPHICS_VER="0.0.0" + + # AQUAMARINE_VERSION components + AQUA_MAJOR=$(echo "$AQUA_VER" | cut -d. -f1) + AQUA_MINOR=$(echo "$AQUA_VER" | cut -d. -f2) + AQUA_PATCH=$(echo "$AQUA_VER" | cut -d. -f3) + + # Use printf to safely write the file + printf '%s\n' "#pragma once" > /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_COMMIT_HASH \"$COMMIT\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_BRANCH \"\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_COMMIT_MESSAGE \"$COMMIT_MSG\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_COMMIT_DATE \"$COMMIT_DATE\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_DIRTY \"$DIRTY\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_TAG \"$TAG\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define GIT_COMMITS \"$COMMITS\"" >> /tmp/version_header.h.tmp + printf '%s\n' "" >> /tmp/version_header.h.tmp + printf '%s\n' "#define AQUAMARINE_VERSION \"$AQUA_VER\"" >> /tmp/version_header.h.tmp + printf '%s\n' "// clang-format off" >> /tmp/version_header.h.tmp + printf '%s\n' "#define AQUAMARINE_VERSION_MAJOR $AQUA_MAJOR" >> /tmp/version_header.h.tmp + printf '%s\n' "#define AQUAMARINE_VERSION_MINOR $AQUA_MINOR" >> /tmp/version_header.h.tmp + printf '%s\n' "#define AQUAMARINE_VERSION_PATCH $AQUA_PATCH" >> /tmp/version_header.h.tmp + printf '%s\n' "// clang-format on" >> /tmp/version_header.h.tmp + printf '%s\n' "#define HYPRLANG_VERSION \"$HYPRLANG_VER\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define HYPRUTILS_VERSION \"$HYPRUTILS_VER\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define HYPRCURSOR_VERSION \"$HYPRCURSOR_VER\"" >> /tmp/version_header.h.tmp + printf '%s\n' "#define HYPRGRAPHICS_VERSION \"$HYPRGRAPHICS_VER\"" >> /tmp/version_header.h.tmp + + TARGETS=() + if [ -f /usr/local/include/hyprland/src/version.h ]; then + TARGETS+=(/usr/local/include/hyprland/src/version.h) + fi + if [ -f /usr/include/hyprland/src/version.h ]; then + # If both exist, keep /usr/include in sync to avoid fastfetch mismatch. + TARGETS+=(/usr/include/hyprland/src/version.h) + fi + if [ ${#TARGETS[@]} -eq 0 ]; then + # Default to /usr/local if neither header exists yet. + TARGETS+=(/usr/local/include/hyprland/src/version.h) + fi + + UPDATED=0 + for tgt in "${TARGETS[@]}"; do + if sudo install -d "$(dirname "$tgt")" && sudo cp /tmp/version_header.h.tmp "$tgt" 2>&1 | tee -a "$MLOG"; then + UPDATED=1 + fi + done + + if [ $UPDATED -eq 1 ]; then + printf "${OK} System version header updated to $VERSION\n" 2>&1 | tee -a "$MLOG" + else + printf "${NOTE} Could not update system version header (non-critical)\n" 2>&1 | tee -a "$MLOG" + fi + rm -f /tmp/version_header.h.tmp + else + printf "${NOTE} Could not determine Hyprland version output for header update (non-critical)\n" 2>&1 | tee -a "$MLOG" + fi else echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG" fi else echo "${NOTE} DRY RUN: Skipping installation of Hyprland $tag." fi - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh index d5fc1f8..1e1b1be 100755 --- a/install-scripts/hyprlang.sh +++ b/install-scripts/hyprlang.sh @@ -41,19 +41,22 @@ MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log" # Installation of dependencies printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}" -# Check if hyprlang directory exists and remove it -if [ -d "hyprlang" ]; then - rm -rf "hyprlang" +# Check if hyprlang directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprlang" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then - cd hyprlang || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` +if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprlang" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}hyprlang tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -62,7 +65,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then echo "${NOTE} DRY RUN: Skipping installation of hyprlang $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprlock.sh b/install-scripts/hyprlock.sh index fb2165b..f51efa1 100755 --- a/install-scripts/hyprlock.sh +++ b/install-scripts/hyprlock.sh @@ -46,24 +46,27 @@ for PKG1 in "${build_dep[@]}"; do build_dep "$PKG1" "$LOG" done -# Check if hyprlock directory exists and remove it -if [ -d "hyprlock" ]; then - rm -rf "hyprlock" +# Check if hyprlock directory exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprlock" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build hyprlock printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git; then - cd hyprlock || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build - cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` - if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then +if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprlock" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${YELLOW}hyprlock $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$MLOG" fi #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true + mv $MLOG "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprpolkitagent.sh b/install-scripts/hyprpolkitagent.sh index 5a42aee..86adb29 100755 --- a/install-scripts/hyprpolkitagent.sh +++ b/install-scripts/hyprpolkitagent.sh @@ -43,25 +43,28 @@ for PKG1 in "${polkitagent[@]}"; do fi done -# Check if hyprpolkitagent folder exists and remove it -if [ -d "hyprpolkitagent" ]; then +# Check if hyprpolkitagent folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprpolkitagent" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprpolkitagent folder...\n" - rm -rf "hyprpolkitagent" + rm -rf "$SRC_DIR" fi # Clone and build printf "${NOTE} Installing hyprpolkitagent...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git; then - cd hyprpolkitagent || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then +if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprpolkitagent" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} hyprpolkitagent installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprpolkitagent." 2>&1 | tee -a "$MLOG" fi #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true + mv $MLOG "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for hyprpolkitagent." 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprtoolkit.sh b/install-scripts/hyprtoolkit.sh index 7222123..8ee62f3 100755 --- a/install-scripts/hyprtoolkit.sh +++ b/install-scripts/hyprtoolkit.sh @@ -40,18 +40,20 @@ MLOG="install-$(date +%d-%H%M%S)_hyprtoolkit2.log" # Clone, build, and install using Cmake printf "${NOTE} Cloning hyprtoolkit...\n" -# Check if hyprtoolkit folder exists and remove it -if [ -d "hyprtoolkit" ]; then +# Check if hyprtoolkit folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprtoolkit" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprtoolkit folder...\n" - rm -rf "hyprtoolkit" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi - -if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then - cd "hyprtoolkit" || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` +if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git" "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprtoolkit" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then printf "${OK} hyprtoolkit installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprtoolkit." 2>&1 | tee -a "$MLOG" @@ -59,7 +61,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then else echo "${NOTE} DRY RUN: Skipping installation of hyprtoolkit $tag." fi - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for hyprtoolkit" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprutils.sh b/install-scripts/hyprutils.sh index 96f2c17..eeb9183 100755 --- a/install-scripts/hyprutils.sh +++ b/install-scripts/hyprutils.sh @@ -43,18 +43,20 @@ MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log" # Clone, build, and install using Cmake printf "${NOTE} Cloning hyprutils...\n" -# Check if hyprutils folder exists and remove it -if [ -d "hyprutils" ]; then +# Check if hyprutils folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprutils" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprutils folder...\n" - rm -rf "hyprutils" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi - -if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then - cd "hyprutils" || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target all -j$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF) +if git clone -b $tag "https://github.com/hyprwm/hyprutils.git" "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprutils" + mkdir -p "$BUILD_DIR" + cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" --config Release --target all -j$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF) if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG" @@ -62,7 +64,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then else echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag." fi - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprwayland-scanner.sh b/install-scripts/hyprwayland-scanner.sh index a9dcc35..afeb321 100755 --- a/install-scripts/hyprwayland-scanner.sh +++ b/install-scripts/hyprwayland-scanner.sh @@ -55,20 +55,23 @@ done printf "${NOTE} Installing hyprwayland-scanner...\n" -# Check if hyprwayland-scanner folder exists and remove it -if [ -d "hyprwayland-scanner" ]; then +# Check if hyprwayland-scanner folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/hyprwayland-scanner" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprwayland-scanner folder...\n" - rm -rf "hyprwayland-scanner" + rm -rf "$SRC_DIR" fi # Clone and build hyprlang printf "${NOTE} Installing hyprwayland-scanner...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git; then - cd hyprwayland-scanner || exit 1 - cmake -DCMAKE_INSTALL_PREFIX=/usr -B build - cmake --build build -j `nproc` +if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprwayland-scanner" + mkdir -p "$BUILD_DIR" + cmake -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" -j `nproc` if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} hyprwayland-scanner installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprwayland-scanner." 2>&1 | tee -a "$MLOG" @@ -77,7 +80,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.g echo "${NOTE} DRY RUN: Skipping installation of hyprwayland-scanner $tag." fi #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG" diff --git a/install-scripts/hyprwire.sh b/install-scripts/hyprwire.sh index 1daf57e..4d36443 100755 --- a/install-scripts/hyprwire.sh +++ b/install-scripts/hyprwire.sh @@ -61,15 +61,18 @@ MLOG="install-$(date +%d-%H%M%S)_hyprwire2.log" printf "${NOTE} Installing hyprwire $tag...\n" -# Remove existing tree if present -if [ -d "hyprwire" ]; then +# Remove existing tree if present (under build/src) +SRC_DIR="$SRC_ROOT/hyprwire" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing hyprwire folder...\n" - rm -rf "hyprwire" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi # Clone and build -if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then - cd hyprwire || exit 1 +if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/hyprwire" + mkdir -p "$BUILD_DIR" # Decide whether we need the append_range compatibility shim. # On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch. @@ -131,14 +134,14 @@ EOF # Absolute path for forced include APPEND_HDR="$(pwd)/append_range_compat.hpp" - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}" + cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}" else echo "${NOTE} Toolchain supports std::vector::append_range; building hyprwire without shim." - cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 + cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 fi - cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" + cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} hyprwire $tag installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for hyprwire $tag" 2>&1 | tee -a "$MLOG" @@ -146,7 +149,7 @@ EOF else echo "${NOTE} DRY RUN: Skipping installation of hyprwire $tag." fi - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" cd .. else echo -e "${ERROR} Download failed for hyprwire $tag" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/quickshell.sh b/install-scripts/quickshell.sh index e46afd9..af0e66e 100755 --- a/install-scripts/quickshell.sh +++ b/install-scripts/quickshell.sh @@ -117,7 +117,7 @@ done # Build Google Breakpad from source if pkg-config 'breakpad' is missing if ! pkg-config --exists breakpad; then note "Building Google Breakpad from source..." - BP_DIR="$PARENT_DIR/.thirdparty/breakpad" + BP_DIR="$SRC_ROOT/breakpad" rm -rf "$BP_DIR" mkdir -p "$BP_DIR" ( @@ -166,7 +166,7 @@ PCEOF fi # Clone source (prefer upstream forgejo; mirror available at github:quickshell-mirror/quickshell) -SRC_DIR="quickshell-src" +SRC_DIR="$SRC_ROOT/quickshell-src" if [ -d "$SRC_DIR" ]; then note "Removing existing $SRC_DIR" rm -rf "$SRC_DIR" @@ -183,32 +183,33 @@ fi # Configure with Ninja; enable RelWithDebInfo, leave features ON (deps installed above) CMAKE_FLAGS=( -GNinja - -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDISTRIBUTOR="Debian-Hyprland installer" ) note "Configuring Quickshell (CMake)..." # Use explicit source/build dirs and preserve cmake exit code with pipefail -if ! cmake -S . -B build "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then +BUILD_DIR="$BUILD_ROOT/quickshell" +mkdir -p "$BUILD_DIR" +if ! cmake -S . -B "$BUILD_DIR" "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then echo "${ERROR} CMake configure failed. See log: $MLOG" | tee -a "$LOG" exit 1 fi # Ensure build files exist before invoking ninja -if [ ! -f build/build.ninja ]; then +if [ ! -f "$BUILD_DIR/build.ninja" ]; then echo "${ERROR} build/build.ninja not generated; aborting build." | tee -a "$LOG" exit 1 fi note "Building Quickshell (Ninja)..." -if ! cmake --build build 2>&1 | tee -a "$MLOG"; then +if ! cmake --build "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then echo "${ERROR} Build failed. See log: $MLOG" | tee -a "$LOG" exit 1 fi note "Installing Quickshell..." -if ! sudo cmake --install build 2>&1 | tee -a "$MLOG"; then +if ! sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then echo "${ERROR} Installation failed. See log: $MLOG" | tee -a "$LOG" exit 1 fi diff --git a/install-scripts/rofi-wayland.sh b/install-scripts/rofi-wayland.sh index 0526b40..72b882e 100755 --- a/install-scripts/rofi-wayland.sh +++ b/install-scripts/rofi-wayland.sh @@ -68,25 +68,29 @@ printf "\n%.0s" {1..2} # Clone and build rofi - wayland printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n" -# Check if rofi directory exists -if [ -d "rofi-$rofi_tag" ]; then - rm -rf "rofi-$rofi_tag" +# Check if rofi directory exists (under build/src) +SRC_DIR="$SRC_ROOT/rofi-$rofi_tag" +TAR_PATH="$SRC_ROOT/rofi-$rofi_tag.tar.gz" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # cloning rofi-wayland printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n" -wget $release_url +wget -O "$TAR_PATH" $release_url -if [ -f "rofi-$rofi_tag.tar.gz" ]; then +if [ -f "$TAR_PATH" ]; then printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG" - tar xf rofi-$rofi_tag.tar.gz + tar -C "$SRC_ROOT" -xf "$TAR_PATH" fi -cd rofi-$rofi_tag || exit 1 +cd "$SRC_DIR" || exit 1 # Proceed with the installation steps -if meson setup build && ninja -C build ; then - if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then +BUILD_DIR="$BUILD_ROOT/rofi-$rofi_tag" +mkdir -p "$BUILD_DIR" +if meson setup "$BUILD_DIR" && ninja -C "$BUILD_DIR" ; then + if sudo ninja -C "$BUILD_DIR" install 2>&1 | tee -a "$MLOG"; then printf "${OK} rofi-wayland installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -96,10 +100,10 @@ else fi # Move logs to Install-Logs directory -mv "$MLOG" ../Install-Logs/ || true +mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true cd .. || exit 1 # clean up -rm -rf rofi-$rofi_tag.tar.gz +rm -rf "$TAR_PATH" printf "\n%.0s" {1..2} diff --git a/install-scripts/rog.sh b/install-scripts/rog.sh index a629f9f..7e4230b 100755 --- a/install-scripts/rog.sh +++ b/install-scripts/rog.sh @@ -38,11 +38,13 @@ sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG" install_and_log() { local project_name="$1" local git_url="$2" + local src_dir="$SRC_ROOT/$project_name" printf "${NOTE} Installing $project_name\n" - if git clone "$git_url" "$project_name"; then - cd "$project_name" || exit 1 + rm -rf "$src_dir" + if git clone "$git_url" "$src_dir"; then + cd "$src_dir" || exit 1 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2>&1 | tee -a "$LOG" source "$HOME/.cargo/env" make @@ -58,7 +60,7 @@ install_and_log() { fi #moving logs into main install-logs - mv $LOG ../Install-Logs/ || true + mv $LOG "$PARENT_DIR/Install-Logs/" || true cd - || exit 1 else echo -e "${ERROR} Cloning $project_name from $git_url failed." diff --git a/install-scripts/sddm_theme.sh b/install-scripts/sddm_theme.sh index 2ac2070..4c2ed24 100755 --- a/install-scripts/sddm_theme.sh +++ b/install-scripts/sddm_theme.sh @@ -31,15 +31,16 @@ if [ -d "/usr/share/sddm/themes/$theme_name" ]; then echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory." 2>&1 | tee -a "$LOG" fi -# Check if $theme_name directory exists in the current directory and remove if it does -if [ -d "$theme_name" ]; then - rm -rf "$theme_name" +# Check if $theme_name directory exists in build/src and remove if it does +SRC_DIR="$SRC_ROOT/$theme_name" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG" fi # Clone the repository -if git clone --depth=1 "$source_theme" "$theme_name"; then - if [ ! -d "$theme_name" ]; then +if git clone --depth=1 "$source_theme" "$SRC_DIR"; then + if [ ! -d "$SRC_DIR" ]; then echo "${ERROR} Failed to clone the repository." | tee -a "$LOG" fi @@ -50,7 +51,7 @@ if git clone --depth=1 "$source_theme" "$theme_name"; then fi # Move cloned theme to the themes directory - sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" + sudo mv "$SRC_DIR" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" # setting up SDDM theme sddm_conf="/etc/sddm.conf" diff --git a/install-scripts/swww.sh b/install-scripts/swww.sh index f07b6f8..6113d8b 100755 --- a/install-scripts/swww.sh +++ b/install-scripts/swww.sh @@ -49,13 +49,14 @@ done printf "\n%.0s" {1..2} -# Check if swww directory exists -if [ -d "swww" ]; then - cd swww || exit 1 +# Check if swww directory exists (under build/src) +SRC_DIR="$SRC_ROOT/swww" +if [ -d "$SRC_DIR" ]; then + cd "$SRC_DIR" || exit 1 git pull origin main 2>&1 | tee -a "$MLOG" else - if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git; then - cd swww || exit 1 + if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 else echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG" exit 1 @@ -94,7 +95,7 @@ sudo mkdir -p /usr/share/zsh/site-functions 2>&1 | tee -a "$MLOG" sudo cp -r completions/_swww /usr/share/zsh/site-functions/_swww 2>&1 | tee -a "$MLOG" # Moving logs into main Install-Logs -mv "$MLOG" ../Install-Logs/ || true +mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true cd - || exit 1 printf "\n%.0s" {1..2} diff --git a/install-scripts/wayland-protocols-src.sh b/install-scripts/wayland-protocols-src.sh index 51cbff2..c20c40e 100755 --- a/install-scripts/wayland-protocols-src.sh +++ b/install-scripts/wayland-protocols-src.sh @@ -39,17 +39,18 @@ MLOG="install-$(date +%d-%H%M%S)_wayland-protocols2.log" printf "\n%s - Installing ${YELLOW}wayland-protocols (from source)${RESET} .... \n" "${INFO}" -# Clean previous clone -if [ -d "wayland-protocols" ]; then - rm -rf "wayland-protocols" +# Clean previous clone (under build/src) +SRC_DIR="$SRC_ROOT/wayland-protocols" +if [ -d "$SRC_DIR" ]; then + rm -rf "$SRC_DIR" fi # Clone and build (meson) # Upstream: https://gitlab.freedesktop.org/wayland/wayland-protocols.git printf "${INFO} Installing ${YELLOW}wayland-protocols $tag${RESET} ...\n" repo_url="https://gitlab.freedesktop.org/wayland/wayland-protocols.git" -if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then - cd wayland-protocols || exit 1 +if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 # Fetch tags and attempt to checkout the requested tag, trying both raw and v-prefixed git fetch --tags --depth=1 >/dev/null 2>&1 || true checked_out=0 @@ -67,10 +68,12 @@ if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then exit 1 fi # Install to /usr/local so pkg-config can prefer it over distro /usr - meson setup build --prefix=/usr/local - meson compile -C build -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" + BUILD_DIR="$BUILD_ROOT/wayland-protocols" + mkdir -p "$BUILD_DIR" + meson setup "$BUILD_DIR" --prefix=/usr/local + meson compile -C "$BUILD_DIR" -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" if [ $DO_INSTALL -eq 1 ]; then - if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then + if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}wayland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG" @@ -79,7 +82,7 @@ if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then echo "${NOTE} DRY RUN: Skipping installation of wayland-protocols $tag." fi # Move additional logs to Install-Logs directory if they exist - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ || true + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh index 86fa8ff..0777666 100755 --- a/install-scripts/xdph.sh +++ b/install-scripts/xdph.sh @@ -48,23 +48,26 @@ done # Clone, build, and install XDPH printf "${NOTE} Cloning and Installing ${YELLOW}XDG Desktop Portal Hyprland $tag${RESET} ...\n" -# Check if xdg-desktop-portal-hyprland folder exists and remove it -if [ -d "xdg-desktop-portal-hyprland" ]; then +# Check if xdg-desktop-portal-hyprland folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/xdg-desktop-portal-hyprland" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n" - rm -rf "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG" + rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" fi -if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then - cd "xdg-desktop-portal-hyprland" || exit 1 - cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build - cmake --build build - if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then +if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git" "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/xdg-desktop-portal-hyprland" + mkdir -p "$BUILD_DIR" + cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR" + cmake --build "$BUILD_DIR" + if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG" fi # Move the additional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ || true + [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG" diff --git a/install-scripts/xkbcommon.sh b/install-scripts/xkbcommon.sh index 58a60fe..398808f 100755 --- a/install-scripts/xkbcommon.sh +++ b/install-scripts/xkbcommon.sh @@ -40,25 +40,28 @@ for PKG1 in "${xkbcommon[@]}"; do fi done -# Check if xkbcommon folder exists and remove it -if [ -d "libxkbcommon" ]; then +# Check if xkbcommon folder exists and remove it (under build/src) +SRC_DIR="$SRC_ROOT/libxkbcommon" +if [ -d "$SRC_DIR" ]; then printf "${NOTE} Removing existing libxkbcommon folder...\n" - rm -rf "libxkbcommon" + rm -rf "$SRC_DIR" fi # Clone and build printf "${NOTE} Installing xkbcommon...\n" -if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git; then - cd libxkbcommon || exit 1 - meson setup build --libdir=/usr/local/lib - meson compile -C build - if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then +if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git "$SRC_DIR"; then + cd "$SRC_DIR" || exit 1 + BUILD_DIR="$BUILD_ROOT/libxkbcommon" + mkdir -p "$BUILD_DIR" + meson setup "$BUILD_DIR" --libdir=/usr/local/lib + meson compile -C "$BUILD_DIR" + if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then printf "${OK} xkbcommon installed successfully.\n" 2>&1 | tee -a "$MLOG" else echo -e "${ERROR} Installation failed for xkbcommon." 2>&1 | tee -a "$MLOG" fi #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true + mv $MLOG "$PARENT_DIR/Install-Logs/" || true cd .. else echo -e "${ERROR} Download failed for xkbcommon." 2>&1 | tee -a "$LOG" diff --git a/install-scripts/zsh_pokemon.sh b/install-scripts/zsh_pokemon.sh index d9f07fb..165083e 100755 --- a/install-scripts/zsh_pokemon.sh +++ b/install-scripts/zsh_pokemon.sh @@ -20,11 +20,12 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh_pokemon.log" printf "${INFO} Installing ${SKY_BLUE}Pokemon color scripts${RESET} ..." -if [ -d "pokemon-colorscripts" ]; then - cd pokemon-colorscripts && git pull && sudo ./install.sh && cd .. +SRC_DIR="$SRC_ROOT/pokemon-colorscripts" +if [ -d "$SRC_DIR" ]; then + cd "$SRC_DIR" && git pull && sudo ./install.sh && cd .. else - git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git && - cd pokemon-colorscripts && sudo ./install.sh && cd .. + git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git "$SRC_DIR" && + cd "$SRC_DIR" && sudo ./install.sh && cd .. fi # Check if ~/.zshrc exists diff --git a/refresh-hypr-tags.sh b/refresh-hypr-tags.sh index fb15654..28a2526 100755 --- a/refresh-hypr-tags.sh +++ b/refresh-hypr-tags.sh @@ -53,7 +53,7 @@ done if [[ ! -f "$TAGS_FILE" ]]; then cat > "$TAGS_FILE" <<'EOF' # Default Hyprland stack versions -HYPRLAND_TAG=v0.53.1 +HYPRLAND_TAG=v0.53.2 AQUAMARINE_TAG=v0.10.0 HYPRUTILS_TAG=v0.11.0 HYPRLANG_TAG=v0.6.8 diff --git a/update-hyprland.sh b/update-hyprland.sh index 229dfc3..9c29175 100755 --- a/update-hyprland.sh +++ b/update-hyprland.sh @@ -103,7 +103,7 @@ ensure_tags_file() { cat >"$TAGS_FILE" <<'EOF' # Default Hyprland stack versions # (You can override any of these via --set or by editing hypr-tags.env.) -HYPRLAND_TAG=v0.53.1 + HYPRLAND_TAG=v0.53.2 AQUAMARINE_TAG=v0.10.0 HYPRUTILS_TAG=v0.11.0 HYPRLANG_TAG=v0.6.8