diff --git a/install-scripts/01-hypr-pkgs.sh b/install-scripts/01-hypr-pkgs.sh index c6a4a57..458ee3d 100755 --- a/install-scripts/01-hypr-pkgs.sh +++ b/install-scripts/01-hypr-pkgs.sh @@ -67,10 +67,10 @@ force=( ) # List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly +# NOTE: rofi is no longer removed here because this branch uses the Debian Wayland-capable rofi package by default. uninstall=( dunst mako - rofi cargo ) diff --git a/install-scripts/aquamarine.sh b/install-scripts/aquamarine.sh index 758635b..28388ea 100755 --- a/install-scripts/aquamarine.sh +++ b/install-scripts/aquamarine.sh @@ -31,36 +31,15 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_aquamarine.log" -MLOG="install-$(date +%d-%H%M%S)_aquamarine.log" -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" +# For this branch, prefer Debian packages for aquamarine by default +printf "\n%s - Installing ${YELLOW}aquamarine (Debian package)${RESET} .... \n" "${INFO}" -# Check if aquamarinedirectory exists and remove it -if [ -d "aquamarine" ]; then - rm -rf "aquamarine" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/aquamarine.git; then - cd aquamarine || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - 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} ${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" - fi - else - echo "${NOTE} DRY RUN: Skipping installation of aquamarine $tag." - fi - #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ - cd .. +if [ $DO_INSTALL -eq 1 ]; then + install_package "libaquamarine8" 2>&1 | tee -a "$LOG" + install_package "libaquamarine-dev" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install libaquamarine8 and libaquamarine-dev from APT." fi printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprcursor.sh b/install-scripts/hyprcursor.sh index 7ed926f..5fab8b8 100755 --- a/install-scripts/hyprcursor.sh +++ b/install-scripts/hyprcursor.sh @@ -26,41 +26,16 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprcursor.log" -MLOG="install-$(date +%d-%H%M%S)_hyprcursor.log" -# Installation of dependencies -printf "\n%s - Installing hyprcursor dependencies.... \n" "${NOTE}" +# For this branch, prefer Debian packages for hyprcursor by default +printf "\n%s - Installing hyprcursor (Debian packages).... \n" "${NOTE}" -for PKG1 in "${cursor[@]}"; 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 - -# Check if hyprcursor folder exists and remove it -if [ -d "hyprcursor" ]; then - printf "${NOTE} Removing existing hyprcursor folder...\n" - rm -rf "hyprcursor" -fi - -# Clone and build -printf "${NOTE} Installing hyprcursor...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git; then - cd hyprcursor || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then - printf "${OK} hyprcursor installed successfully.\n" 2>&1 | tee -a "$MLOG" - else - echo -e "${ERROR} Installation failed for hyprcursor." 2>&1 | tee -a "$MLOG" - fi - #moving the addional logs to Install-Logs directory - mv $MLOG ../Install-Logs/ || true - cd .. +if [ $DO_INSTALL -eq 1 ]; then + # runtime and dev package + install_package "libhyprcursor0" 2>&1 | tee -a "$LOG" + install_package "libhyprcursor-dev" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install libhyprcursor0 and libhyprcursor-dev from APT." fi printf "\n%.0s" {1..2} diff --git a/install-scripts/hyprgraphics.sh b/install-scripts/hyprgraphics.sh index b38d016..c7a5f89 100755 --- a/install-scripts/hyprgraphics.sh +++ b/install-scripts/hyprgraphics.sh @@ -34,45 +34,15 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprgraphics.log" -MLOG="install-$(date +%d-%H%M%S)_hyprgraphics2.log" -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprgraphics dependencies${RESET} .... \n" "${INFO}" +# For this branch, prefer Debian packages for hyprgraphics by default +printf "\n%s - Installing ${YELLOW}hyprgraphics (Debian packages)${RESET} .... \n" "${INFO}" -for PKG1 in "${hyprgraphics[@]}"; do - re_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} - -# Check if hyprgraphics directory exists and remove it -if [ -d "hyprgraphics" ]; then - rm -rf "hyprgraphics" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; then - cd hyprgraphics || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build - cmake --build ./build --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` - if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 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" - fi - else - echo "${NOTE} DRY RUN: Skipping installation of hyprgraphics $tag." - fi - #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ - cd .. +if [ $DO_INSTALL -eq 1 ]; then + install_package "libhyprgraphics2" 2>&1 | tee -a "$LOG" + install_package "libhyprgraphics-dev" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install libhyprgraphics2 and libhyprgraphics-dev from APT." fi printf "\n%.0s" {1..2} \ No newline at end of file diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh index c5d0b5f..fe212eb 100755 --- a/install-scripts/hyprland.sh +++ b/install-scripts/hyprland.sh @@ -3,7 +3,8 @@ # Main Hyprland Package# #specific branch or release -tag="v0.52.1" +# Default source tag aligned with Debian sid package (0.51.1) +tag="v0.51.1" # Allow environment override if [ -n "${HYPRLAND_TAG:-}" ]; then tag="$HYPRLAND_TAG"; fi diff --git a/install-scripts/hyprlang.sh b/install-scripts/hyprlang.sh index 05ec20f..f2660c4 100755 --- a/install-scripts/hyprlang.sh +++ b/install-scripts/hyprlang.sh @@ -31,36 +31,15 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlang.log" -MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log" -# Installation of dependencies -printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}" +# For this branch, prefer Debian packages for hyprlang by default +printf "\n%s - Installing ${YELLOW}hyprlang (Debian packages)${RESET} .... \n" "${INFO}" -# Check if hyprlang directory exists and remove it -if [ -d "hyprlang" ]; then - rm -rf "hyprlang" -fi - -# Clone and build -printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then - cd hyprlang || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` - if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install ./build 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" - fi - else - echo "${NOTE} DRY RUN: Skipping installation of hyprlang $tag." - fi - #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ - cd .. +if [ $DO_INSTALL -eq 1 ]; then + install_package "libhyprlang2" 2>&1 | tee -a "$LOG" + install_package "libhyprlang-dev" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install libhyprlang2 and libhyprlang-dev from APT." fi printf "\n%.0s" {1..2} diff --git a/install-scripts/hyprutils.sh b/install-scripts/hyprutils.sh index 40425bc..a6072f8 100755 --- a/install-scripts/hyprutils.sh +++ b/install-scripts/hyprutils.sh @@ -30,34 +30,15 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprutils.log" -MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log" -# Clone, build, and install using Cmake -printf "${NOTE} Cloning hyprutils...\n" +# For this branch, prefer Debian packages for hyprutils by default +printf "${NOTE} Installing hyprutils (Debian packages)...\n" -# Check if hyprutils folder exists and remove it -if [ -d "hyprutils" ]; then - printf "${NOTE} Removing existing hyprutils folder...\n" - rm -rf "hyprutils" 2>&1 | tee -a "$LOG" -fi - -if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then - cd "hyprutils" || exit 1 - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` - if [ $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" - else - echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG" - fi - else - echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag." - fi - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ - cd .. +if [ $DO_INSTALL -eq 1 ]; then + install_package "libhyprutils9" 2>&1 | tee -a "$LOG" + install_package "libhyprutils-dev" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install libhyprutils9 and libhyprutils-dev from APT." fi printf "\n%.0s" {1..2} diff --git a/install-scripts/hyprwayland-scanner.sh b/install-scripts/hyprwayland-scanner.sh index c95b1f1..ca3b43a 100755 --- a/install-scripts/hyprwayland-scanner.sh +++ b/install-scripts/hyprwayland-scanner.sh @@ -34,48 +34,14 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprwayland-scanner.log" -MLOG="install-$(date +%d-%H%M%S)_hyprwayland-scanner2.log" -## -# Installation of dependencies -printf "\n%s - Installing hyprwayland-scanner dependencies.... \n" "${NOTE}" +## For this branch, prefer Debian package for hyprwayland-scanner +printf "\n%s - Installing hyprwayland-scanner (Debian package).... \n" "${NOTE}" -for PKG1 in "${scan_depend[@]}"; 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 "${NOTE} Installing hyprwayland-scanner...\n" - -# Check if hyprwayland-scanner folder exists and remove it -if [ -d "hyprwayland-scanner" ]; then - printf "${NOTE} Removing existing hyprwayland-scanner folder...\n" - rm -rf "hyprwayland-scanner" -fi - -# Clone and build hyprlang -printf "${NOTE} Installing hyprwayland-scanner...\n" -if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git; then - cd hyprwayland-scanner || exit 1 - cmake -DCMAKE_INSTALL_PREFIX=/usr -B build - cmake --build build -j `nproc` - if [ $DO_INSTALL -eq 1 ]; then - if sudo cmake --install build 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" - fi - else - echo "${NOTE} DRY RUN: Skipping installation of hyprwayland-scanner $tag." - fi - #moving the addional logs to Install-Logs directory - [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ - cd .. +if [ $DO_INSTALL -eq 1 ]; then + install_package "hyprwayland-scanner" 2>&1 | tee -a "$LOG" else - echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG" + echo "${NOTE} DRY RUN: Would install hyprwayland-scanner from APT." fi printf "\n%.0s" {1..2} diff --git a/install-scripts/rofi-wayland.sh b/install-scripts/rofi-wayland.sh index 0526b40..d6b674c 100755 --- a/install-scripts/rofi-wayland.sh +++ b/install-scripts/rofi-wayland.sh @@ -55,51 +55,16 @@ fi # Set the name of the log file to include the current date and time LOG="Install-Logs/install-$(date +%d-%H%M%S)_rofi_wayland.log" -MLOG="install-$(date +%d-%H%M%S)_rofi_wayland2.log" -# Installation of main components -printf "\n%s - Re-installing ${SKY_BLUE}rofi-wayland dependencies${RESET}.... \n" "${INFO}" +# For this branch, prefer Debian rofi (with Wayland support) instead of building rofi-wayland +printf "\n%s - Installing ${SKY_BLUE}rofi (Debian package, Wayland-capable)${RESET}.... \n" "${INFO}" - for FORCE in "${rofi[@]}"; do - re_install_package "$FORCE" "$LOG" - done - -printf "\n%.0s" {1..2} -# Clone and build rofi - wayland -printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n" - -# Check if rofi directory exists -if [ -d "rofi-$rofi_tag" ]; then - rm -rf "rofi-$rofi_tag" -fi - -# cloning rofi-wayland -printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n" -wget $release_url - -if [ -f "rofi-$rofi_tag.tar.gz" ]; then - printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG" - tar xf rofi-$rofi_tag.tar.gz -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 - 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" - fi +if [ $DO_INSTALL -eq 1 ]; then + install_package "rofi" 2>&1 | tee -a "$LOG" + # Optional: headers for themes or building scripts + install_package "rofi-dev" 2>&1 | tee -a "$LOG" || true else - echo -e "${ERROR} Meson setup or ninja build failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG" + echo "${NOTE} DRY RUN: Would install rofi and rofi-dev from APT (Wayland-capable rofi 2.0.0)." fi -# Move logs to Install-Logs directory -mv "$MLOG" ../Install-Logs/ || true -cd .. || exit 1 - -# clean up -rm -rf rofi-$rofi_tag.tar.gz - printf "\n%.0s" {1..2} diff --git a/install.sh b/install.sh index 561ec92..f5ed1e0 100755 --- a/install.sh +++ b/install.sh @@ -101,6 +101,118 @@ if is_ubuntu; then exit 1 fi +# Ensure sid repo and pinning are configured for Hyprland-related packages +ensure_sid_repo_and_pinning() { + # Add sid source if not present + if [ ! -f /etc/apt/sources.list.d/sid.list ]; then + echo "${NOTE} Adding Debian sid repository (low priority by default)" | tee -a "$LOG" + echo "deb http://deb.debian.org/debian sid main contrib non-free non-free-firmware" | sudo tee /etc/apt/sources.list.d/sid.list >/dev/null + fi + + # Global low priority for sid + if [ ! -f /etc/apt/preferences.d/99-sid-low.pref ]; then + echo "${NOTE} Creating global low-priority pin for sid (Pin-Priority: 50)" | tee -a "$LOG" + sudo tee /etc/apt/preferences.d/99-sid-low.pref >/dev/null <<'EOF' +Package: * +Pin: release a=sid +Pin-Priority: 50 +EOF + fi + + # Prefer sid/testing for specific Hyprland-related libraries and tools + if [ ! -f /etc/apt/preferences.d/90-hyprland-sid.pref ]; then + echo "${NOTE} Creating Hyprland-specific pinning for sid/testing libs" | tee -a "$LOG" + sudo tee /etc/apt/preferences.d/90-hyprland-sid.pref >/dev/null <<'EOF' +Package: wlroots +Pin: release a=sid +Pin-Priority: 990 + +Package: libwlroots-* +Pin: release a=sid +Pin-Priority: 990 + +Package: wayland-protocols +Pin: release a=sid +Pin-Priority: 990 + +Package: xwayland +Pin: release a=sid +Pin-Priority: 990 + +Package: libdisplay-info* +Pin: release a=sid +Pin-Priority: 990 + +Package: libgulkan* +Pin: release a=sid +Pin-Priority: 990 + +Package: vulkan-utility-libraries-dev +Pin: release a=sid +Pin-Priority: 990 + +Package: vulkan-validationlayers +Pin: release a=sid +Pin-Priority: 990 + +Package: libre2-* +Pin: release a=sid +Pin-Priority: 990 + +Package: libudis86* +Pin: release a=sid +Pin-Priority: 990 + +Package: libxcb-errors* +Pin: release a=sid +Pin-Priority: 990 + +Package: libtomlplusplus* +Pin: release a=sid +Pin-Priority: 990 + +Package: libhyprcursor* +Pin: release a=sid +Pin-Priority: 990 + +Package: libhyprlang* +Pin: release a=sid +Pin-Priority: 990 + +Package: libhyprgraphics* +Pin: release a=sid +Pin-Priority: 990 + +Package: libhyprutils* +Pin: release a=sid +Pin-Priority: 990 + +Package: hyprwayland-scanner +Pin: release a=sid +Pin-Priority: 990 + +Package: hyprland +Pin: release a=sid +Pin-Priority: 990 + +Package: hyprland-dev +Pin: release a=sid +Pin-Priority: 990 + +Package: hyprland-backgrounds +Pin: release a=sid +Pin-Priority: 990 + +Package: qml6-module-org-hyprland-style +Pin: release a=sid +Pin-Priority: 990 +EOF + fi + + echo "${NOTE} Updating APT package lists (including sid metadata)" | tee -a "$LOG" + sudo apt update | tee -a "$LOG" +} + # install whiptails if detected not installed. Necessary for this version if ! command -v whiptail >/dev/null; then echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" @@ -108,6 +220,9 @@ if ! command -v whiptail >/dev/null; then printf "\n%.0s" {1..1} fi +# Ensure sid repo/pinning before we start pulling Hyprland ecosystem packages +ensure_sid_repo_and_pinning + printf "\n%.0s" {1..2} echo -e "\e[35m ╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐ @@ -147,6 +262,27 @@ fi # Path to the install-scripts directory script_directory=install-scripts +# Install core Hyprland stack from Debian packages by default (Hyprland 0.51.1 and ecosystem) +install_debian_hyprland_stack() { + echo "${NOTE} Installing Debian Hyprland stack (0.51.1+ds-1 and related tools) ..." | tee -a "$LOG" + sudo apt install -y \ + hyprland/sid \ + hyprland-dev/sid \ + hyprland-backgrounds/sid \ + qml6-module-org-hyprland-style/sid \ + hypridle \ + hyprlock \ + hyprpaper \ + hyprpicker \ + hyprland-protocols \ + xdg-desktop-portal-hyprland \ + rofi \ + rofi-dev || { + echo "${ERROR} Failed to install Debian Hyprland stack. Please check your APT configuration." | tee -a "$LOG" + exit 1 + } +} + # Function to execute a script if it exists and make it executable execute_script() { local script="$1" @@ -163,6 +299,9 @@ execute_script() { fi } +# Immediately install the Debian Hyprland stack; source builds remain available via individual scripts if needed +install_debian_hyprland_stack + # Load centralized Hyprland stack tags if present and export for child scripts if [ -f "./hypr-tags.env" ]; then # shellcheck disable=SC1091