Compare commits

..

5 Commits

Author SHA1 Message Date
Don Williams
ade0c43bba Fixed: Final check looking in /usr/local/bin
On branch hl-521
 Your branch is up to date with 'origin/hl-521'.

 Changes to be committed:
	modified:   install-scripts/03-Final-Check.sh
2025-11-13 21:07:05 -05:00
Don Williams
bb51fccf66 Set install from pkgs as default
Source builds need to HYPRLAND_FROM_SOURCE=1 set

 On branch hl-521
 Your branch is up to date with 'origin/hl-521'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
    modified:   install.sh
2025-11-13 19:48:18 -05:00
Don Williams
f7c6e80d16 [Fix] Hyprland install started b4 whiptail
On branch hl-521
 Your branch is up to date with 'origin/hl-521'.

 Changes to be committed:
	modified:   install.sh
2025-11-13 18:16:57 -05:00
Don Williams
75c0d1a80b Building qtutils from src not in repo
On branch hl-521
 Your branch is up to date with 'origin/hl-521'.

 Changes to be committed:
	new file:   install-scripts/hyprland-qtutils.sh
	modified:   install.sh
2025-11-13 17:33:39 -05:00
Don Williams
11f5208a0e • Switch Hyprland ecosystem scripts to use Debian packages instead of source builds.
•  Reset Hyprland source tag default to v0.51.1.
•  Add sid repo and fine-grained pinning for Hyprland-related libs and tools.
•  Install Debian Hyprland (0.51.1+ds-1), ecosystem tools, rofi, and qml6-module-org-hyprland-style by default in install.sh.
•  Ensure auto-install.sh remains seamless by simply calling the updated install.sh.

 On branch hl-521
 Your branch is up to date with 'origin/hl-521'.

 Changes to be committed:
	modified:   install-scripts/01-hypr-pkgs.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
	modified:   install-scripts/hyprwayland-scanner.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install.sh
2025-11-13 17:22:36 -05:00
12 changed files with 309 additions and 239 deletions

View File

@ -67,10 +67,10 @@ force=(
) )
# List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly # 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=( uninstall=(
dunst dunst
mako mako
rofi
cargo cargo
) )

View File

