Compare commits

...

18 Commits

Author SHA1 Message Date
Don Williams
370f7de9e4 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
2025-12-29 13:30:38 -05:00
Don Williams
178285a759 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
2025-12-29 13:04:03 -05:00
Don Williams
118d1509bb 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
2025-12-29 12:54:31 -05:00
Don Williams
fd832ef277 Hyprland tag set to 52.2 2025-12-29 12:47:34 -05:00
Don Williams
eef41a7104 Fixind SED error 2025-12-29 12:46:29 -05:00
Don Williams
b4095e471e 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
2025-12-29 12:42:50 -05:00
Don Williams
90c393ecd8 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
2025-12-29 12:32:45 -05:00
Don Williams
31c19f6364 Fixing build error on hyprland
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprland.sh
2025-12-29 12:23:26 -05:00
Don Williams
92156e9103 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
2025-12-29 12:19:40 -05:00
Don Williams
b2170cb081 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
2025-12-29 12:04:26 -05:00
Don Williams
a8f6e3c530 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
2025-12-29 12:02:40 -05:00
Don Williams
89a837d3c7 Still fixing hyprwire build errors
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 12:00:53 -05:00
Don Williams
ef0224a2b6 fixing hyprwire build error
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 11:58:58 -05:00
Don Williams
8c922dddef Fixing script permissions 2025-12-29 11:54:41 -05:00
Don Williams
f3725662ba 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
2025-12-29 11:53:30 -05:00
Don Williams
2357e80e00 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
2025-12-29 11:46:34 -05:00
Don Williams
b1cca5a898 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
2025-12-29 11:39:31 -05:00
Don Williams
87a35febca 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
2025-12-29 11:24:55 -05:00
19 changed files with 349 additions and 106 deletions

View File

@ -1,15 +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_TAG=v0.52.2
AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.10.4
HYPRLANG_TAG=v0.6.7
HYPRGRAPHICS_TAG=v0.4.0
HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRGRAPHICS_TAG=v0.5.0
HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRLAND_PROTOCOLS_TAG=v0.7.0
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRLAND_TAG=v0.53.0
HYPRLANG_TAG=v0.6.7
HYPRTOOLKIT_TAG=v0.4.1
HYPRUTILS_TAG=v0.11.0
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46

View File

