Compare commits

..

No commits in common. "main" and "Debian-Hyprland-v2.9.6" have entirely different histories.

37 changed files with 382 additions and 626 deletions

View File

@ -1,30 +1,5 @@
## CHANGELOG ## CHANGELOG
## 27 January 2026
### Fixed build issue with Debian stable (trixie)
- All references to `Nix::`, `Nix.hpp`, `Nix.cpp`, `--no-nixgl`, and `nixGL` in the built Hyprland sources are removed via assets/0002-start-hyprland-no-nixgl.patch.
- The patch:
- Drops the Nix include and logic from `start/src/core/Instance.cpp`, `start/src/core/State.hpp`, and `start/src/main.cpp`.
- Removes the `--no-nixgl` flag and the Nix environment checks.
- Now `start-hyprland` starts `Hyprland` directly, with no `nixGL` wrapper or Nix environment inspection.
## 24 January 2026
- Updated Hyprland version to v0.53.3
- Fixes `hyprpm` issues
- All other packages remain at the same version
## 23 January 2026
- New layout for building Hyprland Source
- The `build` directory will hold the source and compiler output
- Now you can just remove the build directory after install
- Updated the default Hyprland version to `v0.53.2`
- Updated the documentation on the new directory layout
- Fixed issue of Fastfetch reading old hyprland version file
## 21 January 2026 ## 21 January 2026
### Important Note for Debian `Trixie` users. ### Important Note for Debian `Trixie` users.
@ -44,7 +19,7 @@
## 02 January 2026 ## 02 January 2026
### > Note: Support for Hyprland v0.53.2 is now available for Debian Stable (Trixie) ### > Note: Support for Hyprland v0.53.1 is now available for Debian Stable (Trixie)
### > At this time it should be considered BETA, not for production use ### > At this time it should be considered BETA, not for production use
@ -53,7 +28,7 @@
### > Only Intel, AMD, and in VMs ### > Only Intel, AMD, and in VMs
- Updated: - Updated:
- Default Hyprland stack versions now target 0.53.2 (see `hypr-tags.env`) - Default Hyprland stack versions now target 0.53.1 (see `hypr-tags.env`)
- Added trixie compatibility mode flags: - Added trixie compatibility mode flags:
- `--build-trixie` / `--no-trixie` (auto-detected on Debian 13) - `--build-trixie` / `--no-trixie` (auto-detected on Debian 13)
- Added `--force-update` to refresh pinned package versions - Added `--force-update` to refresh pinned package versions

View File

@ -128,7 +128,7 @@ Archivo con etiquetas de versión para todos los componentes de Hyprland:
```bash ```bash
# Versiones actuales (ejemplo) # Versiones actuales (ejemplo)
HYPRLAND_TAG=v0.53.2 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8 HYPRLANG_TAG=v0.6.8
@ -327,20 +327,6 @@ Notas:
- **Sin cambios en el sistema**: No instala archivos en /usr/local o /usr - **Sin cambios en el sistema**: No instala archivos en /usr/local o /usr
## Gestión de Logs ## Gestión de Logs
## Artefactos de Build y Limpieza
Todas las fuentes descargadas y salidas de compilación ahora viven en `~/Debian-Hyprland/build/`:
- **Fuentes:** `build/src/<proyecto>`
- **Salida de build:** `build/<proyecto>`
Esto mantiene el repositorio limpio. Para eliminar todos los artefactos de compilación:
```bash
rm -rf ~/Debian-Hyprland/build
```
Nota: Esto solo elimina artefactos de compilación y fuentes descargadas; no desinstala nada del sistema.
### Ubicación de Logs ### Ubicación de Logs

View File

@ -128,7 +128,7 @@ This file contains version tags for all Hyprland components:
```bash ```bash
# Current versions (example) # Current versions (example)
HYPRLAND_TAG=v0.53.2 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8 HYPRLANG_TAG=v0.6.8
@ -327,20 +327,6 @@ Notes:
- **No system changes**: No files installed to /usr/local or /usr - **No system changes**: No files installed to /usr/local or /usr
## Log Management ## Log Management
## Build Artifacts & Cleanup
All source clones and build outputs now live under `~/Debian-Hyprland/build/`:
- **Sources:** `build/src/<project>`
- **Build output:** `build/<project>`
This keeps the repo root clean. To remove all build artifacts:
```bash
rm -rf ~/Debian-Hyprland/build
```
Note: This only removes build artifacts and downloaded sources; it does not uninstall anything from your system.
### Log Location ### Log Location

View File

@ -102,14 +102,14 @@ sudo nano /etc/apt/sources.list
[Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md) [Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md)
- 10 January 2026 Update! - 10 January 2026 Update!
- Debian now builds Hyprland v0.53.2! - Debian now builds Hyprland v0.53.1!
- This requires the just released `Debian-Hyprland v2.9.4` installer - This requires the just released `Debian-Hyprland v2.9.4` installer
- Debian 13 (`Trixie`, aka `Stable`) - Debian 13 (`Trixie`, aka `Stable`)
- While it does now support v0.53.2 - While it does now support v0.53.1
- At this time it should not be used for production - At this time it should not be used for production
- Testing is on going but NVIDIA GPUs have not been tested - Testing is on going but NVIDIA GPUs have not been tested
- Intel, AMD, and in VMs only so far - Intel, AMD, and in VMs only so far
- Debian Testing (`Forky`) and Unstable (`SID`) - Build and run Hyprland v0.53.2 without issue - Debian Testing (`Forky`) and Unstable (`SID`) - Build and run Hyprland v0.53.1 without issue
- 10 October 2025 Update! - 10 October 2025 Update!
- Hyprland-Debian nows builds 0.51.1 from source! - Hyprland-Debian nows builds 0.51.1 from source!

View File

