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