@ -115,6 +115,7 @@ hyprland_dep=(
libjpeg-dev
libjxl-dev
libmagic-dev
libmuparser-dev
libpixman-1-dev
libpugixml-dev
libre2-dev

View File

@ -6,6 +6,11 @@
#specific branch or release
tag="v0.10.0"
# Auto-source centralized tags if env is unset
if [ -z "${AQUAMARINE_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${AQUAMARINE_TAG:-}" ]; then tag="$AQUAMARINE_TAG"; fi
@ -43,7 +48,7 @@ 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
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`

0
install-scripts/dotfiles-branch.sh Normal file → Executable file
View File

View File

@ -10,6 +10,12 @@ librsvg2-dev
#specific branch or release
tag="v0.1.13"
# Auto-source centralized tags if env is unset; allow override via HYPRCURSOR_TAG if present
if [ -z "${HYPRCURSOR_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
if [ -n "${HYPRCURSOR_TAG:-}" ]; then tag="$HYPRCURSOR_TAG"; fi
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

View File

@ -9,6 +9,11 @@ hyprgraphics=(
#specific branch or release
tag="v0.4.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRGRAPHICS_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRGRAPHICS_TAG:-}" ]; then tag="$HYPRGRAPHICS_TAG"; fi

View File

@ -18,6 +18,11 @@ guiutils=(
#specific branch or release
tag="v0.2.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRLAND_GUIUTILS_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRLAND_GUIUTILS_TAG:-}" ]; then tag="$HYPRLAND_GUIUTILS_TAG"; fi

View File

@ -6,6 +6,11 @@
#specific branch or release
tag="v0.7.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRLAND_PROTOCOLS_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRLAND_PROTOCOLS_TAG:-}" ]; then tag="$HYPRLAND_PROTOCOLS_TAG"; fi

View File

@ -16,6 +16,11 @@ qt_support=(
#specific branch or release
tag="v0.1.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRLAND_QT_SUPPORT_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRLAND_QT_SUPPORT_TAG:-}" ]; then tag="$HYPRLAND_QT_SUPPORT_TAG"; fi

View File

@ -3,7 +3,12 @@
# Main Hyprland Package#
#specific branch or release
tag="v0.52.2"
tag="v0.53.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRLAND_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRLAND_TAG:-}" ]; then tag="$HYPRLAND_TAG"; fi
@ -22,6 +27,7 @@ hyprland=(
libglaze-dev
libudis86-dev
libinotify-ocaml-dev
libmuparser-dev
)
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
@ -62,7 +68,6 @@ if [ ! -d /usr/include/glaze ]; then
echo "${INFO} ${YELLOW}libglaze-dev from assets${RESET} installed."
fi
printf "\n%.0s" {1..1}
# Clone, build, and install Hyprland using Cmake
@ -76,6 +81,43 @@ fi
if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then
cd "Hyprland" || exit 1
# Compatibility shim for toolchains without std::vector::{insert_range,append_range}
RANGE_HDR="$(pwd)/hypr_range_compat.hpp"
cat >"$RANGE_HDR" <<'EOF'
#pragma once
#include <iterator>
#include <ranges>
// insert at end using a range
#define INSERT_RANGE(vec, ...) (vec).insert((vec).end(), std::ranges::begin(__VA_ARGS__), std::ranges::end(__VA_ARGS__))
// insert at explicit position using a range
#define INSERT_RANGE_AT(vec, pos, ...) (vec).insert((vec).end() == (pos) ? (vec).end() : (pos), std::ranges::begin(__VA_ARGS__), std::ranges::end(__VA_ARGS__))
// append_range compatibility for containers expecting begin/end
#define APPEND_RANGE(vec, ...) (vec).insert((vec).end(), std::begin(__VA_ARGS__), std::end(__VA_ARGS__))
EOF
# Rewrite calls:
# x.insert_range(pos, rng) -> INSERT_RANGE_AT(x, pos, rng)
# x.insert_range(rng) -> INSERT_RANGE(x, rng)
# x.append_range(rng) -> APPEND_RANGE(x, rng)
PATCH_FILES=$(grep -REIl --exclude-dir=.git '\.\s*(insert_range|append_range)\s*\(' . || true)
if [ -n "$PATCH_FILES" ]; then
# Two-arg form first (pos, rng)
perl -0777 -pi -e 's/([A-Za-z_][[:alnum:]_:.>\-]*?)\s*\.\s*insert_range\s*\(\s*([^,]+?)\s*,\s*/INSERT_RANGE_AT($1, $2, /gs' $PATCH_FILES
# One-arg form (rng only)
perl -0777 -pi -e 's/([A-Za-z_][[:alnum:]_:.>\-]*?)\s*\.\s*insert_range\s*\(/INSERT_RANGE($1, /gs' $PATCH_FILES
# append_range
perl -0777 -pi -e 's/([A-Za-z_][[:alnum:]_:.>\-]*?)\s*\.\s*append_range\s*\(/APPEND_RANGE($1, /gs' $PATCH_FILES
fi
# Replace #embed with an autogenerated bytes include for toolchains lacking it
EX_CONF="$(pwd)/example/hyprland.conf"
EMBED_INC="$(pwd)/src/config/defaultConfig.bytes.inc"
if [ -f "$EX_CONF" ]; then
xxd -i -g 1 -c 16 "$EX_CONF" | sed -n '/^{/{flag=1;next} /};/{flag=0} flag p' >"$EMBED_INC" || true
# Swap the directive in the header to include the generated bytes
sed -ri 's|^\s*#embed\s+"\.{0,2}/\.{0,2}/example/hyprland\.conf"\s*$|#include "defaultConfig.bytes.inc"|g' src/config/defaultConfig.hpp || true
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
@ -90,11 +132,23 @@ USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1}
if [ "$USE_SYSTEM" = "1" ]; then
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}"
SYSTEM_FLAGS=("-DUSE_SYSTEM_HYPRUTILS=ON" "-DUSE_SYSTEM_HYPRLANG=ON")
SYSTEM_FLAGS=(
"-DUSE_SYSTEM_HYPRUTILS=ON"
"-DUSE_SYSTEM_HYPRLANG=ON"
"-DUSE_SYSTEM_HYPRWIRE=ON"
)
# Optional preflight: verify hyprwire is discoverable by CMake/pkg-config
if [ ! -e "/usr/local/lib/cmake/Hyprwire/HyprwireConfig.cmake" ] && ! pkg-config --exists hyprwire 2>/dev/null; then
echo "${NOTE} hyprwire not detected in /usr/local yet. Ensure install-scripts/hyprwire.sh ran successfully or set USE_SYSTEM_HYPRLIBS=0 to use subprojects."
fi
else
# Ensure we do not accidentally pick up mismatched system headers
unset PKG_CONFIG_PATH || true
SYSTEM_FLAGS=("-DUSE_SYSTEM_HYPRUTILS=OFF" "-DUSE_SYSTEM_HYPRLANG=OFF")
SYSTEM_FLAGS=(
"-DUSE_SYSTEM_HYPRUTILS=OFF"
"-DUSE_SYSTEM_HYPRLANG=OFF"
"-DUSE_SYSTEM_HYPRWIRE=OFF"
)
fi
# Make sure submodules are present when building bundled deps
@ -107,9 +161,10 @@ USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1}
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER="${CC}"
-DCMAKE_CXX_COMPILER="${CXX}"
-DCMAKE_CXX_STANDARD=26
-DCMAKE_CXX_STANDARD=23
-DCMAKE_CXX_STANDARD_REQUIRED=ON
-DCMAKE_CXX_EXTENSIONS=ON
-DCMAKE_CXX_FLAGS="-Wno-unknown-warning-option -include ${RANGE_HDR}"
"${SYSTEM_FLAGS[@]}"
)
cmake -S . -B build "${CONFIG_FLAGS[@]}"

View File

@ -6,6 +6,11 @@
#specific branch or release
tag="v0.6.7"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRLANG_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRLANG_TAG:-}" ]; then tag="$HYPRLANG_TAG"; fi

View File

@ -5,6 +5,11 @@
#specific branch or release
tag="v0.4.1"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRTOOLKIT_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRTOOLKIT_TAG:-}" ]; then tag="$HYPRTOOLKIT_TAG"; fi

View File

@ -4,7 +4,12 @@
# hyprutils #
#specific branch or release
tag="v0.10.4"
tag="v0.11.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRUTILS_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRUTILS_TAG:-}" ]; then tag="$HYPRUTILS_TAG"; fi
@ -20,7 +25,10 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
cd "$PARENT_DIR" || {
echo "${ERROR} Failed to change directory to $PARENT_DIR"
exit 1
}
# Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
@ -44,7 +52,7 @@ 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`
cmake --build ./build --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
printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG"
@ -61,5 +69,3 @@ else
fi
printf "\n%.0s" {1..2}

View File

@ -9,6 +9,11 @@ scan_depend=(
#specific branch or release
tag="v0.4.5"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRWAYLAND_SCANNER_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${HYPRWAYLAND_SCANNER_TAG:-}" ]; then tag="$HYPRWAYLAND_SCANNER_TAG"; fi

91
install-scripts/hyprwire.sh Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem
# hyprwire
# Specific branch or release (honor env override)
tag="v0.1.0"
# Auto-source centralized tags if env is unset
if [ -z "${HYPRWIRE_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
if [ -n "${HYPRWIRE_TAG:-}" ]; then tag="$HYPRWIRE_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
# Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprwire.log"
MLOG="install-$(date +%d-%H%M%S)_hyprwire2.log"
printf "${NOTE} Installing hyprwire $tag...\n"
# Remove existing tree if present
if [ -d "hyprwire" ]; then
printf "${NOTE} Removing existing hyprwire folder...\n"
rm -rf "hyprwire" 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
# Temporary compatibility shim for compilers/libstdc++ without std::vector::append_range
cat > append_range_compat.hpp <<'EOF'
#pragma once
#include <iterator>
#define APPEND_RANGE(vec, ...) (vec).insert((vec).end(), std::begin(__VA_ARGS__), std::end(__VA_ARGS__))
EOF
# Replace X.append_range(Y) -> APPEND_RANGE(X, Y) only where it appears
PATCH_FILES=$(grep -RIl --exclude-dir=.git 'append_range\(' . || true)
if [ -n "$PATCH_FILES" ]; then
# Replace LHS .append_range(arg...) with APPEND_RANGE(LHS, arg...)
# LHS: identifiers and common member/ptr chains (this->obj, ns::obj.member)
echo "$PATCH_FILES" | xargs -r sed -ri 's/([A-Za-z_][A-Za-z0-9_:\->\.]+)\s*\.\s*append_range\s*\(/APPEND_RANGE(\1, /g'
# Show any remaining occurrences
REMAIN=$(grep -RIn --exclude-dir=.git '\.\s*append_range\s*\(' $PATCH_FILES || true)
if [ -n "$REMAIN" ]; then
echo "[WARN] Some append_range() calls remain unpatched:" >&2
echo "$REMAIN" >&2
fi
fi
# 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 --build build -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
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"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprwire $tag."
fi
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for hyprwire $tag" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

5
install-scripts/wayland-protocols-src.sh Normal file → Executable file
View File

@ -5,6 +5,11 @@
#specific tag or release (e.g., 1.45, 1.46)
tag="1.45"
# Auto-source centralized tags if env is unset
if [ -z "${WAYLAND_PROTOCOLS_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
[ -f "$TAGS_FILE" ] && source "$TAGS_FILE"
fi
# Allow environment override
if [ -n "${WAYLAND_PROTOCOLS_TAG:-}" ]; then tag="$WAYLAND_PROTOCOLS_TAG"; fi

View File

@ -293,7 +293,7 @@ if [ -f "./hypr-tags.env" ]; then
source "./hypr-tags.env"
fi
fi
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG HYPRWIRE_TAG WAYLAND_PROTOCOLS_TAG
fi
#################
@ -540,6 +540,9 @@ else
sleep 1
execute_script "xkbcommon.sh"
sleep 1
# Build hyprwire before Hyprland (required by Hyprland >= 0.53)
execute_script "hyprwire.sh"
sleep 1
execute_script "hyprland.sh"
sleep 1
execute_script "hyprpolkitagent.sh"

4
refresh-hypr-tags.sh Normal file → Executable file
View File

@ -23,6 +23,7 @@ HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
HYPRWIRE_TAG=auto
WAYLAND_PROTOCOLS_TAG=1.45
EOF
fi
@ -47,6 +48,7 @@ declare -A repos=(
[HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols"
[HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support"
[HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils"
[HYPRWIRE_TAG]="hyprwm/hyprwire"
)
# Read existing
@ -54,7 +56,7 @@ declare -A cur
while IFS='=' read -r k v; do
[[ -z "${k:-}" || "$k" =~ ^# ]] && continue
cur[$k]="$v"
edone < "$TAGS_FILE"
done < "$TAGS_FILE"
# Fetch latest, but only update keys set to 'auto' or 'latest' unless forced
FORCE=${FORCE:-0}

View File

@ -44,6 +44,7 @@ DEFAULT_MODULES=(
hyprland-protocols
hyprland-qt-support
hyprland-guiutils
hyprwire
hyprland
)
@ -54,6 +55,7 @@ FETCH_LATEST=0
RESTORE=0
VIA_HELPER=0
NO_FETCH=0
USE_SYSTEM_LIBS=1
ONLY_LIST=""
SKIP_LIST=""
SET_ARGS=()
@ -75,6 +77,7 @@ HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
HYPRWIRE_TAG=auto
EOF
fi
}
@ -156,6 +159,7 @@ fetch_latest_tags() {
[HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols"
[HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support"
[HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils"
[HYPRWIRE_TAG]="hyprwm/hyprwire"
)
declare -A tags
@ -208,8 +212,26 @@ fetch_latest_tags() {
run_stack() {
# shellcheck disable=SC1090
source "$TAGS_FILE"
# Export tags so child scripts inherit them
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
# Export all tag keys found in the tags file so child scripts inherit them
while IFS='=' read -r _k _v; do
[[ -z "${_k:-}" || "$_k" =~ ^# ]] && continue
# Only export keys that look like TAG variables or protocol version
if [[ "$_k" == *"_TAG" || "$_k" == "WAYLAND_PROTOCOLS_TAG" ]]; then
export "$_k"
fi
done < "$TAGS_FILE"
# Ensure toolchain paths prefer /usr/local for pkg-config and cmake finds
export PATH="/usr/local/bin:${PATH}"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}"
# Propagate system/bundled selection to hyprland.sh
if [[ $USE_SYSTEM_LIBS -eq 1 ]]; then
export USE_SYSTEM_HYPRLIBS=1
else
export USE_SYSTEM_HYPRLIBS=0
fi
# Optionally install dependencies (not dry-run)
if [[ $WITH_DEPS -eq 1 ]]; then
@ -453,6 +475,14 @@ while [[ $# -gt 0 ]]; do
ONLY_LIST=${2:-}
shift 2
;;
--bundled)
USE_SYSTEM_LIBS=0
shift
;;
--system)
USE_SYSTEM_LIBS=1
shift
;;
--skip)
SKIP_LIST=${2:-}
shift 2
@ -504,7 +534,13 @@ if [[ $VIA_HELPER -eq 1 ]]; then
fi
# shellcheck disable=SC1090
source "$TAGS_FILE"
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
# Export all tag variables dynamically
while IFS='=' read -r _k _v; do
[[ -z "${_k:-}" || "$_k" =~ ^# ]] && continue
if [[ "$_k" == *"_TAG" || "$_k" == "WAYLAND_PROTOCOLS_TAG" ]]; then
export "$_k"
fi
done < "$TAGS_FILE"
helper="$REPO_ROOT/dry-run-build.sh"
if [[ ! -x "$helper" ]]; then
echo "[ERROR] dry-run-build.sh not found or not executable at $helper" | tee -a "$SUMMARY_LOG"