mirror of
https://github.com/JaKooLit/Debian-Hyprland.git
synced 2026-02-05 01:30:13 +01:00
* 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
191 lines
7.6 KiB
Bash
Executable File
191 lines
7.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# 💫 https://github.com/JaKooLit 💫 #
|
|
# Main Hyprland Package#
|
|
|
|
#specific branch or release
|
|
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
|
|
|
|
# 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
|
|
|
|
hyprland=(
|
|
clang
|
|
llvm
|
|
libxcb-errors-dev
|
|
libre2-dev
|
|
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! ##
|
|
# Determine the directory where the script is located
|
|
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" || exit 1
|
|
|
|
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
|
|
# Set the name of the log file to include the current date and time
|
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log"
|
|
MLOG="install-$(date +%d-%H%M%S)_hyprland2.log"
|
|
|
|
# Installation of dependencies
|
|
printf "\n%s - Installing hyprland additional dependencies.... \n" "${NOTE}"
|
|
|
|
for PKG1 in "${hyprland[@]}"; do
|
|
install_package "$PKG1" 2>&1 | tee -a "$LOG"
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
printf "\n%.0s" {1..1}
|
|
|
|
# Installation of dependencies (glaze)
|
|
printf "\n%s - Installing Hyprland additional dependencies (glaze).... \n" "${NOTE}"
|
|
|
|
# Check if /usr/include/glaze exists
|
|
if [ ! -d /usr/include/glaze ]; then
|
|
echo "${INFO} ${YELLOW}Glaze${RESET} is not installed. Installing ${YELLOW}glaze from assets${RESET} ..."
|
|
sudo dpkg -i assets/libglaze-dev_4.4.3-1_all.deb 2>&1 | tee -a "$LOG"
|
|
sudo apt-get install -f -y 2>&1 | tee -a "$LOG"
|
|
echo "${INFO} ${YELLOW}libglaze-dev from assets${RESET} installed."
|
|
fi
|
|
|
|
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
|
|
printf "${NOTE} Removing existing Hyprland folder...\n"
|
|
rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
|
|
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
|
|
patch -p1 <../assets/0001-fix-hyprland-compile-issue.patch
|
|
else
|
|
echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping."
|
|
fi
|
|
fi
|
|
# By default, build Hyprland with bundled hyprutils/hyprlang to avoid version mismatches
|
|
# You can force system libs by exporting USE_SYSTEM_HYPRLIBS=1 before running this script.
|
|
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"
|
|
"-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"
|
|
"-DUSE_SYSTEM_HYPRWIRE=OFF"
|
|
"-DBUILD_HYPRCTL=OFF"
|
|
"-DINSTALL_HYPRCTL=OFF"
|
|
)
|
|
fi
|
|
|
|
# Make sure submodules are present when building bundled deps
|
|
git submodule update --init --recursive || true
|
|
|
|
# Force Clang toolchain to support required language features and flags
|
|
export CC="${CC:-clang}"
|
|
export CXX="${CXX:-clang++}"
|
|
CONFIG_FLAGS=(
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_C_COMPILER="${CC}"
|
|
-DCMAKE_CXX_COMPILER="${CXX}"
|
|
-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[@]}"
|
|
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} ${MAGENTA}Hyprland tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
|
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/
|
|
cd ..
|
|
else
|
|
echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG"
|
|
fi
|
|
|
|
printf "\n%.0s" {1..2}
|