@ -13,7 +13,7 @@ packages=(
kitty kitty
) )
# Local packages that should be in /usr/local/bin/ # Local packages that should be available in PATH (previously assumed in /usr/local/bin)
local_pkgs_installed=( local_pkgs_installed=(
hyprland hyprland
rofi rofi
@ -61,9 +61,9 @@ for pkg in "${packages[@]}"; do
fi fi
done done
# Check for local packages # Check for local packages in PATH (hyprland, rofi, etc.)
for pkg1 in "${local_pkgs_installed[@]}"; do for pkg1 in "${local_pkgs_installed[@]}"; do
if ! [ -f "/usr/local/bin/$pkg1" ]; then if ! command -v "$pkg1" >/dev/null 2>&1; then
local_missing+=("$pkg1") local_missing+=("$pkg1")
fi fi
done done
@ -88,9 +88,9 @@ else
fi fi
if [ ${#local_missing[@]} -ne 0 ]; then if [ ${#local_missing[@]} -ne 0 ]; then
echo "${WARN} The following local packages are missing from /usr/local/bin/ and will be logged:" echo "${WARN} The following local packages are missing from PATH and will be logged:"
for pkg1 in "${local_missing[@]}"; do for pkg1 in "${local_missing[@]}"; do
echo "$pkg1 is not installed. can't find it in /usr/local/bin/" echo "$pkg1 is not installed. can't find it in PATH"
echo "$pkg1" >> "$LOG" # Log the missing local package to the file echo "$pkg1" >> "$LOG" # Log the missing local package to the file
done done
fi fi

View File

@ -31,36 +31,15 @@ fi
# Set the name of the log file to include the current date and time # 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" LOG="Install-Logs/install-$(date +%d-%H%M%S)_aquamarine.log"
MLOG="install-$(date +%d-%H%M%S)_aquamarine.log"
# Installation of dependencies # For this branch, prefer Debian packages for aquamarine by default
printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}aquamarine (Debian package)${RESET} .... \n" "${INFO}"
# Check if aquamarinedirectory exists and remove it if [ $DO_INSTALL -eq 1 ]; then
if [ -d "aquamarine" ]; then install_package "libaquamarine8" 2>&1 | tee -a "$LOG"
rm -rf "aquamarine" install_package "libaquamarine-dev" 2>&1 | tee -a "$LOG"
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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -26,41 +26,16 @@ fi
# Set the name of the log file to include the current date and time # 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" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprcursor.log"
MLOG="install-$(date +%d-%H%M%S)_hyprcursor.log"
# Installation of dependencies # For this branch, prefer Debian packages for hyprcursor by default
printf "\n%s - Installing hyprcursor dependencies.... \n" "${NOTE}" printf "\n%s - Installing hyprcursor (Debian packages).... \n" "${NOTE}"
for PKG1 in "${cursor[@]}"; do if [ $DO_INSTALL -eq 1 ]; then
install_package "$PKG1" 2>&1 | tee -a "$LOG" # runtime and dev package
if [ $? -ne 0 ]; then install_package "libhyprcursor0" 2>&1 | tee -a "$LOG"
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs" install_package "libhyprcursor-dev" 2>&1 | tee -a "$LOG"
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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -34,45 +34,15 @@ fi
# Set the name of the log file to include the current date and time # 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" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprgraphics.log"
MLOG="install-$(date +%d-%H%M%S)_hyprgraphics2.log"
# Installation of dependencies # For this branch, prefer Debian packages for hyprgraphics by default
printf "\n%s - Installing ${YELLOW}hyprgraphics dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}hyprgraphics (Debian packages)${RESET} .... \n" "${INFO}"
for PKG1 in "${hyprgraphics[@]}"; do if [ $DO_INSTALL -eq 1 ]; then
re_install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "libhyprgraphics2" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then install_package "libhyprgraphics-dev" 2>&1 | tee -a "$LOG"
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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -0,0 +1,91 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprland-qtutils #
qtutils_dep=(
qt6-base-dev
qt6-base-private-dev
qt6-declarative-dev
qt6-wayland-dev
qt6-wayland-private-dev
qt6-tools-dev
qt6-tools-dev-tools
qml6-module-qtcore
qml6-module-qtquick
qml6-module-qtquick-controls
qml6-module-qtquick-dialogs
qml6-module-qtquick-layouts
qml6-module-qtquick-window
)
# specific branch or release (default to main for latest utils)
tag="main"
# Allow environment override
if [ -n "${HYPRLAND_QTUTILS_TAG:-}" ]; then tag="$HYPRLAND_QTUTILS_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)_hyprland-qtutils.log"
MLOG="install-$(date +%d-%H%M%S)_hyprland-qtutils2.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprland-qtutils dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${qtutils_dep[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Check if hyprland-qtutils directory exists and remove it
if [ -d "hyprland-qtutils" ]; then
rm -rf "hyprland-qtutils"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-qtutils $tag${RESET} ...\n"
if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprland-qtutils.git; then
cd hyprland-qtutils || 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}hyprland-qtutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qtutils $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprland-qtutils $tag."
fi
#moving the additional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qtutils $tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -3,7 +3,8 @@
# Main Hyprland Package# # Main Hyprland Package#
#specific branch or release #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 # Allow environment override
if [ -n "${HYPRLAND_TAG:-}" ]; then tag="$HYPRLAND_TAG"; fi if [ -n "${HYPRLAND_TAG:-}" ]; then tag="$HYPRLAND_TAG"; fi
@ -14,6 +15,10 @@ if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]
echo "${NOTE} DRY RUN: install step will be skipped." echo "${NOTE} DRY RUN: install step will be skipped."
fi fi
# By default, install Hyprland from Debian packages.
# Set HYPRLAND_FROM_SOURCE=1 if you explicitly want to build from source.
HYPRLAND_FROM_SOURCE=${HYPRLAND_FROM_SOURCE:-0}
hyprland=( hyprland=(
clang clang
llvm llvm
@ -42,8 +47,25 @@ fi
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log"
MLOG="install-$(date +%d-%H%M%S)_hyprland2.log" MLOG="install-$(date +%d-%H%M%S)_hyprland2.log"
# Installation of dependencies # If not explicitly told to build from source, install Hyprland from Debian packages
printf "\n%s - Installing hyprland additional dependencies.... \n" "${NOTE}" if [ "$HYPRLAND_FROM_SOURCE" != "1" ]; then
printf "\n%s - Installing ${YELLOW}Hyprland from Debian packages${RESET} .... \n" "${NOTE}"
if [ $DO_INSTALL -eq 1 ]; then
# Core Hyprland packages; pinning (if configured) will select sid/testing as needed
install_package "hyprland" 2>&1 | tee -a "$LOG"
install_package "hyprland-dev" 2>&1 | tee -a "$LOG" || true
install_package "hyprland-backgrounds" 2>&1 | tee -a "$LOG" || true
else
echo "${NOTE} DRY RUN: Would install hyprland, hyprland-dev and hyprland-backgrounds from APT."
fi
printf "\n%.0s" {1..2}
exit 0
fi
# Installation of dependencies for source builds
printf "\n%s - Installing hyprland additional dependencies (source build).... \n" "${NOTE}"
for PKG1 in "${hyprland[@]}"; do for PKG1 in "${hyprland[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "$PKG1" 2>&1 | tee -a "$LOG"

View File

@ -31,36 +31,15 @@ fi
# Set the name of the log file to include the current date and time # 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" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlang.log"
MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log"
# Installation of dependencies # For this branch, prefer Debian packages for hyprlang by default
printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}hyprlang (Debian packages)${RESET} .... \n" "${INFO}"
# Check if hyprlang directory exists and remove it if [ $DO_INSTALL -eq 1 ]; then
if [ -d "hyprlang" ]; then install_package "libhyprlang2" 2>&1 | tee -a "$LOG"
rm -rf "hyprlang" install_package "libhyprlang-dev" 2>&1 | tee -a "$LOG"
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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -30,34 +30,15 @@ fi
# Set the name of the log file to include the current date and time # 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" 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 # For this branch, prefer Debian packages for hyprutils by default
printf "${NOTE} Cloning hyprutils...\n" printf "${NOTE} Installing hyprutils (Debian packages)...\n"
# Check if hyprutils folder exists and remove it if [ $DO_INSTALL -eq 1 ]; then
if [ -d "hyprutils" ]; then install_package "libhyprutils9" 2>&1 | tee -a "$LOG"
printf "${NOTE} Removing existing hyprutils folder...\n" install_package "libhyprutils-dev" 2>&1 | tee -a "$LOG"
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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -34,48 +34,14 @@ fi
# Set the name of the log file to include the current date and time # 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" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprwayland-scanner.log"
MLOG="install-$(date +%d-%H%M%S)_hyprwayland-scanner2.log"
## ## For this branch, prefer Debian package for hyprwayland-scanner
# Installation of dependencies printf "\n%s - Installing hyprwayland-scanner (Debian package).... \n" "${NOTE}"
printf "\n%s - Installing hyprwayland-scanner dependencies.... \n" "${NOTE}"
for PKG1 in "${scan_depend[@]}"; do if [ $DO_INSTALL -eq 1 ]; then
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "hyprwayland-scanner" 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 ..
else 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 fi
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -55,51 +55,16 @@ fi
# Set the name of the log file to include the current date and time # 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" 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 # For this branch, prefer Debian rofi (with Wayland support) instead of building rofi-wayland
printf "\n%s - Re-installing ${SKY_BLUE}rofi-wayland dependencies${RESET}.... \n" "${INFO}" printf "\n%s - Installing ${SKY_BLUE}rofi (Debian package, Wayland-capable)${RESET}.... \n" "${INFO}"
for FORCE in "${rofi[@]}"; do if [ $DO_INSTALL -eq 1 ]; then
re_install_package "$FORCE" "$LOG" install_package "rofi" 2>&1 | tee -a "$LOG"
done # Optional: headers for themes or building scripts
install_package "rofi-dev" 2>&1 | tee -a "$LOG" || true
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
else 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 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} printf "\n%.0s" {1..2}

View File

@ -101,6 +101,118 @@ if is_ubuntu; then
exit 1 exit 1
fi 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 # install whiptails if detected not installed. Necessary for this version
if ! command -v whiptail >/dev/null; then if ! command -v whiptail >/dev/null; then
echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" 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} printf "\n%.0s" {1..1}
fi fi
# Ensure sid repo/pinning before we start pulling Hyprland ecosystem packages
ensure_sid_repo_and_pinning
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}
echo -e "\e[35m echo -e "\e[35m
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐ ╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
@ -147,6 +262,27 @@ fi
# Path to the install-scripts directory # Path to the install-scripts directory
script_directory=install-scripts 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 # Function to execute a script if it exists and make it executable
execute_script() { execute_script() {
local script="$1" local script="$1"
@ -375,6 +511,9 @@ echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
sleep 1 sleep 1
execute_script "fonts.sh" execute_script "fonts.sh"
# Install core Debian Hyprland stack (0.51.1+ds-1 and ecosystem) before running Hyprland-specific scripts
install_debian_hyprland_stack
# Optional: refresh tags before building the Hyprland stack # Optional: refresh tags before building the Hyprland stack
# Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags) # Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags)
if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then
@ -403,6 +542,8 @@ execute_script "aquamarine.sh"
sleep 1 sleep 1
execute_script "hyprland-qt-support.sh" execute_script "hyprland-qt-support.sh"
sleep 1 sleep 1
execute_script "hyprland-qtutils.sh"
sleep 1
execute_script "hyprland-guiutils.sh" execute_script "hyprland-guiutils.sh"
sleep 1 sleep 1
execute_script "hyprland-protocols.sh" execute_script "hyprland-protocols.sh"
@ -526,8 +667,9 @@ execute_script "03-Final-Check.sh"
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if either hyprland or Hyprland files exist in /usr/local/bin/ # Check if Hyprland is available in PATH or in standard system locations
if [ -e /usr/local/bin/hyprland ] || [ -f /usr/local/bin/Hyprland ]; then if command -v Hyprland >/dev/null 2>&1 || command -v hyprland >/dev/null 2>&1 || \
[ -x /usr/bin/Hyprland ] || [ -x /usr/bin/hyprland ]; then
printf "\n ${OK} 👌 Hyprland is installed. However, some essential packages may not be installed. Please see above!" printf "\n ${OK} 👌 Hyprland is installed. However, some essential packages may not be installed. Please see above!"
printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n" printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n"
sleep 2 sleep 2