@ -1,91 +0,0 @@
diff --git a/start/src/core/Instance.cpp b/start/src/core/Instance.cpp
index 2f5007b..8c6c73c 100644
--- a/start/src/core/Instance.cpp
+++ b/start/src/core/Instance.cpp
@@ -1,8 +1,6 @@
#include "Instance.hpp"
#include "State.hpp"
#include "../helpers/Logger.hpp"
-#include "../helpers/Nix.hpp"
-
#include <cstdlib>
#include <cstring>
#include <sys/poll.h>
@@ -54,13 +52,7 @@ void CHyprlandInstance::runHyprlandThread(bool safeMode) {
int sig = SIGKILL;
procctl(P_PID, getpid(), PROC_PDEATHSIG_CTL, &sig);
#endif
-
- if (Nix::shouldUseNixGL()) {
- argsStd.insert(argsStd.begin(), g_state->customPath.value_or("Hyprland"));
- args.insert(args.begin(), strdup(argsStd.front().c_str()));
- execvp("nixGL", args.data());
- } else
- execvp(g_state->customPath.value_or("Hyprland").c_str(), args.data());
+ execvp(g_state->customPath.value_or("Hyprland").c_str(), args.data());
g_logger->log(Hyprutils::CLI::LOG_ERR, "fork(): execvp failed: {}", strerror(errno));
std::fflush(stdout);
diff --git a/start/src/core/State.hpp b/start/src/core/State.hpp
index d00a175..6cf73a9 100644
--- a/start/src/core/State.hpp
+++ b/start/src/core/State.hpp
@@ -8,7 +8,6 @@
struct SState {
std::span<const char*> rawArgvNoBinPath;
std::optional<std::string> customPath;
- bool noNixGl = false;
};
inline UP<SState> g_state = makeUnique<SState>();
\ No newline at end of file
diff --git a/start/src/main.cpp b/start/src/main.cpp
index e73fcfa..30e68f0 100644
--- a/start/src/main.cpp
+++ b/start/src/main.cpp
@@ -3,7 +3,6 @@
#include <print>
#include "helpers/Logger.hpp"
-#include "helpers/Nix.hpp"
#include "core/State.hpp"
#include "core/Instance.hpp"
@@ -21,7 +20,6 @@ Any arguments after -- are passed to Hyprland. For Hyprland help, run start-hypr
Additional arguments for start-hyprland:
--path [path] -> Override Hyprland path
- --no-nixgl -> Force disable nixGL
)#";
//
@@ -74,28 +72,13 @@ int main(int argc, const char** argv, const char** envp) {
g_state->customPath = argv[++i];
continue;
- }
- if (arg == "--no-nixgl") {
- g_state->noNixGl = true;
- continue;
- }
- }
+ } }
if (startArgv != -1)
g_state->rawArgvNoBinPath = std::span<const char*>{argv + startArgv, argc - startArgv};
if (!g_state->rawArgvNoBinPath.empty())
g_logger->log(Hyprutils::CLI::LOG_WARN, "Arguments after -- are passed to Hyprland");
-
- // check if our environment is OK
- if (const auto RET = Nix::nixEnvironmentOk(); !RET) {
- g_logger->log(Hyprutils::CLI::LOG_ERR, "Nix environment check failed:\n{}", RET.error());
- return 1;
- }
-
- if (Nix::shouldUseNixGL())
- g_logger->log(Hyprutils::CLI::LOG_DEBUG, "Hyprland was compiled with Nix - will use nixGL");
-
bool safeMode = false;
while (true) {
g_instance = makeUnique<CHyprlandInstance>();

View File

@ -1,13 +1,18 @@
# 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 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.5.0 HYPRGRAPHICS_TAG=v0.5.0
HYPRLAND_GUIUTILS_TAG=v0.2.1 HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.7.0 HYPRLAND_PROTOCOLS_TAG=v0.7.0
HYPRLAND_QT_SUPPORT_TAG=v0.1.0 HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.5 HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRLAND_TAG=v0.53.3 HYPRLAND_GUIUTILS_TAG=v0.2.0
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 HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46 WAYLAND_PROTOCOLS_TAG=1.46

View File

@ -25,12 +25,6 @@ if [ ! -d Install-Logs ]; then
mkdir Install-Logs mkdir Install-Logs
fi fi
# Shared build output root (override with BUILD_ROOT env)
BUILD_ROOT="${BUILD_ROOT:-$PWD/build}"
mkdir -p "$BUILD_ROOT"
SRC_ROOT="${SRC_ROOT:-$BUILD_ROOT/src}"
mkdir -p "$SRC_ROOT"
# Show progress function # Show progress function
show_progress() { show_progress() {
local pid=$1 local pid=$1

View File

@ -95,9 +95,8 @@ sudo npm install --global typescript 2>&1 | tee -a "$LOG"
# ags v1 # ags v1
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n" printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
# Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0") under build/src # Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0")
for OLD in "ags" "ags_v1.9.0"; do for SRC_DIR in "ags" "ags_v1.9.0"; do
SRC_DIR="$SRC_ROOT/$OLD"
if [ -d "$SRC_DIR" ]; then if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing %s directory...\\n" "$SRC_DIR" printf "${NOTE} Removing existing %s directory...\\n" "$SRC_DIR"
rm -rf "$SRC_DIR" rm -rf "$SRC_DIR"
@ -108,14 +107,11 @@ printf "\n%.0s" {1..1}
printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n" printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n"
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Clone repository with the specified tag and capture git output into MLOG # Clone repository with the specified tag and capture git output into MLOG
SRC_DIR="$SRC_ROOT/ags_v1.9.0" if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then
if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git "$SRC_DIR"; then cd ags_v1.9.0 || exit 1
cd "$SRC_DIR" || exit 1
BUILD_DIR="$BUILD_ROOT/ags_v1.9.0"
mkdir -p "$BUILD_DIR"
npm install npm install
meson setup "$BUILD_DIR" meson setup build
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then if sudo meson install -C build 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" 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 # Patch installed AGS launchers to ensure GI typelibs in /usr/local/lib are discoverable in GJS ESM
@ -207,11 +203,11 @@ WRAP
echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG" echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG"
fi fi
# Move logs to Install-Logs directory # Move logs to Install-Logs directory
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true mv "$MLOG" ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG" echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG"
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true mv "$MLOG" ../Install-Logs/ || true
exit 1 exit 1
fi fi

View File

@ -41,22 +41,19 @@ MLOG="install-$(date +%d-%H%M%S)_aquamarine.log"
# Installation of dependencies # Installation of dependencies
printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}"
# Check if aquamarinedirectory exists and remove it (under build/src) # Check if aquamarinedirectory exists and remove it
SRC_DIR="$SRC_ROOT/aquamarine" if [ -d "aquamarine" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "aquamarine"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n"
if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git "$SRC_DIR"; then if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git; then
cd "$SRC_DIR" || exit 1 cd aquamarine || exit 1
BUILD_DIR="$BUILD_ROOT/aquamarine" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
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 [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; 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" printf "${OK} ${MAGENTA}aquamarine $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -65,7 +62,7 @@ if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git "$SR
echo "${NOTE} DRY RUN: Skipping installation of aquamarine $tag." echo "${NOTE} DRY RUN: Skipping installation of aquamarine $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -24,16 +24,15 @@ fi
# Check if Hyprland-Dots exists # Check if Hyprland-Dots exists
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n" printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n"
# Check if Hyprland-Dots exists (under build/src) # Check if Hyprland-Dots exists
SRC_DIR="$SRC_ROOT/Hyprland-Dots-Debian" if [ -d Hyprland-Dots-Debian ]; then
if [ -d "$SRC_DIR" ]; then cd Hyprland-Dots-Debian
cd "$SRC_DIR"
git stash && git pull git stash && git pull
chmod +x copy.sh chmod +x copy.sh
./copy.sh ./copy.sh
else else
if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots "$SRC_DIR"; then if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots Hyprland-Dots-Debian; then
cd "$SRC_DIR" || exit 1 cd Hyprland-Dots-Debian || exit 1
chmod +x copy.sh chmod +x copy.sh
./copy.sh ./copy.sh
else else

View File

@ -29,19 +29,18 @@ for PKG1 in "${engine[@]}"; do
install_package "$PKG1" "$LOG" install_package "$PKG1" "$LOG"
done done
# Check if the directory exists and delete it if present (under build/src) # Check if the directory exists and delete it if present
SRC_DIR="$SRC_ROOT/GTK-themes-icons" if [ -d "GTK-themes-icons" ]; then
if [ -d "$SRC_DIR" ]; then
echo "$NOTE GTK themes and Icons directory exist..deleting..." 2>&1 | tee -a "$LOG" echo "$NOTE GTK themes and Icons directory exist..deleting..." 2>&1 | tee -a "$LOG"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG"
fi fi
echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG" echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG"
if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git "$SRC_DIR"; then if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
cd "$SRC_DIR" cd GTK-themes-icons
chmod +x auto-extract.sh chmod +x auto-extract.sh
./auto-extract.sh ./auto-extract.sh
cd "$PARENT_DIR" cd ..
echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG" echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG"
else else
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG" echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"

View File

@ -45,28 +45,25 @@ for PKG1 in "${cursor[@]}"; do
fi fi
done done
# Check if hyprcursor folder exists and remove it (under build/src) # Check if hyprcursor folder exists and remove it
SRC_DIR="$SRC_ROOT/hyprcursor" if [ -d "hyprcursor" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprcursor folder...\n" printf "${NOTE} Removing existing hyprcursor folder...\n"
rm -rf "$SRC_DIR" rm -rf "hyprcursor"
fi fi
# Clone and build # Clone and build
printf "${NOTE} Installing hyprcursor...\n" printf "${NOTE} Installing hyprcursor...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git; then
cd "$SRC_DIR" || exit 1 cd hyprcursor || exit 1
BUILD_DIR="$BUILD_ROOT/hyprcursor" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
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" printf "${OK} hyprcursor installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprcursor." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprcursor." 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG "$PARENT_DIR/Install-Logs/" || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG"

View File

@ -53,22 +53,19 @@ for PKG1 in "${hyprgraphics[@]}"; do
done done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if hyprgraphics directory exists and remove it (under build/src) # Check if hyprgraphics directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprgraphics" if [ -d "hyprgraphics" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprgraphics"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; then
cd "$SRC_DIR" || exit 1 cd hyprgraphics || exit 1
BUILD_DIR="$BUILD_ROOT/hyprgraphics" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
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 [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; 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" printf "${OK} ${MAGENTA}hyprgraphics $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$MLOG"
@ -77,7 +74,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git "$SR
echo "${NOTE} DRY RUN: Skipping installation of hyprgraphics $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprgraphics $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -37,27 +37,24 @@ for PKG1 in "${idle[@]}"; do
fi fi
done done
# Check if hypridle directory exists and remove it (under build/src) # Check if hypridle directory exists and remove it
SRC_DIR="$SRC_ROOT/hypridle" if [ -d "hypridle" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hypridle"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git; then
cd "$SRC_DIR" || exit 1 cd hypridle || exit 1
BUILD_DIR="$BUILD_ROOT/hypridle" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR" if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
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" printf "${OK} ${MAGENTA}hypridle $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG "$PARENT_DIR/Install-Logs/" || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -63,16 +63,15 @@ done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if hyprland-guiutils directory exists and remove it (under build/src) # Check if hyprland-guiutils directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprland-guiutils" if [ -d "hyprland-guiutils" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprland-guiutils"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-guiutils $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprland-guiutils $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git; then
cd "$SRC_DIR" || exit 1 cd hyprland-guiutils || exit 1
# Prefer /usr/local Hypr* libs so we don't accidentally link against copies in /lib. # Prefer /usr/local Hypr* libs so we don't accidentally link against copies in /lib.
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_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:-}" export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}"
@ -80,12 +79,10 @@ 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 LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath-link,/usr/local/lib ${LDFLAGS:-}"
export CPPFLAGS="-I/usr/local/include ${CPPFLAGS:-}" export CPPFLAGS="-I/usr/local/include ${CPPFLAGS:-}"
BUILD_DIR="$BUILD_ROOT/hyprland-guiutils" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
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 [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-guiutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}hyprland-guiutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -94,7 +91,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git
echo "${NOTE} DRY RUN: Skipping installation of hyprland-guiutils $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprland-guiutils $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -41,21 +41,18 @@ MLOG="install-$(date +%d-%H%M%S)_protocols2.log"
# Installation of dependencies # Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}"
# Check if hyprland-protocols directory exists and remove it (under build/src) # Check if hyprland-protocols directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprland-protocols" if [ -d "hyprland-protocols" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprland-protocols"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-protocols $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprland-protocols $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git; then
cd "$SRC_DIR" || exit 1 cd hyprland-protocols || exit 1
BUILD_DIR="$BUILD_ROOT/hyprland-protocols" meson setup build
mkdir -p "$BUILD_DIR"
meson setup "$BUILD_DIR"
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}hyprland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -64,7 +61,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.gi
echo "${NOTE} DRY RUN: Skipping installation of hyprland-protocols $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprland-protocols $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -61,22 +61,19 @@ done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if hyprland-qt-support directory exists and remove it (under build/src) # Check if hyprland-qt-support directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprland-qt-support" if [ -d "hyprland-qt-support" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprland-qt-support"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-qt-support $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprland-qt-support $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git; then
cd "$SRC_DIR" || exit 1 cd hyprland-qt-support || exit 1
BUILD_DIR="$BUILD_ROOT/hyprland-qt-support" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
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 [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-qt-support $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}hyprland-qt-support $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -85,7 +82,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.g
echo "${NOTE} DRY RUN: Skipping installation of hyprland-qt-support $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprland-qt-support $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -3,7 +3,7 @@
# Main Hyprland Package# # Main Hyprland Package#
#specific branch or release #specific branch or release
tag="v0.53.3" tag="v0.53.0"
# Auto-source centralized tags if env is unset # Auto-source centralized tags if env is unset
if [ -z "${HYPRLAND_TAG:-}" ]; then if [ -z "${HYPRLAND_TAG:-}" ]; then
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env" TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
@ -73,17 +73,14 @@ printf "\n%.0s" {1..1}
# Clone, build, and install Hyprland using Cmake # Clone, build, and install Hyprland using Cmake
printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n" printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n"
# Check if Hyprland folder exists and remove it (under build/src) # Check if Hyprland folder exists and remove it
SRC_DIR="$SRC_ROOT/Hyprland" if [ -d "Hyprland" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing Hyprland folder...\n" printf "${NOTE} Removing existing Hyprland folder...\n"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
fi fi
if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland" "$SRC_DIR"; then if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then
cd "$SRC_DIR" || exit 1 cd "Hyprland" || exit 1
BUILD_DIR="$BUILD_ROOT/hyprland"
mkdir -p "$BUILD_DIR"
# Compatibility shim for toolchains without std::vector::{insert_range,append_range} # Compatibility shim for toolchains without std::vector::{insert_range,append_range}
RANGE_HDR="$(pwd)/hypr_range_compat.hpp" RANGE_HDR="$(pwd)/hypr_range_compat.hpp"
@ -132,26 +129,13 @@ EOF
fi fi
# Apply patch only if it applies cleanly; otherwise skip # Apply patch only if it applies cleanly; otherwise skip
if [ -f "$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" ]; then if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then
if patch -p1 --dry-run <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" >/dev/null 2>&1; then if patch -p1 --dry-run <../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then
patch -p1 <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" patch -p1 <../assets/0001-fix-hyprland-compile-issue.patch
else else
echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping." echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping."
fi fi
fi fi
# Optionally strip nixGL/Nix helper logic from start-hyprland (Debian does not need it)
if [ -f "$PARENT_DIR/assets/0002-start-hyprland-no-nixgl.patch" ]; then
if patch -p1 --dry-run <"$PARENT_DIR/assets/0002-start-hyprland-no-nixgl.patch" >/dev/null 2>&1; then
patch -p1 <"$PARENT_DIR/assets/0002-start-hyprland-no-nixgl.patch"
else
echo "${NOTE} Hyprland start-hyprland nixGL patch does not apply on $tag; skipping."
fi
fi
# Remove Nix helper sources that are no longer used (defensive)
rm -f start/src/helpers/Nix.cpp start/src/helpers/Nix.hpp || true
# By default, build Hyprland with bundled hyprutils/hyprlang to avoid version mismatches # 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. # You can force system libs by exporting USE_SYSTEM_HYPRLIBS=1 before running this script.
USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1} USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1}
@ -195,121 +179,19 @@ EOF
-DCMAKE_CXX_FLAGS="-Wno-unknown-warning-option -include ${RANGE_HDR}" -DCMAKE_CXX_FLAGS="-Wno-unknown-warning-option -include ${RANGE_HDR}"
"${SYSTEM_FLAGS[@]}" "${SYSTEM_FLAGS[@]}"
) )
cmake -S . -B "$BUILD_DIR" "${CONFIG_FLAGS[@]}" cmake -S . -B build "${CONFIG_FLAGS[@]}"
cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; 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" 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"
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)
COMMIT_DATE=$(printf '%s' "$VER_OUTPUT" | grep -oP '^Date:\s+\K.*' | head -1)
COMMITS=$(printf '%s' "$VER_OUTPUT" | grep -oP 'commits:\s*\K[0-9]+' | head -1)
DIRTY=$(printf '%s' "$VER_OUTPUT" | grep -qi 'dirty' && echo "dirty" || echo "clean")
COMMIT_MSG=$(printf '%s' "$VER_OUTPUT" | head -n1 | sed -n 's/.*(version: \(.*\))\..*/\1/p')
[ -z "$COMMIT" ] && COMMIT="unknown"
[ -z "$TAG" ] && TAG="v$VERSION"
[ -z "$COMMIT_DATE" ] && COMMIT_DATE="$(date)"
[ -z "$COMMITS" ] && COMMITS="0"
[ -z "$COMMIT_MSG" ] && COMMIT_MSG="version: bump"
# Prefer versions from hyprland --version; fall back to hypr-tags.env values
parse_ver() { printf '%s' "$VER_OUTPUT" | grep -m1 "$1:" | grep -oP '\d+\.\d+\.\d+' | head -1; }
AQUA_VER=$(parse_ver "Aquamarine")
HYPRLANG_VER=$(parse_ver "Hyprlang")
HYPRUTILS_VER=$(parse_ver "Hyprutils")
HYPRCURSOR_VER=$(parse_ver "Hyprcursor")
HYPRGRAPHICS_VER=$(parse_ver "Hyprgraphics")
[ -z "$AQUA_VER" ] && AQUA_VER="${AQUAMARINE_TAG#v}"
[ -z "$HYPRLANG_VER" ] && HYPRLANG_VER="${HYPRLANG_TAG#v}"
[ -z "$HYPRUTILS_VER" ] && HYPRUTILS_VER="${HYPRUTILS_TAG#v}"
[ -z "$HYPRGRAPHICS_VER" ] && HYPRGRAPHICS_VER="${HYPRGRAPHICS_TAG#v}"
[ -z "$HYPRCURSOR_VER" ] && HYPRCURSOR_VER="0.1.13"
[ -z "$AQUA_VER" ] && AQUA_VER="0.0.0"
[ -z "$HYPRLANG_VER" ] && HYPRLANG_VER="0.0.0"
[ -z "$HYPRUTILS_VER" ] && HYPRUTILS_VER="0.0.0"
[ -z "$HYPRGRAPHICS_VER" ] && HYPRGRAPHICS_VER="0.0.0"
# AQUAMARINE_VERSION components
AQUA_MAJOR=$(echo "$AQUA_VER" | cut -d. -f1)
AQUA_MINOR=$(echo "$AQUA_VER" | cut -d. -f2)
AQUA_PATCH=$(echo "$AQUA_VER" | cut -d. -f3)
# Use printf to safely write the file
printf '%s\n' "#pragma once" > /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_COMMIT_HASH \"$COMMIT\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_BRANCH \"\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_COMMIT_MESSAGE \"$COMMIT_MSG\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_COMMIT_DATE \"$COMMIT_DATE\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_DIRTY \"$DIRTY\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_TAG \"$TAG\"" >> /tmp/version_header.h.tmp
printf '%s\n' "#define GIT_COMMITS \"$COMMITS\"" >> /tmp/version_header.h.tmp
printf '%s\n' "" >> /tmp/version_header.h.tmp
printf '%s\n' "#define AQUAMARINE_VERSION \"$AQUA_VER\"" >> /tmp/version_header.h.tmp
printf '%s\n' "// clang-format off" >> /tmp/version_header.h.tmp
printf '%s\n' "#define AQUAMARINE_VERSION_MAJOR $AQUA_MAJOR" >> /tmp/version_header.h.tmp
printf '%s\n' "#define AQUAMARINE_VERSION_MINOR $AQUA_MINOR" >> /tmp/version_header.h.tmp
printf '%s\n' "#define AQUAMARINE_VERSION_PATCH $AQUA_PATCH" >> /tmp/version_header.h.tmp
printf '%s\n' "// clang-format on" >> /tmp/version_header.h.tmp
printf '%s\n' "#define HYPRLANG_VERSION \"$HYPRLANG_VER\"" >> /tmp/version_header.h.tmp
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
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 else
echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
else else
echo "${NOTE} DRY RUN: Skipping installation of Hyprland $tag." echo "${NOTE} DRY RUN: Skipping installation of Hyprland $tag."
fi fi
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -41,22 +41,19 @@ MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log"
# Installation of dependencies # Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}"
# Check if hyprlang directory exists and remove it (under build/src) # Check if hyprlang directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprlang" if [ -d "hyprlang" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprlang"
rm -rf "$SRC_DIR"
fi fi
# Clone and build # Clone and build
printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then
cd "$SRC_DIR" || exit 1 cd hyprlang || exit 1
BUILD_DIR="$BUILD_ROOT/hyprlang" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
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 [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; 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" printf "${OK} ${MAGENTA}hyprlang tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -65,7 +62,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git "$SRC_DI
echo "${NOTE} DRY RUN: Skipping installation of hyprlang $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprlang $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -46,27 +46,24 @@ for PKG1 in "${build_dep[@]}"; do
build_dep "$PKG1" "$LOG" build_dep "$PKG1" "$LOG"
done done
# Check if hyprlock directory exists and remove it (under build/src) # Check if hyprlock directory exists and remove it
SRC_DIR="$SRC_ROOT/hyprlock" if [ -d "hyprlock" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "hyprlock"
rm -rf "$SRC_DIR"
fi fi
# Clone and build hyprlock # Clone and build hyprlock
printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git; then
cd "$SRC_DIR" || exit 1 cd hyprlock || exit 1
BUILD_DIR="$BUILD_ROOT/hyprlock" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR" if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
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" printf "${OK} ${YELLOW}hyprlock $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG "$PARENT_DIR/Install-Logs/" || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -43,28 +43,25 @@ for PKG1 in "${polkitagent[@]}"; do
fi fi
done done
# Check if hyprpolkitagent folder exists and remove it (under build/src) # Check if hyprpolkitagent folder exists and remove it
SRC_DIR="$SRC_ROOT/hyprpolkitagent" if [ -d "hyprpolkitagent" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprpolkitagent folder...\n" printf "${NOTE} Removing existing hyprpolkitagent folder...\n"
rm -rf "$SRC_DIR" rm -rf "hyprpolkitagent"
fi fi
# Clone and build # Clone and build
printf "${NOTE} Installing hyprpolkitagent...\n" printf "${NOTE} Installing hyprpolkitagent...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git; then
cd "$SRC_DIR" || exit 1 cd hyprpolkitagent || exit 1
BUILD_DIR="$BUILD_ROOT/hyprpolkitagent" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
mkdir -p "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR" if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
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" printf "${OK} hyprpolkitagent installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprpolkitagent." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprpolkitagent." 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG "$PARENT_DIR/Install-Logs/" || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprpolkitagent." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprpolkitagent." 2>&1 | tee -a "$LOG"

View File

@ -40,20 +40,18 @@ MLOG="install-$(date +%d-%H%M%S)_hyprtoolkit2.log"
# Clone, build, and install using Cmake # Clone, build, and install using Cmake
printf "${NOTE} Cloning hyprtoolkit...\n" printf "${NOTE} Cloning hyprtoolkit...\n"
# Check if hyprtoolkit folder exists and remove it (under build/src) # Check if hyprtoolkit folder exists and remove it
SRC_DIR="$SRC_ROOT/hyprtoolkit" if [ -d "hyprtoolkit" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprtoolkit folder...\n" printf "${NOTE} Removing existing hyprtoolkit folder...\n"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "hyprtoolkit" 2>&1 | tee -a "$LOG"
fi fi
if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git" "$SRC_DIR"; then
cd "$SRC_DIR" || exit 1 if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then
BUILD_DIR="$BUILD_ROOT/hyprtoolkit" cd "hyprtoolkit" || exit 1
mkdir -p "$BUILD_DIR" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
printf "${OK} hyprtoolkit installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} hyprtoolkit installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprtoolkit." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprtoolkit." 2>&1 | tee -a "$MLOG"
@ -61,7 +59,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git" "$SRC_DIR"; the
else else
echo "${NOTE} DRY RUN: Skipping installation of hyprtoolkit $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprtoolkit $tag."
fi fi
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprtoolkit" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprtoolkit" 2>&1 | tee -a "$LOG"

View File

@ -43,20 +43,18 @@ MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log"
# Clone, build, and install using Cmake # Clone, build, and install using Cmake
printf "${NOTE} Cloning hyprutils...\n" printf "${NOTE} Cloning hyprutils...\n"
# Check if hyprutils folder exists and remove it (under build/src) # Check if hyprutils folder exists and remove it
SRC_DIR="$SRC_ROOT/hyprutils" if [ -d "hyprutils" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprutils folder...\n" printf "${NOTE} Removing existing hyprutils folder...\n"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "hyprutils" 2>&1 | tee -a "$LOG"
fi fi
if git clone -b $tag "https://github.com/hyprwm/hyprutils.git" "$SRC_DIR"; then
cd "$SRC_DIR" || exit 1 if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then
BUILD_DIR="$BUILD_ROOT/hyprutils" cd "hyprutils" || exit 1
mkdir -p "$BUILD_DIR" cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR" cmake --build ./build --config Release --target all -j$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)
cmake --build "$BUILD_DIR" --config Release --target all -j$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG"
@ -64,7 +62,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprutils.git" "$SRC_DIR"; then
else else
echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag."
fi fi
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG"

View File

@ -55,23 +55,20 @@ done
printf "${NOTE} Installing hyprwayland-scanner...\n" printf "${NOTE} Installing hyprwayland-scanner...\n"
# Check if hyprwayland-scanner folder exists and remove it (under build/src) # Check if hyprwayland-scanner folder exists and remove it
SRC_DIR="$SRC_ROOT/hyprwayland-scanner" if [ -d "hyprwayland-scanner" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprwayland-scanner folder...\n" printf "${NOTE} Removing existing hyprwayland-scanner folder...\n"
rm -rf "$SRC_DIR" rm -rf "hyprwayland-scanner"
fi fi
# Clone and build hyprlang # Clone and build hyprlang
printf "${NOTE} Installing hyprwayland-scanner...\n" printf "${NOTE} Installing hyprwayland-scanner...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git; then
cd "$SRC_DIR" || exit 1 cd hyprwayland-scanner || exit 1
BUILD_DIR="$BUILD_ROOT/hyprwayland-scanner" cmake -DCMAKE_INSTALL_PREFIX=/usr -B build
mkdir -p "$BUILD_DIR" cmake --build build -j `nproc`
cmake -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" -j `nproc`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprwayland-scanner installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} hyprwayland-scanner installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprwayland-scanner." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprwayland-scanner." 2>&1 | tee -a "$MLOG"
@ -80,7 +77,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.g
echo "${NOTE} DRY RUN: Skipping installation of hyprwayland-scanner $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprwayland-scanner $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG"

View File

@ -61,18 +61,15 @@ MLOG="install-$(date +%d-%H%M%S)_hyprwire2.log"
printf "${NOTE} Installing hyprwire $tag...\n" printf "${NOTE} Installing hyprwire $tag...\n"
# Remove existing tree if present (under build/src) # Remove existing tree if present
SRC_DIR="$SRC_ROOT/hyprwire" if [ -d "hyprwire" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprwire folder...\n" printf "${NOTE} Removing existing hyprwire folder...\n"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "hyprwire" 2>&1 | tee -a "$LOG"
fi fi
# Clone and build # Clone and build
if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git "$SRC_DIR"; then if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then
cd "$SRC_DIR" || exit 1 cd hyprwire || exit 1
BUILD_DIR="$BUILD_ROOT/hyprwire"
mkdir -p "$BUILD_DIR"
# Decide whether we need the append_range compatibility shim. # Decide whether we need the append_range compatibility shim.
# On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch. # On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch.
@ -134,14 +131,14 @@ EOF
# Absolute path for forced include # Absolute path for forced include
APPEND_HDR="$(pwd)/append_range_compat.hpp" APPEND_HDR="$(pwd)/append_range_compat.hpp"
cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}" cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}"
else else
echo "${NOTE} Toolchain supports std::vector::append_range; building hyprwire without shim." echo "${NOTE} Toolchain supports std::vector::append_range; building hyprwire without shim."
cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23
fi fi
cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprwire $tag installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} hyprwire $tag installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprwire $tag" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for hyprwire $tag" 2>&1 | tee -a "$MLOG"
@ -149,7 +146,7 @@ EOF
else else
echo "${NOTE} DRY RUN: Skipping installation of hyprwire $tag." echo "${NOTE} DRY RUN: Skipping installation of hyprwire $tag."
fi fi
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprwire $tag" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprwire $tag" 2>&1 | tee -a "$LOG"

View File

@ -117,7 +117,7 @@ done
# Build Google Breakpad from source if pkg-config 'breakpad' is missing # Build Google Breakpad from source if pkg-config 'breakpad' is missing
if ! pkg-config --exists breakpad; then if ! pkg-config --exists breakpad; then
note "Building Google Breakpad from source..." note "Building Google Breakpad from source..."
BP_DIR="$SRC_ROOT/breakpad" BP_DIR="$PARENT_DIR/.thirdparty/breakpad"
rm -rf "$BP_DIR" rm -rf "$BP_DIR"
mkdir -p "$BP_DIR" mkdir -p "$BP_DIR"
( (
@ -166,7 +166,7 @@ PCEOF
fi fi
# Clone source (prefer upstream forgejo; mirror available at github:quickshell-mirror/quickshell) # Clone source (prefer upstream forgejo; mirror available at github:quickshell-mirror/quickshell)
SRC_DIR="$SRC_ROOT/quickshell-src" SRC_DIR="quickshell-src"
if [ -d "$SRC_DIR" ]; then if [ -d "$SRC_DIR" ]; then
note "Removing existing $SRC_DIR" note "Removing existing $SRC_DIR"
rm -rf "$SRC_DIR" rm -rf "$SRC_DIR"
@ -183,33 +183,32 @@ fi
# Configure with Ninja; enable RelWithDebInfo, leave features ON (deps installed above) # Configure with Ninja; enable RelWithDebInfo, leave features ON (deps installed above)
CMAKE_FLAGS=( CMAKE_FLAGS=(
-GNinja -GNinja
-B build
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_BUILD_TYPE=RelWithDebInfo
-DDISTRIBUTOR="Debian-Hyprland installer" -DDISTRIBUTOR="Debian-Hyprland installer"
) )
note "Configuring Quickshell (CMake)..." note "Configuring Quickshell (CMake)..."
# Use explicit source/build dirs and preserve cmake exit code with pipefail # Use explicit source/build dirs and preserve cmake exit code with pipefail
BUILD_DIR="$BUILD_ROOT/quickshell" if ! cmake -S . -B build "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then
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" echo "${ERROR} CMake configure failed. See log: $MLOG" | tee -a "$LOG"
exit 1 exit 1
fi fi
# Ensure build files exist before invoking ninja # Ensure build files exist before invoking ninja
if [ ! -f "$BUILD_DIR/build.ninja" ]; then if [ ! -f build/build.ninja ]; then
echo "${ERROR} build/build.ninja not generated; aborting build." | tee -a "$LOG" echo "${ERROR} build/build.ninja not generated; aborting build." | tee -a "$LOG"
exit 1 exit 1
fi fi
note "Building Quickshell (Ninja)..." note "Building Quickshell (Ninja)..."
if ! cmake --build "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then if ! cmake --build build 2>&1 | tee -a "$MLOG"; then
echo "${ERROR} Build failed. See log: $MLOG" | tee -a "$LOG" echo "${ERROR} Build failed. See log: $MLOG" | tee -a "$LOG"
exit 1 exit 1
fi fi
note "Installing Quickshell..." note "Installing Quickshell..."
if ! sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then if ! sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
echo "${ERROR} Installation failed. See log: $MLOG" | tee -a "$LOG" echo "${ERROR} Installation failed. See log: $MLOG" | tee -a "$LOG"
exit 1 exit 1
fi fi

View File

@ -68,29 +68,25 @@ printf "\n%.0s" {1..2}
# Clone and build rofi - wayland # Clone and build rofi - wayland
printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n" printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n"
# Check if rofi directory exists (under build/src) # Check if rofi directory exists
SRC_DIR="$SRC_ROOT/rofi-$rofi_tag" if [ -d "rofi-$rofi_tag" ]; then
TAR_PATH="$SRC_ROOT/rofi-$rofi_tag.tar.gz" rm -rf "rofi-$rofi_tag"
if [ -d "$SRC_DIR" ]; then
rm -rf "$SRC_DIR"
fi fi
# cloning rofi-wayland # cloning rofi-wayland
printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n" printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n"
wget -O "$TAR_PATH" $release_url wget $release_url
if [ -f "$TAR_PATH" ]; then if [ -f "rofi-$rofi_tag.tar.gz" ]; then
printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG" printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG"
tar -C "$SRC_ROOT" -xf "$TAR_PATH" tar xf rofi-$rofi_tag.tar.gz
fi fi
cd "$SRC_DIR" || exit 1 cd rofi-$rofi_tag || exit 1
# Proceed with the installation steps # Proceed with the installation steps
BUILD_DIR="$BUILD_ROOT/rofi-$rofi_tag" if meson setup build && ninja -C build ; then
mkdir -p "$BUILD_DIR" if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then
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" printf "${OK} rofi-wayland installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -100,10 +96,10 @@ else
fi fi
# Move logs to Install-Logs directory # Move logs to Install-Logs directory
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true mv "$MLOG" ../Install-Logs/ || true
cd .. || exit 1 cd .. || exit 1
# clean up # clean up
rm -rf "$TAR_PATH" rm -rf rofi-$rofi_tag.tar.gz
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -38,13 +38,11 @@ sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
install_and_log() { install_and_log() {
local project_name="$1" local project_name="$1"
local git_url="$2" local git_url="$2"
local src_dir="$SRC_ROOT/$project_name"
printf "${NOTE} Installing $project_name\n" printf "${NOTE} Installing $project_name\n"
rm -rf "$src_dir" if git clone "$git_url" "$project_name"; then
if git clone "$git_url" "$src_dir"; then cd "$project_name" || exit 1
cd "$src_dir" || exit 1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2>&1 | tee -a "$LOG" curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2>&1 | tee -a "$LOG"
source "$HOME/.cargo/env" source "$HOME/.cargo/env"
make make
@ -60,7 +58,7 @@ install_and_log() {
fi fi
#moving logs into main install-logs #moving logs into main install-logs
mv $LOG "$PARENT_DIR/Install-Logs/" || true mv $LOG ../Install-Logs/ || true
cd - || exit 1 cd - || exit 1
else else
echo -e "${ERROR} Cloning $project_name from $git_url failed." echo -e "${ERROR} Cloning $project_name from $git_url failed."

View File

@ -31,16 +31,15 @@ if [ -d "/usr/share/sddm/themes/$theme_name" ]; then
echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory." 2>&1 | tee -a "$LOG" echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory." 2>&1 | tee -a "$LOG"
fi fi
# Check if $theme_name directory exists in build/src and remove if it does # Check if $theme_name directory exists in the current directory and remove if it does
SRC_DIR="$SRC_ROOT/$theme_name" if [ -d "$theme_name" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "$theme_name"
rm -rf "$SRC_DIR"
echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG" echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG"
fi fi
# Clone the repository # Clone the repository
if git clone --depth=1 "$source_theme" "$SRC_DIR"; then if git clone --depth=1 "$source_theme" "$theme_name"; then
if [ ! -d "$SRC_DIR" ]; then if [ ! -d "$theme_name" ]; then
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG" echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
fi fi
@ -51,7 +50,7 @@ if git clone --depth=1 "$source_theme" "$SRC_DIR"; then
fi fi
# Move cloned theme to the themes directory # Move cloned theme to the themes directory
sudo mv "$SRC_DIR" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG"
# setting up SDDM theme # setting up SDDM theme
sddm_conf="/etc/sddm.conf" sddm_conf="/etc/sddm.conf"

View File

@ -49,14 +49,13 @@ done
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}
# Check if swww directory exists (under build/src) # Check if swww directory exists
SRC_DIR="$SRC_ROOT/swww" if [ -d "swww" ]; then
if [ -d "$SRC_DIR" ]; then cd swww || exit 1
cd "$SRC_DIR" || exit 1
git pull origin main 2>&1 | tee -a "$MLOG" git pull origin main 2>&1 | tee -a "$MLOG"
else else
if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git "$SRC_DIR"; then if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git; then
cd "$SRC_DIR" || exit 1 cd swww || exit 1
else else
echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG"
exit 1 exit 1
@ -95,7 +94,7 @@ sudo mkdir -p /usr/share/zsh/site-functions 2>&1 | tee -a "$MLOG"
sudo cp -r completions/_swww /usr/share/zsh/site-functions/_swww 2>&1 | tee -a "$MLOG" sudo cp -r completions/_swww /usr/share/zsh/site-functions/_swww 2>&1 | tee -a "$MLOG"
# Moving logs into main Install-Logs # Moving logs into main Install-Logs
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true mv "$MLOG" ../Install-Logs/ || true
cd - || exit 1 cd - || exit 1
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -39,18 +39,17 @@ MLOG="install-$(date +%d-%H%M%S)_wayland-protocols2.log"
printf "\n%s - Installing ${YELLOW}wayland-protocols (from source)${RESET} .... \n" "${INFO}" printf "\n%s - Installing ${YELLOW}wayland-protocols (from source)${RESET} .... \n" "${INFO}"
# Clean previous clone (under build/src) # Clean previous clone
SRC_DIR="$SRC_ROOT/wayland-protocols" if [ -d "wayland-protocols" ]; then
if [ -d "$SRC_DIR" ]; then rm -rf "wayland-protocols"
rm -rf "$SRC_DIR"
fi fi
# Clone and build (meson) # Clone and build (meson)
# Upstream: https://gitlab.freedesktop.org/wayland/wayland-protocols.git # Upstream: https://gitlab.freedesktop.org/wayland/wayland-protocols.git
printf "${INFO} Installing ${YELLOW}wayland-protocols $tag${RESET} ...\n" printf "${INFO} Installing ${YELLOW}wayland-protocols $tag${RESET} ...\n"
repo_url="https://gitlab.freedesktop.org/wayland/wayland-protocols.git" repo_url="https://gitlab.freedesktop.org/wayland/wayland-protocols.git"
if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then
cd "$SRC_DIR" || exit 1 cd wayland-protocols || exit 1
# Fetch tags and attempt to checkout the requested tag, trying both raw and v-prefixed # Fetch tags and attempt to checkout the requested tag, trying both raw and v-prefixed
git fetch --tags --depth=1 >/dev/null 2>&1 || true git fetch --tags --depth=1 >/dev/null 2>&1 || true
checked_out=0 checked_out=0
@ -68,12 +67,10 @@ if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then
exit 1 exit 1
fi fi
# Install to /usr/local so pkg-config can prefer it over distro /usr # Install to /usr/local so pkg-config can prefer it over distro /usr
BUILD_DIR="$BUILD_ROOT/wayland-protocols" meson setup build --prefix=/usr/local
mkdir -p "$BUILD_DIR" meson compile -C build -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
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 [ $DO_INSTALL -eq 1 ]; then
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}wayland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}wayland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG"
@ -82,7 +79,7 @@ if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then
echo "${NOTE} DRY RUN: Skipping installation of wayland-protocols $tag." echo "${NOTE} DRY RUN: Skipping installation of wayland-protocols $tag."
fi fi
# Move additional logs to Install-Logs directory if they exist # Move additional logs to Install-Logs directory if they exist
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -48,26 +48,23 @@ done
# Clone, build, and install XDPH # Clone, build, and install XDPH
printf "${NOTE} Cloning and Installing ${YELLOW}XDG Desktop Portal Hyprland $tag${RESET} ...\n" printf "${NOTE} Cloning and Installing ${YELLOW}XDG Desktop Portal Hyprland $tag${RESET} ...\n"
# Check if xdg-desktop-portal-hyprland folder exists and remove it (under build/src) # Check if xdg-desktop-portal-hyprland folder exists and remove it
SRC_DIR="$SRC_ROOT/xdg-desktop-portal-hyprland" if [ -d "xdg-desktop-portal-hyprland" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n" printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n"
rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG" rm -rf "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG"
fi fi
if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git" "$SRC_DIR"; then if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then
cd "$SRC_DIR" || exit 1 cd "xdg-desktop-portal-hyprland" || exit 1
BUILD_DIR="$BUILD_ROOT/xdg-desktop-portal-hyprland" cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build
mkdir -p "$BUILD_DIR" cmake --build build
cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR" if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
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" printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
# Move the additional logs to Install-Logs directory # Move the additional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG"

View File

@ -40,28 +40,25 @@ for PKG1 in "${xkbcommon[@]}"; do
fi fi
done done
# Check if xkbcommon folder exists and remove it (under build/src) # Check if xkbcommon folder exists and remove it
SRC_DIR="$SRC_ROOT/libxkbcommon" if [ -d "libxkbcommon" ]; then
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing libxkbcommon folder...\n" printf "${NOTE} Removing existing libxkbcommon folder...\n"
rm -rf "$SRC_DIR" rm -rf "libxkbcommon"
fi fi
# Clone and build # Clone and build
printf "${NOTE} Installing xkbcommon...\n" printf "${NOTE} Installing xkbcommon...\n"
if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git "$SRC_DIR"; then if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git; then
cd "$SRC_DIR" || exit 1 cd libxkbcommon || exit 1
BUILD_DIR="$BUILD_ROOT/libxkbcommon" meson setup build --libdir=/usr/local/lib
mkdir -p "$BUILD_DIR" meson compile -C build
meson setup "$BUILD_DIR" --libdir=/usr/local/lib if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
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" printf "${OK} xkbcommon installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for xkbcommon." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for xkbcommon." 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG "$PARENT_DIR/Install-Logs/" || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for xkbcommon." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for xkbcommon." 2>&1 | tee -a "$LOG"

View File

@ -20,12 +20,11 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh_pokemon.log"
printf "${INFO} Installing ${SKY_BLUE}Pokemon color scripts${RESET} ..." printf "${INFO} Installing ${SKY_BLUE}Pokemon color scripts${RESET} ..."
SRC_DIR="$SRC_ROOT/pokemon-colorscripts" if [ -d "pokemon-colorscripts" ]; then
if [ -d "$SRC_DIR" ]; then cd pokemon-colorscripts && git pull && sudo ./install.sh && cd ..
cd "$SRC_DIR" && git pull && sudo ./install.sh && cd ..
else else
git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git "$SRC_DIR" && git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git &&
cd "$SRC_DIR" && sudo ./install.sh && cd .. cd pokemon-colorscripts && sudo ./install.sh && cd ..
fi fi
# Check if ~/.zshrc exists # Check if ~/.zshrc exists

View File

@ -1,6 +1,9 @@
#!/bin/bash #!/bin/bash
# https://github.com/JaKooLit # https://github.com/JaKooLit
# Source location for pre-built Debian packages (can be local or network share)
# Set this variable to the path containing .deb files, or leave empty to build from source
DEB_PACKAGES_SOURCE="/mnt/nas/Projects/Jak/debian-pkg/build/debs"
clear clear
@ -210,6 +213,59 @@ clean_existing_hyprland() {
echo "${OK} Cleanup completed" | tee -a "$LOG" echo "${OK} Cleanup completed" | tee -a "$LOG"
} }
# Function to install packages from pre-built .deb files
install_from_packages() {
echo "${INFO} Installing from pre-built packages at: ${SKY_BLUE}$DEB_PACKAGES_SOURCE${RESET}" | tee -a "$LOG"
if [ ! -d "$DEB_PACKAGES_SOURCE" ]; then
echo "${ERROR} Package source directory not found: $DEB_PACKAGES_SOURCE" | tee -a "$LOG"
return 1
fi
local pkg_count=$(find "$DEB_PACKAGES_SOURCE" -name "*.deb" | wc -l)
if [ "$pkg_count" -eq 0 ]; then
echo "${ERROR} No .deb files found in $DEB_PACKAGES_SOURCE" | tee -a "$LOG"
return 1
fi
echo "${INFO} Found ${SKY_BLUE}$pkg_count${RESET} .deb packages" | tee -a "$LOG"
# Clean up existing installations before installing from packages
echo "${CAT} Removing existing Hyprland installations to avoid conflicts..." | tee -a "$LOG"
clean_existing_hyprland
# Update package cache after cleanup
echo "${INFO} Updating package cache..." | tee -a "$LOG"
sudo apt-get update 2>&1 | tail -3 | tee -a "$LOG"
# Install core packages only (skip plugins and debug symbols)
echo "${INFO} Installing core Hyprland packages (excluding plugins and debug symbols)..." | tee -a "$LOG"
# Install only essential packages, skip plugins and dbgsym
for deb in "$DEB_PACKAGES_SOURCE"/*.deb; do
filename=$(basename "$deb")
# Skip debug symbols and plugins
if [[ "$filename" == *"-dbgsym_"* ]]; then
continue
fi
if [[ "$filename" == "hyprland-plugin-"* ]]; then
continue
fi
echo "${INFO} Installing: $filename" | tee -a "$LOG"
sudo dpkg -i "$deb" 2>&1 | tee -a "$LOG" || true
done
# Fix any dependency issues
echo "${INFO} Fixing any dependency issues..." | tee -a "$LOG"
sudo apt-get install -f -y 2>&1 | tail -5 | tee -a "$LOG"
echo "${OK} Core package installation completed!" | tee -a "$LOG"
echo "${NOTE} To install plugins, run: sudo dpkg -i $DEB_PACKAGES_SOURCE/hyprland-plugin-*.deb" | tee -a "$LOG"
echo "${NOTE} To install debug symbols, run: sudo dpkg -i $DEB_PACKAGES_SOURCE/*-dbgsym*.deb" | tee -a "$LOG"
return 0
}
# Welcome message using whiptail (for displaying information) # Welcome message using whiptail (for displaying information)
whiptail --title "KooL Debian-Hyprland Trixie+ (2025) Install Script" \ whiptail --title "KooL Debian-Hyprland Trixie+ (2025) Install Script" \
@ -218,8 +274,24 @@ ATTENTION: Run a full system update and Reboot first !!! (Highly Recommended)\n\
NOTE: If you are installing on a VM, ensure to enable 3D acceleration otherwise Hyprland may NOT start!" \ NOTE: If you are installing on a VM, ensure to enable 3D acceleration otherwise Hyprland may NOT start!" \
15 80 15 80
# Ask if the user wants to proceed (source-only build) # Ask user to choose build method
proceed_msg="Build method: FROM SOURCE\n\nVERY IMPORTANT!!!\nYou must be able to install from source by uncommenting deb-src on /etc/apt/sources.list else script may fail.\n\nShall we proceed?" build_method="source"
if [ -d "$DEB_PACKAGES_SOURCE" ] && [ "$(find "$DEB_PACKAGES_SOURCE" -name "*.deb" 2>/dev/null | wc -l)" -gt 0 ]; then
if whiptail --title "Build Method" \
--yesno "Pre-built Hyprland packages are available at:\n$DEB_PACKAGES_SOURCE\n\nWould you like to install from pre-built packages?\n\nSelect YES for faster installation from packages\nSelect NO to build from source (takes longer)" 15 70; then
build_method="packages"
echo "${OK} Selected build method: ${SKY_BLUE}Pre-built Packages${RESET}" | tee -a "$LOG"
else
echo "${OK} Selected build method: ${SKY_BLUE}From Source${RESET}" | tee -a "$LOG"
fi
fi
# Ask if the user wants to proceed
if [ "$build_method" = "packages" ]; then
proceed_msg="Build method: PRE-BUILT PACKAGES\n\nThis will install pre-compiled Hyprland packages from the shared location.\n\nShall we proceed?"
else
proceed_msg="Build method: FROM SOURCE\n\nVERY IMPORTANT!!!\nYou must be able to install from source by uncommenting deb-src on /etc/apt/sources.list else script may fail.\n\nShall we proceed?"
fi
if ! whiptail --title "Proceed with Installation?" \ if ! whiptail --title "Proceed with Installation?" \
--yesno "$proceed_msg" 15 60; then --yesno "$proceed_msg" 15 60; then
@ -480,59 +552,71 @@ echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
sleep 1 sleep 1
execute_script "fonts.sh" execute_script "fonts.sh"
# Build from source (only method) # Build method selection: from source or pre-built packages
# Optional: refresh tags before building the Hyprland stack if [ "$build_method" = "packages" ]; then
# Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags) echo "${INFO} Installing from ${SKY_BLUE}pre-built packages${RESET}..." | tee -a "$LOG"
if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then sleep 1
if install_from_packages; then
echo "${OK} Pre-built packages installed successfully!" | tee -a "$LOG"
else
echo "${ERROR} Failed to install pre-built packages. Exiting..." | tee -a "$LOG"
exit 1
fi
else
# Build from source (original method)
# Optional: refresh tags before building the Hyprland stack
# 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
chmod +x ./refresh-hypr-tags.sh || true chmod +x ./refresh-hypr-tags.sh || true
./refresh-hypr-tags.sh ./refresh-hypr-tags.sh
fi fi
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG" echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG"
sleep 1 sleep 1
execute_script "01-hypr-pkgs.sh" execute_script "01-hypr-pkgs.sh"
sleep 1 sleep 1
execute_script "hyprutils.sh" execute_script "hyprutils.sh"
sleep 1 sleep 1
execute_script "hyprlang.sh" execute_script "hyprlang.sh"
sleep 1 sleep 1
execute_script "hyprcursor.sh" execute_script "hyprcursor.sh"
sleep 1 sleep 1
execute_script "hyprwayland-scanner.sh" execute_script "hyprwayland-scanner.sh"
sleep 1 sleep 1
execute_script "hyprgraphics.sh" execute_script "hyprgraphics.sh"
sleep 1 sleep 1
execute_script "aquamarine.sh" 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 "hyprtoolkit.sh" execute_script "hyprtoolkit.sh"
sleep 1 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"
sleep 1 sleep 1
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement # Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
execute_script "wayland-protocols-src.sh" execute_script "wayland-protocols-src.sh"
sleep 1 sleep 1
execute_script "xkbcommon.sh" execute_script "xkbcommon.sh"
sleep 1 sleep 1
# Build hyprwire before Hyprland (required by Hyprland >= 0.53) # Build hyprwire before Hyprland (required by Hyprland >= 0.53)
execute_script "hyprwire.sh" execute_script "hyprwire.sh"
sleep 1 sleep 1
execute_script "hyprland.sh" execute_script "hyprland.sh"
sleep 1 sleep 1
execute_script "hyprpolkitagent.sh" execute_script "hyprpolkitagent.sh"
sleep 1 sleep 1
execute_script "wallust.sh" execute_script "wallust.sh"
sleep 1 sleep 1
execute_script "swww.sh" execute_script "swww.sh"
sleep 1 sleep 1
execute_script "rofi-wayland.sh" execute_script "rofi-wayland.sh"
sleep 1 sleep 1
execute_script "hyprlock.sh" execute_script "hyprlock.sh"
sleep 1 sleep 1
execute_script "hypridle.sh" execute_script "hypridle.sh"
fi
# Ensure /usr/local/lib is in the dynamic linker search path. # Ensure /usr/local/lib is in the dynamic linker search path.
# Many Hypr* components install shared libraries into /usr/local/lib; without this, # Many Hypr* components install shared libraries into /usr/local/lib; without this,

View File

@ -53,7 +53,7 @@ done
if [[ ! -f "$TAGS_FILE" ]]; then if [[ ! -f "$TAGS_FILE" ]]; then
cat > "$TAGS_FILE" <<'EOF' cat > "$TAGS_FILE" <<'EOF'
# Default Hyprland stack versions # Default Hyprland stack versions
HYPRLAND_TAG=v0.53.3 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8 HYPRLANG_TAG=v0.6.8

View File

@ -103,7 +103,7 @@ ensure_tags_file() {
cat >"$TAGS_FILE" <<'EOF' cat >"$TAGS_FILE" <<'EOF'
# Default Hyprland stack versions # Default Hyprland stack versions
# (You can override any of these via --set or by editing hypr-tags.env.) # (You can override any of these via --set or by editing hypr-tags.env.)
HYPRLAND_TAG=v0.53.3 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8 HYPRLANG_TAG=v0.6.8