From 48e4f067d9bc96df2ec92247af82f9f845286e68 Mon Sep 17 00:00:00 2001 From: Don Williams Date: Fri, 23 Jan 2026 16:39:49 -0500 Subject: [PATCH] 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 --- CHANGELOG.md | 4 +- Debian-Hyprland-Install-Upgrade.es.md | 2 +- Debian-Hyprland-Install-Upgrade.md | 2 +- README.md | 6 +-- hypr-tags.env | 17 +++----- install-scripts/Global_functions.sh | 4 ++ install-scripts/ags.sh | 6 ++- install-scripts/aquamarine.sh | 8 ++-- install-scripts/hyprcursor.sh | 8 ++-- install-scripts/hyprgraphics.sh | 8 ++-- install-scripts/hypridle.sh | 8 ++-- install-scripts/hyprland-guiutils.sh | 8 ++-- install-scripts/hyprland-protocols.sh | 6 ++- install-scripts/hyprland-qt-support.sh | 8 ++-- install-scripts/hyprland.sh | 50 ++++++++++++++++++++---- install-scripts/hyprlang.sh | 8 ++-- install-scripts/hyprlock.sh | 8 ++-- install-scripts/hyprpolkitagent.sh | 8 ++-- install-scripts/hyprtoolkit.sh | 8 ++-- install-scripts/hyprutils.sh | 8 ++-- install-scripts/hyprwayland-scanner.sh | 8 ++-- install-scripts/hyprwire.sh | 10 +++-- install-scripts/quickshell.sh | 11 +++--- install-scripts/rofi-wayland.sh | 6 ++- install-scripts/wayland-protocols-src.sh | 8 ++-- install-scripts/xdph.sh | 8 ++-- install-scripts/xkbcommon.sh | 8 ++-- refresh-hypr-tags.sh | 2 +- update-hyprland.sh | 2 +- 29 files changed, 160 insertions(+), 88 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 564cf93..a12c616 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,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 +28,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..2500013 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 diff --git a/Debian-Hyprland-Install-Upgrade.md b/Debian-Hyprland-Install-Upgrade.md index 612d530..d421097 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 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..f972314 100755 --- a/install-scripts/Global_functions.sh +++ b/install-scripts/Global_functions.sh @@ -25,6 +25,10 @@ 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" + # Show progress function show_progress() { local pid=$1 diff --git a/install-scripts/ags.sh b/install-scripts/ags.sh index af27776..8cc3417 100755 --- a/install-scripts/ags.sh +++ b/install-scripts/ags.sh @@ -109,9 +109,11 @@ 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 + 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 diff --git a/install-scripts/aquamarine.sh b/install-scripts/aquamarine.sh index 60f0f4c..c9b004f 100755 --- a/install-scripts/aquamarine.sh +++ b/install-scripts/aquamarine.sh @@ -50,10 +50,12 @@ fi 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` + 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" diff --git a/install-scripts/hyprcursor.sh b/install-scripts/hyprcursor.sh index f5f8b7a..fabc86c 100755 --- a/install-scripts/hyprcursor.sh +++ b/install-scripts/hyprcursor.sh @@ -55,9 +55,11 @@ fi 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 + 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" diff --git a/install-scripts/hyprgraphics.sh b/install-scripts/hyprgraphics.sh index 6dbf026..25d9ba8 100755 --- a/install-scripts/hyprgraphics.sh +++ b/install-scripts/hyprgraphics.sh @@ -62,10 +62,12 @@ fi 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` + 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" diff --git a/install-scripts/hypridle.sh b/install-scripts/hypridle.sh index 3b85f96..8756b2b 100755 --- a/install-scripts/hypridle.sh +++ b/install-scripts/hypridle.sh @@ -46,9 +46,11 @@ fi 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 + 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" diff --git a/install-scripts/hyprland-guiutils.sh b/install-scripts/hyprland-guiutils.sh index fc6df4f..e25457d 100755 --- a/install-scripts/hyprland-guiutils.sh +++ b/install-scripts/hyprland-guiutils.sh @@ -79,10 +79,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" diff --git a/install-scripts/hyprland-protocols.sh b/install-scripts/hyprland-protocols.sh index dbcbb4f..96b708a 100755 --- a/install-scripts/hyprland-protocols.sh +++ b/install-scripts/hyprland-protocols.sh @@ -50,9 +50,11 @@ fi 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 + 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" diff --git a/install-scripts/hyprland-qt-support.sh b/install-scripts/hyprland-qt-support.sh index 2018c66..7a7e84f 100755 --- a/install-scripts/hyprland-qt-support.sh +++ b/install-scripts/hyprland-qt-support.sh @@ -70,10 +70,12 @@ fi 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` + 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" diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index 926f33d..6f00c4f 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" @@ -81,6 +81,8 @@ fi if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then cd "Hyprland" || 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" @@ -179,17 +181,27 @@ 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" - if [ -f ./build/hyprland ]; then - VER_OUTPUT=$(./build/hyprland --version) + 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) @@ -247,13 +259,35 @@ EOF 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 - - if sudo mv /tmp/version_header.h.tmp /usr/include/hyprland/src/version.h 2>&1 | tee -a "$MLOG"; then + + 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" diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh index d5fc1f8..35adaaa 100755 --- a/install-scripts/hyprlang.sh +++ b/install-scripts/hyprlang.sh @@ -50,10 +50,12 @@ fi 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` + 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" diff --git a/install-scripts/hyprlock.sh b/install-scripts/hyprlock.sh index fb2165b..a50e2d3 100755 --- a/install-scripts/hyprlock.sh +++ b/install-scripts/hyprlock.sh @@ -55,9 +55,11 @@ fi 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 + 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" diff --git a/install-scripts/hyprpolkitagent.sh b/install-scripts/hyprpolkitagent.sh index 5a42aee..52b60c9 100755 --- a/install-scripts/hyprpolkitagent.sh +++ b/install-scripts/hyprpolkitagent.sh @@ -53,9 +53,11 @@ fi 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 + 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" diff --git a/install-scripts/hyprtoolkit.sh b/install-scripts/hyprtoolkit.sh index 7222123..94ebf4a 100755 --- a/install-scripts/hyprtoolkit.sh +++ b/install-scripts/hyprtoolkit.sh @@ -48,10 +48,12 @@ 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` + 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" diff --git a/install-scripts/hyprutils.sh b/install-scripts/hyprutils.sh index 96f2c17..6febaa9 100755 --- a/install-scripts/hyprutils.sh +++ b/install-scripts/hyprutils.sh @@ -51,10 +51,12 @@ 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) + 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" diff --git a/install-scripts/hyprwayland-scanner.sh b/install-scripts/hyprwayland-scanner.sh index a9dcc35..47ad21e 100755 --- a/install-scripts/hyprwayland-scanner.sh +++ b/install-scripts/hyprwayland-scanner.sh @@ -65,10 +65,12 @@ fi 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` + 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" diff --git a/install-scripts/hyprwire.sh b/install-scripts/hyprwire.sh index 1daf57e..6964c31 100755 --- a/install-scripts/hyprwire.sh +++ b/install-scripts/hyprwire.sh @@ -70,6 +70,8 @@ fi # Clone and build if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then cd hyprwire || 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 +133,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" diff --git a/install-scripts/quickshell.sh b/install-scripts/quickshell.sh index e46afd9..e4707a0 100755 --- a/install-scripts/quickshell.sh +++ b/install-scripts/quickshell.sh @@ -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..e68c5fc 100755 --- a/install-scripts/rofi-wayland.sh +++ b/install-scripts/rofi-wayland.sh @@ -85,8 +85,10 @@ fi cd rofi-$rofi_tag || 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" diff --git a/install-scripts/wayland-protocols-src.sh b/install-scripts/wayland-protocols-src.sh index 51cbff2..9f201b8 100755 --- a/install-scripts/wayland-protocols-src.sh +++ b/install-scripts/wayland-protocols-src.sh @@ -67,10 +67,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" diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh index 86fa8ff..5d68d36 100755 --- a/install-scripts/xdph.sh +++ b/install-scripts/xdph.sh @@ -56,9 +56,11 @@ 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 + 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" diff --git a/install-scripts/xkbcommon.sh b/install-scripts/xkbcommon.sh index 58a60fe..8577f19 100755 --- a/install-scripts/xkbcommon.sh +++ b/install-scripts/xkbcommon.sh @@ -50,9 +50,11 @@ fi 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 + 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" 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