mirror of
https://github.com/JaKooLit/Debian-Hyprland.git
synced 2026-02-05 09:40:14 +01:00
Compare commits
No commits in common. "main" and "Debian-Hyprland-v2.9.6" have entirely different histories.
main
...
Debian-Hyp
29
CHANGELOG.md
29
CHANGELOG.md
@ -1,30 +1,5 @@
|
||||
## 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
|
||||
|
||||
### Important Note for Debian `Trixie` users.
|
||||
@ -44,7 +19,7 @@
|
||||
|
||||
## 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
|
||||
|
||||
@ -53,7 +28,7 @@
|
||||
### > Only Intel, AMD, and in VMs
|
||||
|
||||
- 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:
|
||||
- `--build-trixie` / `--no-trixie` (auto-detected on Debian 13)
|
||||
- Added `--force-update` to refresh pinned package versions
|
||||
|
||||
@ -128,7 +128,7 @@ Archivo con etiquetas de versión para todos los componentes de Hyprland:
|
||||
|
||||
```bash
|
||||
# Versiones actuales (ejemplo)
|
||||
HYPRLAND_TAG=v0.53.2
|
||||
HYPRLAND_TAG=v0.53.1
|
||||
AQUAMARINE_TAG=v0.10.0
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
@ -327,20 +327,6 @@ Notas:
|
||||
- **Sin cambios en el sistema**: No instala archivos en /usr/local o /usr
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
@ -128,7 +128,7 @@ This file contains version tags for all Hyprland components:
|
||||
|
||||
```bash
|
||||
# Current versions (example)
|
||||
HYPRLAND_TAG=v0.53.2
|
||||
HYPRLAND_TAG=v0.53.1
|
||||
AQUAMARINE_TAG=v0.10.0
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
@ -327,20 +327,6 @@ Notes:
|
||||
- **No system changes**: No files installed to /usr/local or /usr
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
@ -102,14 +102,14 @@ sudo nano /etc/apt/sources.list
|
||||
[Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md)
|
||||
|
||||
- 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
|
||||
- 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
|
||||
- Testing is on going but NVIDIA GPUs have not been tested
|
||||
- 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!
|
||||
- Hyprland-Debian nows builds 0.51.1 from source!
|
||||
|
||||
@ -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>();
|
||||
@ -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
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
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_QT_SUPPORT_TAG=v0.1.0
|
||||
HYPRLAND_QTUTILS_TAG=v0.1.5
|
||||
HYPRLAND_TAG=v0.53.3
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
HYPRTOOLKIT_TAG=v0.5.3
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRWAYLAND_SCANNER_TAG=v0.4.5
|
||||
HYPRLAND_GUIUTILS_TAG=v0.2.0
|
||||
HYPRWIRE_TAG=v0.2.1
|
||||
WAYLAND_PROTOCOLS_TAG=1.46
|
||||
|
||||
@ -25,12 +25,6 @@ if [ ! -d Install-Logs ]; then
|
||||
mkdir Install-Logs
|
||||
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() {
|
||||
local pid=$1
|
||||
|
||||
@ -95,9 +95,8 @@ sudo npm install --global typescript 2>&1 | tee -a "$LOG"
|
||||
# ags v1
|
||||
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
|
||||
for OLD in "ags" "ags_v1.9.0"; do
|
||||
SRC_DIR="$SRC_ROOT/$OLD"
|
||||
# Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0")
|
||||
for SRC_DIR in "ags" "ags_v1.9.0"; do
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
printf "${NOTE} Removing existing %s directory...\\n" "$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 "\n%.0s" {1..1}
|
||||
# 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 "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/ags_v1.9.0"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then
|
||||
cd ags_v1.9.0 || exit 1
|
||||
npm install
|
||||
meson setup "$BUILD_DIR"
|
||||
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then
|
||||
meson setup build
|
||||
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"
|
||||
|
||||
# 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"
|
||||
fi
|
||||
# Move logs to Install-Logs directory
|
||||
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
|
||||
mv "$MLOG" ../Install-Logs/ || true
|
||||
cd ..
|
||||
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"
|
||||
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
|
||||
mv "$MLOG" ../Install-Logs/ || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@ -41,22 +41,19 @@ MLOG="install-$(date +%d-%H%M%S)_aquamarine.log"
|
||||
# Installation of dependencies
|
||||
printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}"
|
||||
|
||||
# Check if aquamarinedirectory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/aquamarine"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if aquamarinedirectory exists and remove it
|
||||
if [ -d "aquamarine" ]; then
|
||||
rm -rf "aquamarine"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n"
|
||||
if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/aquamarine"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git; then
|
||||
cd aquamarine || exit 1
|
||||
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
|
||||
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
|
||||
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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -24,16 +24,15 @@ fi
|
||||
# Check if Hyprland-Dots exists
|
||||
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots for Debian${RESET}....\n"
|
||||
|
||||
# Check if Hyprland-Dots exists (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/Hyprland-Dots-Debian"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
cd "$SRC_DIR"
|
||||
# Check if Hyprland-Dots exists
|
||||
if [ -d Hyprland-Dots-Debian ]; then
|
||||
cd Hyprland-Dots-Debian
|
||||
git stash && git pull
|
||||
chmod +x copy.sh
|
||||
./copy.sh
|
||||
else
|
||||
if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots Hyprland-Dots-Debian; then
|
||||
cd Hyprland-Dots-Debian || exit 1
|
||||
chmod +x copy.sh
|
||||
./copy.sh
|
||||
else
|
||||
|
||||
@ -29,19 +29,18 @@ for PKG1 in "${engine[@]}"; do
|
||||
install_package "$PKG1" "$LOG"
|
||||
done
|
||||
|
||||
# Check if the directory exists and delete it if present (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/GTK-themes-icons"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if the directory exists and delete it if present
|
||||
if [ -d "GTK-themes-icons" ]; then
|
||||
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
|
||||
|
||||
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
|
||||
cd "$SRC_DIR"
|
||||
if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
|
||||
cd GTK-themes-icons
|
||||
chmod +x 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"
|
||||
else
|
||||
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -45,28 +45,25 @@ for PKG1 in "${cursor[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if hyprcursor folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprcursor"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if hyprcursor folder exists and remove it
|
||||
if [ -d "hyprcursor" ]; then
|
||||
printf "${NOTE} Removing existing hyprcursor folder...\n"
|
||||
rm -rf "$SRC_DIR"
|
||||
rm -rf "hyprcursor"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${NOTE} Installing hyprcursor...\n"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprcursor"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
|
||||
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 "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $MLOG ../Install-Logs/ || true
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -53,22 +53,19 @@ for PKG1 in "${hyprgraphics[@]}"; do
|
||||
done
|
||||
printf "\n%.0s" {1..1}
|
||||
|
||||
# Check if hyprgraphics directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprgraphics"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# 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 "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprgraphics"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 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_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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -37,27 +37,24 @@ for PKG1 in "${idle[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if hypridle directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hypridle"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hypridle directory exists and remove it
|
||||
if [ -d "hypridle" ]; then
|
||||
rm -rf "hypridle"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hypridle"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR"
|
||||
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
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git; then
|
||||
cd hypridle || exit 1
|
||||
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
|
||||
cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
|
||||
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
|
||||
printf "${OK} ${MAGENTA}hypridle $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
mv $MLOG "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $MLOG ../Install-Logs/ || true
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -63,16 +63,15 @@ done
|
||||
|
||||
printf "\n%.0s" {1..1}
|
||||
|
||||
# Check if hyprland-guiutils directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprland-guiutils"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hyprland-guiutils directory exists and remove it
|
||||
if [ -d "hyprland-guiutils" ]; then
|
||||
rm -rf "hyprland-guiutils"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
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
|
||||
cd "$SRC_DIR" || exit 1
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git; then
|
||||
cd hyprland-guiutils || exit 1
|
||||
# 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 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 CPPFLAGS="-I/usr/local/include ${CPPFLAGS:-}"
|
||||
|
||||
BUILD_DIR="$BUILD_ROOT/hyprland-guiutils"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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`
|
||||
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_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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -41,21 +41,18 @@ MLOG="install-$(date +%d-%H%M%S)_protocols2.log"
|
||||
# Installation of dependencies
|
||||
printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}"
|
||||
|
||||
# Check if hyprland-protocols directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprland-protocols"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hyprland-protocols directory exists and remove it
|
||||
if [ -d "hyprland-protocols" ]; then
|
||||
rm -rf "hyprland-protocols"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
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
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprland-protocols"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
meson setup "$BUILD_DIR"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git; then
|
||||
cd hyprland-protocols || exit 1
|
||||
meson setup build
|
||||
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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -61,22 +61,19 @@ done
|
||||
|
||||
printf "\n%.0s" {1..1}
|
||||
|
||||
# Check if hyprland-qt-support directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprland-qt-support"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hyprland-qt-support directory exists and remove it
|
||||
if [ -d "hyprland-qt-support" ]; then
|
||||
rm -rf "hyprland-qt-support"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
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
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprland-qt-support"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git; then
|
||||
cd hyprland-qt-support || 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_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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
# Main Hyprland Package#
|
||||
|
||||
#specific branch or release
|
||||
tag="v0.53.3"
|
||||
tag="v0.53.0"
|
||||
# Auto-source centralized tags if env is unset
|
||||
if [ -z "${HYPRLAND_TAG:-}" ]; then
|
||||
TAGS_FILE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/hypr-tags.env"
|
||||
@ -73,17 +73,14 @@ printf "\n%.0s" {1..1}
|
||||
# Clone, build, and install Hyprland using Cmake
|
||||
printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n"
|
||||
|
||||
# Check if Hyprland folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/Hyprland"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if Hyprland folder exists and remove it
|
||||
if [ -d "Hyprland" ]; then
|
||||
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
|
||||
|
||||
if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland" "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprland"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then
|
||||
cd "Hyprland" || exit 1
|
||||
|
||||
# Compatibility shim for toolchains without std::vector::{insert_range,append_range}
|
||||
RANGE_HDR="$(pwd)/hypr_range_compat.hpp"
|
||||
@ -132,26 +129,13 @@ EOF
|
||||
fi
|
||||
|
||||
# Apply patch only if it applies cleanly; otherwise skip
|
||||
if [ -f "$PARENT_DIR/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
|
||||
patch -p1 <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch"
|
||||
if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then
|
||||
if patch -p1 --dry-run <../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then
|
||||
patch -p1 <../assets/0001-fix-hyprland-compile-issue.patch
|
||||
else
|
||||
echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping."
|
||||
fi
|
||||
fi
|
||||
|
||||
# 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
|
||||
# You can force system libs by exporting USE_SYSTEM_HYPRLIBS=1 before running this script.
|
||||
USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1}
|
||||
@ -195,121 +179,19 @@ EOF
|
||||
-DCMAKE_CXX_FLAGS="-Wno-unknown-warning-option -include ${RANGE_HDR}"
|
||||
"${SYSTEM_FLAGS[@]}"
|
||||
)
|
||||
cmake -S . -B "$BUILD_DIR" "${CONFIG_FLAGS[@]}"
|
||||
cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
|
||||
cmake -S . -B build "${CONFIG_FLAGS[@]}"
|
||||
cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
|
||||
|
||||
if [ $DO_INSTALL -eq 1 ]; then
|
||||
if sudo cmake --install "$BUILD_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"
|
||||
|
||||
# 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
|
||||
echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
else
|
||||
echo "${NOTE} DRY RUN: Skipping installation of Hyprland $tag."
|
||||
fi
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -41,22 +41,19 @@ MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log"
|
||||
# Installation of dependencies
|
||||
printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}"
|
||||
|
||||
# Check if hyprlang directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprlang"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hyprlang directory exists and remove it
|
||||
if [ -d "hyprlang" ]; then
|
||||
rm -rf "hyprlang"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprlang"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 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_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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -46,27 +46,24 @@ for PKG1 in "${build_dep[@]}"; do
|
||||
build_dep "$PKG1" "$LOG"
|
||||
done
|
||||
|
||||
# Check if hyprlock directory exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprlock"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if hyprlock directory exists and remove it
|
||||
if [ -d "hyprlock" ]; then
|
||||
rm -rf "hyprlock"
|
||||
fi
|
||||
|
||||
# Clone and build hyprlock
|
||||
printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprlock"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR"
|
||||
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
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git; then
|
||||
cd hyprlock || exit 1
|
||||
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
|
||||
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
|
||||
if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
|
||||
printf "${OK} ${YELLOW}hyprlock $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
mv $MLOG "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $MLOG ../Install-Logs/ || true
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -43,28 +43,25 @@ for PKG1 in "${polkitagent[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if hyprpolkitagent folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprpolkitagent"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if hyprpolkitagent folder exists and remove it
|
||||
if [ -d "hyprpolkitagent" ]; then
|
||||
printf "${NOTE} Removing existing hyprpolkitagent folder...\n"
|
||||
rm -rf "$SRC_DIR"
|
||||
rm -rf "hyprpolkitagent"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${NOTE} Installing hyprpolkitagent...\n"
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprpolkitagent"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
|
||||
if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git; then
|
||||
cd hyprpolkitagent || 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} hyprpolkitagent installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for hyprpolkitagent." 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
mv $MLOG "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $MLOG ../Install-Logs/ || true
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprpolkitagent." 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -40,20 +40,18 @@ MLOG="install-$(date +%d-%H%M%S)_hyprtoolkit2.log"
|
||||
# Clone, build, and install using Cmake
|
||||
printf "${NOTE} Cloning hyprtoolkit...\n"
|
||||
|
||||
# Check if hyprtoolkit folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprtoolkit"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if hyprtoolkit folder exists and remove it
|
||||
if [ -d "hyprtoolkit" ]; then
|
||||
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
|
||||
if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git" "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprtoolkit"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then
|
||||
cd "hyprtoolkit" || 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_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"
|
||||
else
|
||||
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
|
||||
echo "${NOTE} DRY RUN: Skipping installation of hyprtoolkit $tag."
|
||||
fi
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprtoolkit" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -43,20 +43,18 @@ MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log"
|
||||
# Clone, build, and install using Cmake
|
||||
printf "${NOTE} Cloning hyprutils...\n"
|
||||
|
||||
# Check if hyprutils folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprutils"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if hyprutils folder exists and remove it
|
||||
if [ -d "hyprutils" ]; then
|
||||
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
|
||||
if git clone -b $tag "https://github.com/hyprwm/hyprutils.git" "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprutils"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
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 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_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"
|
||||
else
|
||||
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
|
||||
echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag."
|
||||
fi
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -55,23 +55,20 @@ done
|
||||
|
||||
printf "${NOTE} Installing hyprwayland-scanner...\n"
|
||||
|
||||
# Check if hyprwayland-scanner folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprwayland-scanner"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if hyprwayland-scanner folder exists and remove it
|
||||
if [ -d "hyprwayland-scanner" ]; then
|
||||
printf "${NOTE} Removing existing hyprwayland-scanner folder...\n"
|
||||
rm -rf "$SRC_DIR"
|
||||
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 "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprwayland-scanner"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR"
|
||||
cmake --build "$BUILD_DIR" -j `nproc`
|
||||
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_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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -61,18 +61,15 @@ MLOG="install-$(date +%d-%H%M%S)_hyprwire2.log"
|
||||
|
||||
printf "${NOTE} Installing hyprwire $tag...\n"
|
||||
|
||||
# Remove existing tree if present (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/hyprwire"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Remove existing tree if present
|
||||
if [ -d "hyprwire" ]; then
|
||||
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
|
||||
|
||||
# Clone and build
|
||||
if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/hyprwire"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then
|
||||
cd hyprwire || exit 1
|
||||
|
||||
# Decide whether we need the append_range compatibility shim.
|
||||
# On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch.
|
||||
@ -134,14 +131,14 @@ EOF
|
||||
# Absolute path for forced include
|
||||
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
|
||||
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
|
||||
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 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"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for hyprwire $tag" 2>&1 | tee -a "$MLOG"
|
||||
@ -149,7 +146,7 @@ EOF
|
||||
else
|
||||
echo "${NOTE} DRY RUN: Skipping installation of hyprwire $tag."
|
||||
fi
|
||||
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/Install-Logs/"
|
||||
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for hyprwire $tag" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -117,7 +117,7 @@ done
|
||||
# Build Google Breakpad from source if pkg-config 'breakpad' is missing
|
||||
if ! pkg-config --exists breakpad; then
|
||||
note "Building Google Breakpad from source..."
|
||||
BP_DIR="$SRC_ROOT/breakpad"
|
||||
BP_DIR="$PARENT_DIR/.thirdparty/breakpad"
|
||||
rm -rf "$BP_DIR"
|
||||
mkdir -p "$BP_DIR"
|
||||
(
|
||||
@ -166,7 +166,7 @@ PCEOF
|
||||
fi
|
||||
|
||||
# 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
|
||||
note "Removing existing $SRC_DIR"
|
||||
rm -rf "$SRC_DIR"
|
||||
@ -183,33 +183,32 @@ fi
|
||||
# Configure with Ninja; enable RelWithDebInfo, leave features ON (deps installed above)
|
||||
CMAKE_FLAGS=(
|
||||
-GNinja
|
||||
-B build
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
-DDISTRIBUTOR="Debian-Hyprland installer"
|
||||
)
|
||||
|
||||
note "Configuring Quickshell (CMake)..."
|
||||
# Use explicit source/build dirs and preserve cmake exit code with pipefail
|
||||
BUILD_DIR="$BUILD_ROOT/quickshell"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
if ! cmake -S . -B "$BUILD_DIR" "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then
|
||||
if ! cmake -S . -B build "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then
|
||||
echo "${ERROR} CMake configure failed. See log: $MLOG" | tee -a "$LOG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 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"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -68,29 +68,25 @@ 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 (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/rofi-$rofi_tag"
|
||||
TAR_PATH="$SRC_ROOT/rofi-$rofi_tag.tar.gz"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# 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 -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"
|
||||
tar -C "$SRC_ROOT" -xf "$TAR_PATH"
|
||||
tar xf rofi-$rofi_tag.tar.gz
|
||||
fi
|
||||
|
||||
cd "$SRC_DIR" || exit 1
|
||||
cd rofi-$rofi_tag || exit 1
|
||||
|
||||
# Proceed with the installation steps
|
||||
BUILD_DIR="$BUILD_ROOT/rofi-$rofi_tag"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
if meson setup "$BUILD_DIR" && ninja -C "$BUILD_DIR" ; then
|
||||
if sudo ninja -C "$BUILD_DIR" install 2>&1 | tee -a "$MLOG"; then
|
||||
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"
|
||||
@ -100,10 +96,10 @@ else
|
||||
fi
|
||||
|
||||
# Move logs to Install-Logs directory
|
||||
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
|
||||
mv "$MLOG" ../Install-Logs/ || true
|
||||
cd .. || exit 1
|
||||
|
||||
# clean up
|
||||
rm -rf "$TAR_PATH"
|
||||
rm -rf rofi-$rofi_tag.tar.gz
|
||||
|
||||
printf "\n%.0s" {1..2}
|
||||
|
||||
@ -38,13 +38,11 @@ sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
|
||||
install_and_log() {
|
||||
local project_name="$1"
|
||||
local git_url="$2"
|
||||
local src_dir="$SRC_ROOT/$project_name"
|
||||
|
||||
printf "${NOTE} Installing $project_name\n"
|
||||
|
||||
rm -rf "$src_dir"
|
||||
if git clone "$git_url" "$src_dir"; then
|
||||
cd "$src_dir" || exit 1
|
||||
if git clone "$git_url" "$project_name"; then
|
||||
cd "$project_name" || exit 1
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 2>&1 | tee -a "$LOG"
|
||||
source "$HOME/.cargo/env"
|
||||
make
|
||||
@ -60,7 +58,7 @@ install_and_log() {
|
||||
fi
|
||||
|
||||
#moving logs into main install-logs
|
||||
mv $LOG "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $LOG ../Install-Logs/ || true
|
||||
cd - || exit 1
|
||||
else
|
||||
echo -e "${ERROR} Cloning $project_name from $git_url failed."
|
||||
|
||||
@ -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"
|
||||
fi
|
||||
|
||||
# Check if $theme_name directory exists in build/src and remove if it does
|
||||
SRC_DIR="$SRC_ROOT/$theme_name"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Check if $theme_name directory exists in the current directory and remove if it does
|
||||
if [ -d "$theme_name" ]; then
|
||||
rm -rf "$theme_name"
|
||||
echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG"
|
||||
fi
|
||||
|
||||
# Clone the repository
|
||||
if git clone --depth=1 "$source_theme" "$SRC_DIR"; then
|
||||
if [ ! -d "$SRC_DIR" ]; then
|
||||
if git clone --depth=1 "$source_theme" "$theme_name"; then
|
||||
if [ ! -d "$theme_name" ]; then
|
||||
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
|
||||
fi
|
||||
|
||||
@ -51,7 +50,7 @@ if git clone --depth=1 "$source_theme" "$SRC_DIR"; then
|
||||
fi
|
||||
|
||||
# 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
|
||||
sddm_conf="/etc/sddm.conf"
|
||||
|
||||
@ -49,14 +49,13 @@ done
|
||||
|
||||
printf "\n%.0s" {1..2}
|
||||
|
||||
# Check if swww directory exists (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/swww"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
# Check if swww directory exists
|
||||
if [ -d "swww" ]; then
|
||||
cd swww || exit 1
|
||||
git pull origin main 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git; then
|
||||
cd swww || exit 1
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
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"
|
||||
|
||||
# Moving logs into main Install-Logs
|
||||
mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
|
||||
mv "$MLOG" ../Install-Logs/ || true
|
||||
cd - || exit 1
|
||||
|
||||
printf "\n%.0s" {1..2}
|
||||
|
||||
@ -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}"
|
||||
|
||||
# Clean previous clone (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/wayland-protocols"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
rm -rf "$SRC_DIR"
|
||||
# Clean previous clone
|
||||
if [ -d "wayland-protocols" ]; then
|
||||
rm -rf "wayland-protocols"
|
||||
fi
|
||||
|
||||
# Clone and build (meson)
|
||||
# Upstream: https://gitlab.freedesktop.org/wayland/wayland-protocols.git
|
||||
printf "${INFO} Installing ${YELLOW}wayland-protocols $tag${RESET} ...\n"
|
||||
repo_url="https://gitlab.freedesktop.org/wayland/wayland-protocols.git"
|
||||
if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then
|
||||
cd wayland-protocols || exit 1
|
||||
# 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
|
||||
checked_out=0
|
||||
@ -68,12 +67,10 @@ if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then
|
||||
exit 1
|
||||
fi
|
||||
# Install to /usr/local so pkg-config can prefer it over distro /usr
|
||||
BUILD_DIR="$BUILD_ROOT/wayland-protocols"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
meson setup "$BUILD_DIR" --prefix=/usr/local
|
||||
meson compile -C "$BUILD_DIR" -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
|
||||
meson setup build --prefix=/usr/local
|
||||
meson compile -C build -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
|
||||
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"
|
||||
else
|
||||
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."
|
||||
fi
|
||||
# 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 ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -48,26 +48,23 @@ done
|
||||
# Clone, build, and install XDPH
|
||||
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)
|
||||
SRC_DIR="$SRC_ROOT/xdg-desktop-portal-hyprland"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if xdg-desktop-portal-hyprland folder exists and remove it
|
||||
if [ -d "xdg-desktop-portal-hyprland" ]; then
|
||||
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
|
||||
|
||||
if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git" "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/xdg-desktop-portal-hyprland"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR"
|
||||
cmake --build "$BUILD_DIR"
|
||||
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG"; then
|
||||
if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then
|
||||
cd "xdg-desktop-portal-hyprland" || exit 1
|
||||
cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build
|
||||
cmake --build build
|
||||
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
|
||||
printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
# 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 ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -40,28 +40,25 @@ for PKG1 in "${xkbcommon[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if xkbcommon folder exists and remove it (under build/src)
|
||||
SRC_DIR="$SRC_ROOT/libxkbcommon"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
# Check if xkbcommon folder exists and remove it
|
||||
if [ -d "libxkbcommon" ]; then
|
||||
printf "${NOTE} Removing existing libxkbcommon folder...\n"
|
||||
rm -rf "$SRC_DIR"
|
||||
rm -rf "libxkbcommon"
|
||||
fi
|
||||
|
||||
# Clone and build
|
||||
printf "${NOTE} Installing xkbcommon...\n"
|
||||
if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git "$SRC_DIR"; then
|
||||
cd "$SRC_DIR" || exit 1
|
||||
BUILD_DIR="$BUILD_ROOT/libxkbcommon"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
meson setup "$BUILD_DIR" --libdir=/usr/local/lib
|
||||
meson compile -C "$BUILD_DIR"
|
||||
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
|
||||
if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git; then
|
||||
cd libxkbcommon || exit 1
|
||||
meson setup build --libdir=/usr/local/lib
|
||||
meson compile -C build
|
||||
if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
|
||||
printf "${OK} xkbcommon installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||
else
|
||||
echo -e "${ERROR} Installation failed for xkbcommon." 2>&1 | tee -a "$MLOG"
|
||||
fi
|
||||
#moving the addional logs to Install-Logs directory
|
||||
mv $MLOG "$PARENT_DIR/Install-Logs/" || true
|
||||
mv $MLOG ../Install-Logs/ || true
|
||||
cd ..
|
||||
else
|
||||
echo -e "${ERROR} Download failed for xkbcommon." 2>&1 | tee -a "$LOG"
|
||||
|
||||
@ -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} ..."
|
||||
|
||||
SRC_DIR="$SRC_ROOT/pokemon-colorscripts"
|
||||
if [ -d "$SRC_DIR" ]; then
|
||||
cd "$SRC_DIR" && git pull && sudo ./install.sh && cd ..
|
||||
if [ -d "pokemon-colorscripts" ]; then
|
||||
cd pokemon-colorscripts && git pull && sudo ./install.sh && cd ..
|
||||
else
|
||||
git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git "$SRC_DIR" &&
|
||||
cd "$SRC_DIR" && sudo ./install.sh && cd ..
|
||||
git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git &&
|
||||
cd pokemon-colorscripts && sudo ./install.sh && cd ..
|
||||
fi
|
||||
|
||||
# Check if ~/.zshrc exists
|
||||
|
||||
188
install.sh
188
install.sh
@ -1,6 +1,9 @@
|
||||
#!/bin/bash
|
||||
# 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
|
||||
|
||||
@ -210,6 +213,59 @@ clean_existing_hyprland() {
|
||||
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)
|
||||
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!" \
|
||||
15 80
|
||||
|
||||
# Ask if the user wants to proceed (source-only build)
|
||||
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?"
|
||||
# Ask user to choose build method
|
||||
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?" \
|
||||
--yesno "$proceed_msg" 15 60; then
|
||||
@ -480,59 +552,71 @@ echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
|
||||
sleep 1
|
||||
execute_script "fonts.sh"
|
||||
|
||||
# Build from source (only 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
|
||||
# Build method selection: from source or pre-built packages
|
||||
if [ "$build_method" = "packages" ]; then
|
||||
echo "${INFO} Installing from ${SKY_BLUE}pre-built packages${RESET}..." | tee -a "$LOG"
|
||||
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
|
||||
./refresh-hypr-tags.sh
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG"
|
||||
sleep 1
|
||||
execute_script "01-hypr-pkgs.sh"
|
||||
sleep 1
|
||||
execute_script "hyprutils.sh"
|
||||
sleep 1
|
||||
execute_script "hyprlang.sh"
|
||||
sleep 1
|
||||
execute_script "hyprcursor.sh"
|
||||
sleep 1
|
||||
execute_script "hyprwayland-scanner.sh"
|
||||
sleep 1
|
||||
execute_script "hyprgraphics.sh"
|
||||
sleep 1
|
||||
execute_script "aquamarine.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-qt-support.sh"
|
||||
sleep 1
|
||||
execute_script "hyprtoolkit.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-guiutils.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-protocols.sh"
|
||||
sleep 1
|
||||
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
|
||||
execute_script "wayland-protocols-src.sh"
|
||||
sleep 1
|
||||
execute_script "xkbcommon.sh"
|
||||
sleep 1
|
||||
# Build hyprwire before Hyprland (required by Hyprland >= 0.53)
|
||||
execute_script "hyprwire.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland.sh"
|
||||
sleep 1
|
||||
execute_script "hyprpolkitagent.sh"
|
||||
sleep 1
|
||||
execute_script "wallust.sh"
|
||||
sleep 1
|
||||
execute_script "swww.sh"
|
||||
sleep 1
|
||||
execute_script "rofi-wayland.sh"
|
||||
sleep 1
|
||||
execute_script "hyprlock.sh"
|
||||
sleep 1
|
||||
execute_script "hypridle.sh"
|
||||
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG"
|
||||
sleep 1
|
||||
execute_script "01-hypr-pkgs.sh"
|
||||
sleep 1
|
||||
execute_script "hyprutils.sh"
|
||||
sleep 1
|
||||
execute_script "hyprlang.sh"
|
||||
sleep 1
|
||||
execute_script "hyprcursor.sh"
|
||||
sleep 1
|
||||
execute_script "hyprwayland-scanner.sh"
|
||||
sleep 1
|
||||
execute_script "hyprgraphics.sh"
|
||||
sleep 1
|
||||
execute_script "aquamarine.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-qt-support.sh"
|
||||
sleep 1
|
||||
execute_script "hyprtoolkit.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-guiutils.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland-protocols.sh"
|
||||
sleep 1
|
||||
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
|
||||
execute_script "wayland-protocols-src.sh"
|
||||
sleep 1
|
||||
execute_script "xkbcommon.sh"
|
||||
sleep 1
|
||||
# Build hyprwire before Hyprland (required by Hyprland >= 0.53)
|
||||
execute_script "hyprwire.sh"
|
||||
sleep 1
|
||||
execute_script "hyprland.sh"
|
||||
sleep 1
|
||||
execute_script "hyprpolkitagent.sh"
|
||||
sleep 1
|
||||
execute_script "wallust.sh"
|
||||
sleep 1
|
||||
execute_script "swww.sh"
|
||||
sleep 1
|
||||
execute_script "rofi-wayland.sh"
|
||||
sleep 1
|
||||
execute_script "hyprlock.sh"
|
||||
sleep 1
|
||||
execute_script "hypridle.sh"
|
||||
fi
|
||||
|
||||
# Ensure /usr/local/lib is in the dynamic linker search path.
|
||||
# Many Hypr* components install shared libraries into /usr/local/lib; without this,
|
||||
|
||||
@ -53,7 +53,7 @@ done
|
||||
if [[ ! -f "$TAGS_FILE" ]]; then
|
||||
cat > "$TAGS_FILE" <<'EOF'
|
||||
# Default Hyprland stack versions
|
||||
HYPRLAND_TAG=v0.53.3
|
||||
HYPRLAND_TAG=v0.53.1
|
||||
AQUAMARINE_TAG=v0.10.0
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
|
||||
@ -103,7 +103,7 @@ ensure_tags_file() {
|
||||
cat >"$TAGS_FILE" <<'EOF'
|
||||
# Default Hyprland stack versions
|
||||
# (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
|
||||
HYPRUTILS_TAG=v0.11.0
|
||||
HYPRLANG_TAG=v0.6.8
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user