From 886f22ede3907b1026092c96a22ee0fb7ee60cab Mon Sep 17 00:00:00 2001 From: Donald Williams <129223418+dwilliam62@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:40:52 -0500 Subject: [PATCH] Development to main Pin def v0.53.2 chg build dir location fix versioning (#235) * Testing build from debian packages On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: BUILD_METHOD_OPTIONS.md new file: CHANGES_SUMMARY.md new file: GIT_STATUS.md new file: INSTALL_METHOD_GUIDE.md new file: QUICK_START.txt modified: install.sh * Fix package installation: skip plugins and debug symbols by default, improve dependency handling * Add comprehensive troubleshooting guide for package installation issues * Fix package installation path handling: use full paths instead of cd to preserve working directory * Removed files related to debian pacakge building On branch development Your branch is up to date with 'origin/development'. Changes to be committed: deleted: BUILD_METHOD_OPTIONS.md deleted: GIT_STATUS.md deleted: INSTALL_METHOD_GUIDE.md deleted: PACKAGE_INSTALL_TROUBLESHOOTING.md deleted: QUICK_START.txt * Ported ubuntu quickshell install script to debian On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: install-scripts/quickshell.sh * Forgot to add quickshell as install option On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install.sh * Added missing depdendencies to debian quickshell On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/quickshell.sh * Fixing QML import pathing On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/quickshell.sh * Adding shim for missing QML properies On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/quickshell.sh * Added check for debian trixie in quickshell install Trixe doesn't support overview seems like the QT libs are too old On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/quickshell.sh * Fixed typo in script On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: refresh-hypr-tags.sh * libmuparser-dev is now needed On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/00-dependencies.sh modified: install-scripts/hyprland.sh * Adding hyprwire depdency On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hypr-tags.env new file: install-scripts/hyprwire.sh modified: install.sh modified: refresh-hypr-tags.sh modified: update-hyprland.sh * Updating hyprwire build order On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland.sh * Fixing script permissions * fixing hyprwire build error On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprwire.sh * Still fixing hyprwire build errors On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprwire.sh * Fixing SED error. (I Hate sed) On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprwire.sh * Still getting append errors trying another fix On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprwire.sh * Updated tags for 0.53.0 On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: ../hypr-tags.env modified: hyprland.sh * Fixing build error on hyprland On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprland.sh * Still getting build errors with hyprland On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland.sh * More build errors to fix On branch development Your branch is ahead of 'origin/development' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: modified: install-scripts/hyprland.sh * Fixind SED error * Hyprland tag set to 52.2 * Scripts has hardcoded versions vs. pulling hypr-env On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/aquamarine.sh modified: install-scripts/hyprcursor.sh modified: install-scripts/hyprgraphics.sh modified: install-scripts/hyprland-guiutils.sh modified: install-scripts/hyprland-protocols.sh modified: install-scripts/hyprland-qt-support.sh modified: install-scripts/hyprland.sh modified: install-scripts/hyprlang.sh modified: install-scripts/hyprtoolkit.sh modified: install-scripts/hyprutils.sh modified: install-scripts/hyprwayland-scanner.sh modified: install-scripts/hyprwire.sh modified: install-scripts/wayland-protocols-src.sh * Fixing update-hyprland to support tags On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprutils.sh modified: update-hyprland.sh * Fixing update-hyprland (again) to use env-tags On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: update-hyprland.sh * Fixing update-hyprland On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: update-hyprland.sh * Trying to get trixie to build On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland.sh * Updated README re: NVIDIA drivers & HL 0.52.2+ on Trixie On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: README.md * UPD: Before ubunmtu was out-of-date, now can run HL dots previsously ubuntu was older HL. Now it's up to date and can also run current dotfiles. Removed old statement saying ubuntu could not run current dotfiles. On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: README.md * Pinned version to 52.2 for debian stable support On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOGS.md deleted: CHANGES_SUMMARY.md modified: Debian-Hyprland-Install-Upgrade.es.md modified: Debian-Hyprland-Install-Upgrade.md modified: hypr-tags.env new file: hypr-tags.env-v.053 modified: update-hyprland.sh * Fixed update-hyprland refresh-hypr-tags --force-override It now assumes --fetch-latest Small formatting fixes Now shows version to upgrade too and pause to allow review On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOGS.md modified: Debian-Hyprland-Install-Upgrade.es.md modified: Debian-Hyprland-Install-Upgrade.md modified: dry-run-build.sh modified: refresh-hypr-tags.sh modified: update-hyprland.sh * Fixing build scrpt to work onm debian stable On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland-guiutils.sh * Added selectable shim for hyprwire to allow building on trixie On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprwire.sh * Fixed hyprland 0.53 build for trixie found bug in xdph script On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hyprland.sh modified: xdph.sh modified: ../install.sh modified: ../update-hyprland.sh * Major Update Debian trixie 0.53.1 support new build flags Trixie needs small patches to build vs. testing+ Script now detects that. But some debian based distros might mask name There is a flag `--force-trixie` to include the fixes Updated the Install-Upgrade documents with the specifics On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOGS.md modified: Debian-Hyprland-Install-Upgrade.es.md modified: Debian-Hyprland-Install-Upgrade.md modified: README.md modified: hypr-tags.env deleted: hypr-tags.env-v.053 modified: install.sh modified: refresh-hypr-tags.sh modified: update-hyprland.sh * Updated CHANGELOG with note about debian stable support On branch development Your branch is up to date with 'origin/development'. Changes to be committed: renamed: CHANGELOGS.md -> CHANGELOG.md * Sync README/CHANGELOG with main * Updated CHANGELOG and README re: debian trixie upgrades to Forky+ You must recompile Hyprland `update-hyprland --install --with-deps` Otherwise hyprland won't start You will be returned to the login manager On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: README.md * Fixed install script to pull current headers for versioning Fastfetch was showing wrong version duo to header files from 52.2 On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland.sh * Improved syncing versioning Gets commit hash, tag, date, commit count, dirty state from hyprland --version. Pulls library versions from hyprland --version first, and falls back to hypr-tags.env if missing. Writes those values into /usr/include/hyprland/src/version.h. On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/hyprland.sh * Fixed ver mismatch in FF Pinned stable to 53.2 create build dir Now the code will compile in build directory vs. base directory Easier to clean up On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: Debian-Hyprland-Install-Upgrade.es.md modified: Debian-Hyprland-Install-Upgrade.md modified: README.md modified: hypr-tags.env modified: install-scripts/Global_functions.sh modified: install-scripts/ags.sh modified: install-scripts/aquamarine.sh modified: install-scripts/hyprcursor.sh modified: install-scripts/hyprgraphics.sh modified: install-scripts/hypridle.sh modified: install-scripts/hyprland-guiutils.sh modified: install-scripts/hyprland-protocols.sh modified: install-scripts/hyprland-qt-support.sh modified: install-scripts/hyprland.sh modified: install-scripts/hyprlang.sh modified: install-scripts/hyprlock.sh modified: install-scripts/hyprpolkitagent.sh modified: install-scripts/hyprtoolkit.sh modified: install-scripts/hyprutils.sh modified: install-scripts/hyprwayland-scanner.sh modified: install-scripts/hyprwire.sh modified: install-scripts/quickshell.sh modified: install-scripts/rofi-wayland.sh modified: install-scripts/wayland-protocols-src.sh modified: install-scripts/xdph.sh modified: install-scripts/xkbcommon.sh modified: refresh-hypr-tags.sh modified: update-hyprland.sh * Moved source and builds to build dir Cleanup is now just removing the build directory and install-logs On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: install-scripts/Global_functions.sh modified: install-scripts/ags.sh modified: install-scripts/aquamarine.sh modified: install-scripts/dotfiles-branch.sh modified: install-scripts/gtk_themes.sh modified: install-scripts/hyprcursor.sh modified: install-scripts/hyprgraphics.sh modified: install-scripts/hypridle.sh modified: install-scripts/hyprland-guiutils.sh modified: install-scripts/hyprland-protocols.sh modified: install-scripts/hyprland-qt-support.sh modified: install-scripts/hyprland.sh modified: install-scripts/hyprlang.sh modified: install-scripts/hyprlock.sh modified: install-scripts/hyprpolkitagent.sh modified: install-scripts/hyprtoolkit.sh modified: install-scripts/hyprutils.sh modified: install-scripts/hyprwayland-scanner.sh modified: install-scripts/hyprwire.sh modified: install-scripts/quickshell.sh modified: install-scripts/rofi-wayland.sh modified: install-scripts/rog.sh modified: install-scripts/sddm_theme.sh modified: install-scripts/swww.sh modified: install-scripts/wayland-protocols-src.sh modified: install-scripts/xdph.sh modified: install-scripts/xkbcommon.sh modified: install-scripts/zsh_pokemon.sh * Fixed build error with hyprtoolkit * Updated docs for new build dir layout and how to clean up after On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Debian-Hyprland-Install-Upgrade.es.md modified: Debian-Hyprland-Install-Upgrade.md * Updated CHANGELOG with build dir change and fixes On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md --- CHANGELOG.md | 13 ++- Debian-Hyprland-Install-Upgrade.es.md | 16 ++- Debian-Hyprland-Install-Upgrade.md | 16 ++- README.md | 6 +- hypr-tags.env | 17 ++- install-scripts/Global_functions.sh | 6 ++ install-scripts/ags.sh | 20 ++-- install-scripts/aquamarine.sh | 21 ++-- install-scripts/dotfiles-branch.sh | 11 +- install-scripts/gtk_themes.sh | 13 +-- install-scripts/hyprcursor.sh | 21 ++-- install-scripts/hyprgraphics.sh | 21 ++-- install-scripts/hypridle.sh | 21 ++-- install-scripts/hyprland-guiutils.sh | 21 ++-- install-scripts/hyprland-protocols.sh | 19 ++-- install-scripts/hyprland-qt-support.sh | 21 ++-- install-scripts/hyprland.sh | 131 ++++++++++++++++++++--- install-scripts/hyprlang.sh | 21 ++-- install-scripts/hyprlock.sh | 21 ++-- install-scripts/hyprpolkitagent.sh | 21 ++-- install-scripts/hyprtoolkit.sh | 22 ++-- install-scripts/hyprutils.sh | 22 ++-- install-scripts/hyprwayland-scanner.sh | 21 ++-- install-scripts/hyprwire.sh | 23 ++-- install-scripts/quickshell.sh | 15 +-- install-scripts/rofi-wayland.sh | 26 +++-- install-scripts/rog.sh | 8 +- install-scripts/sddm_theme.sh | 13 +-- install-scripts/swww.sh | 13 +-- install-scripts/wayland-protocols-src.sh | 21 ++-- install-scripts/xdph.sh | 21 ++-- install-scripts/xkbcommon.sh | 21 ++-- install-scripts/zsh_pokemon.sh | 9 +- refresh-hypr-tags.sh | 2 +- update-hyprland.sh | 2 +- 35 files changed, 452 insertions(+), 244 deletions(-) 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