Compare commits

...

41 Commits

Author SHA1 Message Date
Don Williams
47145301fe Updated CHANGELOG with note about debian stable support
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	renamed:    CHANGELOGS.md -> CHANGELOG.md
2026-01-10 19:44:59 -05:00
Don Williams
c2a7c16cf4 Major Update Debian trixie 0.53.1 support new build flags
Trixie needs small patches to build vs. testing+
 Script now detects that. But some debian based distros might mask name
 There is a flag `--force-trixie` to include the fixes

 Updated the Install-Upgrade documents with the specifics

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   CHANGELOGS.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   README.md
	modified:   hypr-tags.env
	deleted:    hypr-tags.env-v.053
	modified:   install.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2026-01-10 00:49:05 -05:00
Don Williams
1681658de3 Fixed hyprland 0.53 build for trixie found bug in xdph script
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprland.sh
	modified:   xdph.sh
	modified:   ../install.sh
	modified:   ../update-hyprland.sh
2026-01-10 00:18:44 -05:00
Don Williams
de128b6fd4 Added selectable shim for hyprwire to allow building on trixie
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2026-01-09 23:38:09 -05:00
Don Williams
8e507a9fec Fixing build scrpt to work onm debian stable
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/hyprland-guiutils.sh
2026-01-09 23:14:35 -05:00
Donald Williams
131fc3b370
Merge branch 'main' into development 2026-01-02 21:43:16 -05:00
Don Williams
8d2d0587ba Fixed update-hyprland refresh-hypr-tags --force-override
It now assumes --fetch-latest
Small formatting fixes
Now shows version to upgrade too and pause to allow review

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   CHANGELOGS.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
    modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   dry-run-build.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2026-01-02 20:51:28 -05:00
Don Williams
7afba04e3a Pinned version to 52.2 for debian stable support
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   CHANGELOGS.md
	deleted:    CHANGES_SUMMARY.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   hypr-tags.env
	new file:   hypr-tags.env-v.053
	modified:   update-hyprland.sh
2026-01-02 19:32:19 -05:00
Don Williams
7434ceac25 UPD: Before ubunmtu was out-of-date, now can run HL dots
previsously ubuntu was older HL. Now it's up to date and can
also run current dotfiles. Removed old statement saying ubuntu could not
run current dotfiles.

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   README.md
2026-01-01 21:42:45 -05:00
Don Williams
e2010617a5 Updated README re: NVIDIA drivers & HL 0.52.2+ on Trixie
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   README.md
2026-01-01 21:39:37 -05:00
Don Williams
0bdf84c919 Trying to get trixie to build
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-12-29 16:04:35 -05:00
Don Williams
55df84a03a Fixing update-hyprland
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   update-hyprland.sh
2025-12-29 15:46:56 -05:00
Don Williams
370f7de9e4 Fixing update-hyprland (again) to use env-tags
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   update-hyprland.sh
2025-12-29 13:30:38 -05:00
Don Williams
178285a759 Fixing update-hyprland to support tags
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/hyprutils.sh
	modified:   update-hyprland.sh
2025-12-29 13:04:03 -05:00
Don Williams
118d1509bb Scripts has hardcoded versions vs. pulling hypr-env
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland-guiutils.sh
	modified:   install-scripts/hyprland-protocols.sh
	modified:   install-scripts/hyprland-qt-support.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprtoolkit.sh
	modified:   install-scripts/hyprutils.sh
	modified:   install-scripts/hyprwayland-scanner.sh
	modified:   install-scripts/hyprwire.sh
	modified:   install-scripts/wayland-protocols-src.sh
2025-12-29 12:54:31 -05:00
Don Williams
fd832ef277 Hyprland tag set to 52.2 2025-12-29 12:47:34 -05:00
Don Williams
eef41a7104 Fixind SED error 2025-12-29 12:46:29 -05:00
Don Williams
b4095e471e More build errors to fix
On branch development
 Your branch is ahead of 'origin/development' by 1 commit.
   (use "git push" to publish your local commits)

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-12-29 12:42:50 -05:00
Don Williams
90c393ecd8 Still getting build errors with hyprland
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-12-29 12:32:45 -05:00
Don Williams
31c19f6364 Fixing build error on hyprland
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprland.sh
2025-12-29 12:23:26 -05:00
Don Williams
92156e9103 Updated tags for 0.53.0
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   ../hypr-tags.env
	modified:   hyprland.sh
2025-12-29 12:19:40 -05:00
Don Williams
b2170cb081 Still getting append errors trying another fix
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 12:04:26 -05:00
Don Williams
a8f6e3c530 Fixing SED error. (I Hate sed)
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 12:02:40 -05:00
Don Williams
89a837d3c7 Still fixing hyprwire build errors
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 12:00:53 -05:00
Don Williams
ef0224a2b6 fixing hyprwire build error
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hyprwire.sh
2025-12-29 11:58:58 -05:00
Don Williams
8c922dddef Fixing script permissions 2025-12-29 11:54:41 -05:00
Don Williams
f3725662ba Updating hyprwire build order
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-12-29 11:53:30 -05:00
Don Williams
2357e80e00 Adding hyprwire depdency
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hypr-tags.env
	new file:   install-scripts/hyprwire.sh
	modified:   install.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2025-12-29 11:46:34 -05:00
Don Williams
b1cca5a898 libmuparser-dev is now needed
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/00-dependencies.sh
	modified:   install-scripts/hyprland.sh
2025-12-29 11:39:31 -05:00
Don Williams
87a35febca Fixed typo in script
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   refresh-hypr-tags.sh
2025-12-29 11:24:55 -05:00
Don Williams
f1bec15eb1 Added check for debian trixie in quickshell install
Trixe doesn't support overview seems like the QT libs are too old

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/quickshell.sh
2025-12-25 23:33:41 -05:00
Don Williams
bb53e1a32e Adding shim for missing QML properies
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/quickshell.sh
2025-12-25 22:08:21 -05:00
Don Williams
8826595926 Fixing QML import pathing
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/quickshell.sh
2025-12-25 21:57:05 -05:00
Don Williams
90dc9c7883 Added missing depdendencies to debian quickshell
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/quickshell.sh
2025-12-25 21:34:06 -05:00
Don Williams
b14bb03c0f Forgot to add quickshell as install option
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install.sh
2025-12-25 21:01:09 -05:00
Don Williams
37a7652ccf Ported ubuntu quickshell install script to debian
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	new file:   install-scripts/quickshell.sh
2025-12-25 20:59:01 -05:00
Don Williams
9044cc4986 Removed files related to debian pacakge building
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	deleted:    BUILD_METHOD_OPTIONS.md
	deleted:    GIT_STATUS.md
	deleted:    INSTALL_METHOD_GUIDE.md
	deleted:    PACKAGE_INSTALL_TROUBLESHOOTING.md
	deleted:    QUICK_START.txt
2025-12-13 18:07:39 -05:00
Don Williams
d9ca7dabf2 Fix package installation path handling: use full paths instead of cd to preserve working directory 2025-12-13 06:16:47 -05:00
Don Williams
c22055e60a Add comprehensive troubleshooting guide for package installation issues 2025-12-13 06:11:43 -05:00
Don Williams
09ab32b96f Fix package installation: skip plugins and debug symbols by default, improve dependency handling 2025-12-13 06:11:11 -05:00
Don Williams
a7c6d8da50 Testing build from debian packages
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	new file:   BUILD_METHOD_OPTIONS.md
	new file:   CHANGES_SUMMARY.md
	new file:   GIT_STATUS.md
	new file:   INSTALL_METHOD_GUIDE.md
	new file:   QUICK_START.txt
	modified:   install.sh
2025-12-13 06:00:56 -05:00
14 changed files with 705 additions and 154 deletions

View File

@ -1,14 +1,26 @@
## CHANGELOGS ## CHANGELOG
## 02 January 2026 ## 02 January 2026
### > 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
### > Testing with NVIDIA has not yet been done
### > Only Intel, AMD, and in VMs
- Updated: - Updated:
- `update-hyprland.sh` pinned to v0.52.2 - Default Hyprland stack versions now target 0.53.1 (see `hypr-tags.env`)
- Currently only Debian testing and SID branches build v0.53+ - Added trixie compatibility mode flags:
- Added `--force-update` to refresh the pacakge versions if pinned - `--build-trixie` / `--no-trixie` (auto-detected on Debian 13)
- This is only for debian testing+ versions - Added `--force-update` to refresh pinned package versions
- `update-hyprland.sh` added `-/--help` - `update-hyprland.sh` added `-/--help`
- documentation for updating hyprland - Documentation for updating hyprland
- Added:
- Version refresh improvements for `refresh-hypr-tags.sh` (accepts `--get-latest`, retries transient GitHub errors)
- Fixed:
- `--force-update` implies `--fetch-latest`
## 10 December 2025 ## 10 December 2025

View File

@ -6,13 +6,15 @@ Esta guía cubre los flujos de instalación y actualización mejorados para el p
1. [Resumen](#resumen) 1. [Resumen](#resumen)
2. [Nuevas Funciones](#nuevas-funciones) 2. [Nuevas Funciones](#nuevas-funciones)
3. [Gestión Central de Versiones](#gestión-central-de-versiones) 3. [Referencia de Flags](#referencia-de-flags)
4. [Métodos de Instalación](#métodos-de-instalación) 4. [Modo de Compatibilidad Debian 13 (Trixie)](#modo-de-compatibilidad-debian-13-trixie)
5. [Flujos de Actualización](#flujos-de-actualización) 5. [Gestión Central de Versiones](#gestión-central-de-versiones)
6. [Pruebas con Dry-Run](#pruebas-con-dry-run) 6. [Métodos de Instalación](#métodos-de-instalación)
7. [Gestión de Logs](#gestión-de-logs) 7. [Flujos de Actualización](#flujos-de-actualización)
8. [Uso Avanzado](#uso-avanzado) 8. [Pruebas con Dry-Run](#pruebas-con-dry-run)
9. [Solución de Problemas](#solución-de-problemas) 9. [Gestión de Logs](#gestión-de-logs)
10. [Uso Avanzado](#uso-avanzado)
11. [Solución de Problemas](#solución-de-problemas)
## Resumen ## Resumen
@ -27,6 +29,7 @@ El proyecto Debian-Hyprland ahora incluye herramientas de automatización y gest
## Nuevas Funciones ## Nuevas Funciones
### install.sh mejorado ### install.sh mejorado
El script original ahora: El script original ahora:
- **Unifica versiones**: Lee `hypr-tags.env` y exporta variables de versión a todos los módulos - **Unifica versiones**: Lee `hypr-tags.env` y exporta variables de versión a todos los módulos
@ -36,48 +39,126 @@ El script original ahora:
### Nuevos Scripts ### Nuevos Scripts
#### update-hyprland.sh #### update-hyprland.sh
Herramienta enfocada para gestionar y compilar solo el stack de Hyprland: Herramienta enfocada para gestionar y compilar solo el stack de Hyprland:
```bash ```bash
chmod +x ./update-hyprland.sh chmod +x ./update-hyprland.sh
./update-hyprland.sh --help # Ver todas las opciones ./update-hyprland.sh --help # Ver todas las opciones
``` ```
Flags clave: Flags clave:
- --fetch-latest: obtiene las últimas etiquetas desde GitHub - --fetch-latest: obtiene las últimas etiquetas desde GitHub
- --force-update: sobrescribe valores fijados en hypr-tags.env (equivalente a FORCE=1) - --force-update: sobrescribe valores fijados en hypr-tags.env (equivalente a FORCE=1)
- --dry-run / --install: solo compilar o compilar+instalar - --dry-run / --install: solo compilar o compilar+instalar
- --only / --skip: limitar qué módulos se ejecutan - --only / --skip: limitar qué módulos se ejecutan
- --build-trixie / --no-trixie: habilita/deshabilita el modo de compatibilidad Debian 13 (auto-detectado por defecto)
#### dry-run-build.sh #### dry-run-build.sh
Herramienta de pruebas que compila componentes sin instalarlos: Herramienta de pruebas que compila componentes sin instalarlos:
```bash ```bash
chmod +x ./dry-run-build.sh chmod +x ./dry-run-build.sh
./dry-run-build.sh --help # Ver todas las opciones ./dry-run-build.sh --help # Ver todas las opciones
``` ```
#### wayland-protocols-src.sh #### wayland-protocols-src.sh
Módulo que compila wayland-protocols desde el origen para satisfacer los requisitos de Hyprland 0.51.x. Módulo que compila wayland-protocols desde el origen para satisfacer los requisitos de Hyprland 0.51.x.
## Referencia de Flags
Este repo incluye varios "flags de control" que afectan cómo se compila/instala el stack.
### Flags de update-hyprland.sh
- `--install` / `--dry-run`: compilar+instalar vs solo compilar
- `--only <lista>` / `--skip <lista>`: ejecutar solo un subconjunto de módulos
- `--fetch-latest`: consulta GitHub Releases y refresca etiquetas
- `--force-update`: sobrescribe valores fijados en `hypr-tags.env` (equivalente a `FORCE=1`)
- `--build-trixie` / `--no-trixie`: habilita/deshabilita modo de compatibilidad Debian 13
Notas:
- Cuando el modo trixie está habilitado, `update-hyprland.sh` exporta `HYPR_BUILD_TRIXIE=1` y reenvía `--build-trixie` a los scripts de módulos.
### Flags de install.sh
- `--preset <archivo>`: ejecutar con elecciones predefinidas
- `--build-trixie` / `--no-trixie`: habilita/deshabilita modo de compatibilidad Debian 13
También puedes forzar por variable de entorno:
```bash
HYPR_BUILD_TRIXIE=1 ./install.sh
```
### Flags de refresh-hypr-tags.sh
- `--get-latest`: refresca etiquetas a las últimas releases de GitHub (alias)
- `--force-update`: forzar sobrescritura de valores fijados
Equivalente con variable de entorno:
```bash
FORCE=1 ./refresh-hypr-tags.sh --get-latest
```
## Modo de Compatibilidad Debian 13 (Trixie)
Versiones nuevas de Hyprland (0.53.x+) pueden requerir shims de compatibilidad en Debian 13 (trixie) debido a diferencias del toolchain/stdlib.
- Por defecto es **auto-detectado** (vía `/etc/os-release`): si `ID=debian` y `VERSION_CODENAME=trixie`, el modo se habilita.
- Puedes forzarlo ON/OFF:
```bash
# Forzar ON
./update-hyprland.sh --build-trixie --install
# Forzar OFF
./update-hyprland.sh --no-trixie --install
```
## Gestión Central de Versiones ## Gestión Central de Versiones
### hypr-tags.env ### hypr-tags.env
Archivo con etiquetas de versión para todos los componentes de Hyprland: Archivo con etiquetas de versión para todos los componentes de Hyprland:
```bash ```bash
# Versiones actuales (ejemplo) # Versiones actuales (ejemplo)
HYPRLAND_TAG=v0.51.1 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.9.3 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.8.2 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.4 HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.1.5 HYPRGRAPHICS_TAG=v0.5.0
HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5 HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4 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.4 HYPRLAND_QTUTILS_TAG=v0.1.5
WAYLAND_PROTOCOLS_TAG=1.45 HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46
```
### Refrescar etiquetas (últimas releases)
Puedes refrescar `hypr-tags.env` a las últimas etiquetas publicadas en GitHub:
```bash
# Actualiza solo claves en auto/latest (o sin valor)
./refresh-hypr-tags.sh --get-latest
# Forzar sobrescritura de valores fijados
FORCE=1 ./refresh-hypr-tags.sh --get-latest
# o
./refresh-hypr-tags.sh --force-update
``` ```
### Prioridad de Sobrescritura de Versiones ### Prioridad de Sobrescritura de Versiones
1. Variables de entorno (exportadas) 1. Variables de entorno (exportadas)
2. Valores en el archivo `hypr-tags.env` 2. Valores en el archivo `hypr-tags.env`
3. Valores por defecto en cada módulo 3. Valores por defecto en cada módulo
@ -85,6 +166,7 @@ WAYLAND_PROTOCOLS_TAG=1.45
## Métodos de Instalación ## Métodos de Instalación
### Método 1: Instalación Completa Original ### Método 1: Instalación Completa Original
```bash ```bash
# Instalación estándar con todos los componentes # Instalación estándar con todos los componentes
chmod +x install.sh chmod +x install.sh
@ -92,17 +174,20 @@ chmod +x install.sh
``` ```
Ahora, este método automáticamente: Ahora, este método automáticamente:
- Carga versiones desde `hypr-tags.env` - Carga versiones desde `hypr-tags.env`
- Instala wayland-protocols desde el origen antes de Hyprland - Instala wayland-protocols desde el origen antes de Hyprland
- Mantiene el orden correcto de dependencias - Mantiene el orden correcto de dependencias
### Método 2: Solo el Stack de Hyprland ### Método 2: Solo el Stack de Hyprland
```bash ```bash
# Instala solo Hyprland y componentes esenciales # Instala solo Hyprland y componentes esenciales
./update-hyprland.sh --install ./update-hyprland.sh --install
``` ```
### Método 3: Instalación Nueva con Últimas Versiones ### Método 3: Instalación Nueva con Últimas Versiones
```bash ```bash
# Obtiene últimas versiones de GitHub e instala # Obtiene últimas versiones de GitHub e instala
./update-hyprland.sh --fetch-latest --install ./update-hyprland.sh --fetch-latest --install
@ -112,6 +197,7 @@ Ahora, este método automáticamente:
``` ```
### Método 4: Instalación con Preset ### Método 4: Instalación con Preset
```bash ```bash
# Usa un preset para elecciones automáticas # Usa un preset para elecciones automáticas
./install.sh --preset ./preset.sh ./install.sh --preset ./preset.sh
@ -124,6 +210,7 @@ Enlace rápido: [Actualización 0.49/0.50.x → 0.51.1](#actualización-049050x-
### Actualizar a la Última Versión de Hyprland ### Actualizar a la Última Versión de Hyprland
#### Opción A: Descubrimiento Automático #### Opción A: Descubrimiento Automático
```bash ```bash
# Obtiene las últimas etiquetas e instala (respeta versiones fijadas en hypr-tags.env) # Obtiene las últimas etiquetas e instala (respeta versiones fijadas en hypr-tags.env)
./update-hyprland.sh --fetch-latest --install ./update-hyprland.sh --fetch-latest --install
@ -133,12 +220,14 @@ Enlace rápido: [Actualización 0.49/0.50.x → 0.51.1](#actualización-049050x-
``` ```
#### Opción B: Versión Específica #### Opción B: Versión Específica
```bash ```bash
# Establece una versión específica de Hyprland # Establece una versión específica de Hyprland
./update-hyprland.sh --set HYPRLAND=v0.51.1 --install ./update-hyprland.sh --set HYPRLAND=v0.51.1 --install
``` ```
#### Opción C: Probar Antes de Instalar #### Opción C: Probar Antes de Instalar
```bash ```bash
# Prueba la compilación primero, luego instala si es exitoso # Prueba la compilación primero, luego instala si es exitoso
./update-hyprland.sh --fetch-latest --dry-run ./update-hyprland.sh --fetch-latest --dry-run
@ -171,6 +260,7 @@ Enlace rápido: [Actualización 0.49/0.50.x → 0.51.1](#actualización-049050x-
Si actualmente estás en Hyprland 0.49 o 0.50.x, puedes actualizar directamente a 0.51.1 sin una reinstalación completa. Si actualmente estás en Hyprland 0.49 o 0.50.x, puedes actualizar directamente a 0.51.1 sin una reinstalación completa.
Ruta recomendada: Ruta recomendada:
```bash ```bash
# Asegura que hypr-tags.env apunte a la versión objetivo (omitir si ya es v0.51.1) # Asegura que hypr-tags.env apunte a la versión objetivo (omitir si ya es v0.51.1)
./update-hyprland.sh --set HYPRLAND=v0.51.1 ./update-hyprland.sh --set HYPRLAND=v0.51.1
@ -180,13 +270,17 @@ Ruta recomendada:
``` ```
Notas: Notas:
- El comando garantiza y ejecuta, según sea necesario: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine y luego hyprland. - El comando garantiza y ejecuta, según sea necesario: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine y luego hyprland.
- No es necesario usar install.sh para esta actualización, a menos que también quieras instalar/actualizar módulos opcionales (p. ej., SDDM, Bluetooth, Thunar, AGS, dotfiles) o estés recuperándote de una instalación fallida/parcial. - No es necesario usar install.sh para esta actualización, a menos que también quieras instalar/actualizar módulos opcionales (p. ej., SDDM, Bluetooth, Thunar, AGS, dotfiles) o estés recuperándote de una instalación fallida/parcial.
- Opcional: agrega --with-deps para reinstalar dependencias primero: - Opcional: agrega --with-deps para reinstalar dependencias primero:
```bash ```bash
./update-hyprland.sh --with-deps --install --only hyprland ./update-hyprland.sh --with-deps --install --only hyprland
``` ```
- Puedes hacer un dry-run primero para validar: - Puedes hacer un dry-run primero para validar:
```bash ```bash
./update-hyprland.sh --dry-run --only hyprland ./update-hyprland.sh --dry-run --only hyprland
``` ```
@ -194,6 +288,7 @@ Notas:
## Pruebas con Dry-Run ## Pruebas con Dry-Run
### ¿Por qué usar Dry-Run? ### ¿Por qué usar Dry-Run?
- Probar compatibilidad de compilación antes de instalar - Probar compatibilidad de compilación antes de instalar
- Validar combinaciones de versiones - Validar combinaciones de versiones
- Depurar problemas de compilación sin cambios en el sistema - Depurar problemas de compilación sin cambios en el sistema
@ -226,6 +321,7 @@ Notas:
``` ```
### Limitaciones de Dry-Run ### Limitaciones de Dry-Run
- **Las dependencias se instalan**: apt se ejecuta para asegurar la compilación - **Las dependencias se instalan**: apt se ejecuta para asegurar la compilación
- **Requisitos de pkg-config**: Algunos componentes necesitan requisitos instalados en el sistema - **Requisitos de pkg-config**: Algunos componentes necesitan requisitos instalados en el sistema
- **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
@ -233,7 +329,9 @@ Notas:
## Gestión de Logs ## Gestión de Logs
### Ubicación de Logs ### Ubicación de Logs
Todas las actividades de construcción generan logs con sello de tiempo en: Todas las actividades de construcción generan logs con sello de tiempo en:
``` ```
Install-Logs/ Install-Logs/
├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Log principal de instalación ├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Log principal de instalación
@ -243,6 +341,7 @@ Install-Logs/
``` ```
### Análisis de Logs ### Análisis de Logs
```bash ```bash
# Ver el log de instalación más reciente # Ver el log de instalación más reciente
ls -t Install-Logs/*.log | head -1 | xargs less ls -t Install-Logs/*.log | head -1 | xargs less
@ -255,8 +354,10 @@ cat Install-Logs/build-dry-run-*.log
``` ```
### Retención de Logs ### Retención de Logs
- Los logs se acumulan con el tiempo para referencia histórica - Los logs se acumulan con el tiempo para referencia histórica
- Se recomienda limpieza manual periódica: - Se recomienda limpieza manual periódica:
```bash ```bash
# Mantener solo logs de los últimos 30 días # Mantener solo logs de los últimos 30 días
find Install-Logs/ -name "*.log" -mtime +30 -delete find Install-Logs/ -name "*.log" -mtime +30 -delete
@ -267,6 +368,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
### Gestión de Versiones ### Gestión de Versiones
#### Forzar la Actualización de Todas las Etiquetas #### Forzar la Actualización de Todas las Etiquetas
```bash ```bash
# Sobrescribe valores fijados en hypr-tags.env con las últimas versiones # Sobrescribe valores fijados en hypr-tags.env con las últimas versiones
./update-hyprland.sh --fetch-latest --force-update --dry-run ./update-hyprland.sh --fetch-latest --force-update --dry-run
@ -275,6 +377,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
``` ```
#### Copia de Seguridad y Restauración #### Copia de Seguridad y Restauración
```bash ```bash
# Las etiquetas se respaldan automáticamente cuando cambian # Las etiquetas se respaldan automáticamente cuando cambian
# Restaurar la copia más reciente # Restaurar la copia más reciente
@ -282,6 +385,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
``` ```
#### Múltiples Conjuntos de Versiones #### Múltiples Conjuntos de Versiones
```bash ```bash
# Guardar configuración actual # Guardar configuración actual
cp hypr-tags.env hypr-tags-stable.env cp hypr-tags.env hypr-tags-stable.env
@ -296,6 +400,7 @@ cp hypr-tags-stable.env hypr-tags.env
### Integración con el Entorno ### Integración con el Entorno
#### PKG_CONFIG_PATH personalizado #### PKG_CONFIG_PATH personalizado
```bash ```bash
# Asegurar que /usr/local tenga prioridad # Asegurar que /usr/local tenga prioridad
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:-}"
@ -303,6 +408,7 @@ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PK
``` ```
#### Compilaciones en Paralelo #### Compilaciones en Paralelo
```bash ```bash
# Controlar el paralelismo (por defecto: todos los núcleos) # Controlar el paralelismo (por defecto: todos los núcleos)
export MAKEFLAGS="-j4" export MAKEFLAGS="-j4"
@ -312,6 +418,7 @@ export MAKEFLAGS="-j4"
### Flujo de Trabajo de Desarrollo ### Flujo de Trabajo de Desarrollo
#### Probar Nuevos Lanzamientos #### Probar Nuevos Lanzamientos
```bash ```bash
# 1. Crear entorno de pruebas # 1. Crear entorno de pruebas
cp hypr-tags.env hypr-tags.backup cp hypr-tags.env hypr-tags.backup
@ -327,6 +434,7 @@ cp hypr-tags.env hypr-tags.backup
``` ```
#### Desarrollo de Componentes #### Desarrollo de Componentes
```bash ```bash
# Solo instalar dependencias # Solo instalar dependencias
./update-hyprland.sh --with-deps --dry-run ./update-hyprland.sh --with-deps --dry-run
@ -343,9 +451,11 @@ tail -f Install-Logs/install-*hyprland*.log
### Problemas Comunes ### Problemas Comunes
#### Falla de Configuración con CMake #### Falla de Configuración con CMake
**Síntomas**: "Package dependency requirement not satisfied" **Síntomas**: "Package dependency requirement not satisfied"
**Soluciones**: **Soluciones**:
```bash ```bash
# Instalar requisitos faltantes # Instalar requisitos faltantes
./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang ./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang
@ -358,9 +468,11 @@ rm -rf hyprland aquamarine hyprutils hyprlang
``` ```
#### Errores de Compilación #### Errores de Compilación
**Síntomas**: "too many errors emitted" **Síntomas**: "too many errors emitted"
**Soluciones**: **Soluciones**:
```bash ```bash
# Actualizar dependencias núcleo primero # Actualizar dependencias núcleo primero
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang ./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
@ -370,9 +482,11 @@ grep -A5 -B5 "error:" Install-Logs/install-*hyprland*.log
``` ```
#### Etiqueta No Encontrada #### Etiqueta No Encontrada
**Síntomas**: "Remote branch X not found" **Síntomas**: "Remote branch X not found"
**Soluciones**: **Soluciones**:
```bash ```bash
# Ver etiquetas disponibles # Ver etiquetas disponibles
git ls-remote --tags https://github.com/hyprwm/Hyprland git ls-remote --tags https://github.com/hyprwm/Hyprland
@ -384,6 +498,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
### Pasos de Depuración ### Pasos de Depuración
1. **Verificar compatibilidad del sistema**: 1. **Verificar compatibilidad del sistema**:
```bash ```bash
# Verificar versión de Debian # Verificar versión de Debian
cat /etc/os-release cat /etc/os-release
@ -393,6 +508,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
``` ```
2. **Verificar entorno**: 2. **Verificar entorno**:
```bash ```bash
# Ver etiquetas actuales # Ver etiquetas actuales
cat hypr-tags.env cat hypr-tags.env
@ -402,6 +518,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
``` ```
3. **Analizar logs**: 3. **Analizar logs**:
```bash ```bash
# Errores más recientes # Errores más recientes
grep -i "error\|fail" Install-Logs/*.log | tail -20 grep -i "error\|fail" Install-Logs/*.log | tail -20
@ -420,6 +537,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
## Migración desde Versiones Previas ## Migración desde Versiones Previas
### Instalaciones Existentes ### Instalaciones Existentes
Las nuevas herramientas funcionan junto a instalaciones existentes: Las nuevas herramientas funcionan junto a instalaciones existentes:
```bash ```bash
@ -431,6 +549,7 @@ Las nuevas herramientas funcionan junto a instalaciones existentes:
``` ```
### Convertir a Gestión por Etiquetas ### Convertir a Gestión por Etiquetas
```bash ```bash
# Las versiones actuales se guardan en hypr-tags.env automáticamente # Las versiones actuales se guardan en hypr-tags.env automáticamente
# Verificar con: # Verificar con:

View File

@ -6,13 +6,15 @@ This guide covers the enhanced installation and upgrade workflows for KooL's Deb
1. [Overview](#overview) 1. [Overview](#overview)
2. [New Features](#new-features) 2. [New Features](#new-features)
3. [Central Version Management](#central-version-management) 3. [Flags Reference](#flags-reference)
4. [Installation Methods](#installation-methods) 4. [Debian 13 (Trixie) Compatibility Mode](#debian-13-trixie-compatibility-mode)
5. [Upgrade Workflows](#upgrade-workflows) 5. [Central Version Management](#central-version-management)
6. [Dry-Run Testing](#dry-run-testing) 6. [Installation Methods](#installation-methods)
7. [Log Management](#log-management) 7. [Upgrade Workflows](#upgrade-workflows)
8. [Advanced Usage](#advanced-usage) 8. [Dry-Run Testing](#dry-run-testing)
9. [Troubleshooting](#troubleshooting) 9. [Log Management](#log-management)
10. [Advanced Usage](#advanced-usage)
11. [Troubleshooting](#troubleshooting)
## Overview ## Overview
@ -27,6 +29,7 @@ The Debian-Hyprland project now includes enhanced automation and management tool
## New Features ## New Features
### Enhanced install.sh ### Enhanced install.sh
The original install.sh script now includes: The original install.sh script now includes:
- **Tag consistency**: Reads `hypr-tags.env` and exports version variables to all modules - **Tag consistency**: Reads `hypr-tags.env` and exports version variables to all modules
@ -36,48 +39,126 @@ The original install.sh script now includes:
### New Scripts ### New Scripts
#### update-hyprland.sh #### update-hyprland.sh
A focused tool for managing and building just the Hyprland stack: A focused tool for managing and building just the Hyprland stack:
```bash ```bash
chmod +x ./update-hyprland.sh chmod +x ./update-hyprland.sh
./update-hyprland.sh --help # View all options ./update-hyprland.sh --help # View all options
``` ```
Key flags: Key flags:
- --fetch-latest: pull latest release tags from GitHub - --fetch-latest: pull latest release tags from GitHub
- --force-update: override pinned values in hypr-tags.env (equivalent to FORCE=1) - --force-update: override pinned values in hypr-tags.env (equivalent to FORCE=1)
- --dry-run / --install: compile-only or compile+install - --dry-run / --install: compile-only or compile+install
- --only / --skip: limit which modules run - --only / --skip: limit which modules run
- --build-trixie / --no-trixie: enable/disable Debian 13 (trixie) compatibility mode (auto-detected by default)
#### dry-run-build.sh #### dry-run-build.sh
A testing tool that compiles components without installing: A testing tool that compiles components without installing:
```bash ```bash
chmod +x ./dry-run-build.sh chmod +x ./dry-run-build.sh
./dry-run-build.sh --help # View all options ./dry-run-build.sh --help # View all options
``` ```
#### wayland-protocols-src.sh #### wayland-protocols-src.sh
A new module that builds wayland-protocols from source to satisfy Hyprland 0.51.x requirements. A new module that builds wayland-protocols from source to satisfy Hyprland 0.51.x requirements.
## Flags Reference
This repo provides several "control flags" that affect how the stack is built. These are intentionally consistent across tools.
### update-hyprland.sh flags
- `--install` / `--dry-run`: compile+install vs compile-only
- `--only <list>` / `--skip <list>`: run a subset of modules
- `--fetch-latest`: query GitHub Releases and refresh tags
- `--force-update`: override pinned values in `hypr-tags.env` (equivalent to `FORCE=1`)
- `--build-trixie` / `--no-trixie`: enable/disable Debian 13 compatibility mode
Notes:
- When trixie mode is enabled, `update-hyprland.sh` exports `HYPR_BUILD_TRIXIE=1` and forwards `--build-trixie` to module scripts.
### install.sh flags
- `--preset <file>`: run unattended-ish using preset choices
- `--build-trixie` / `--no-trixie`: enable/disable Debian 13 compatibility mode
You can also force via env:
```bash
HYPR_BUILD_TRIXIE=1 ./install.sh
```
### refresh-hypr-tags.sh flags
- `--get-latest`: refresh tags to latest GitHub releases (alias; refresh always checks latest)
- `--force-update`: force-override pinned values
Equivalent env form:
```bash
FORCE=1 ./refresh-hypr-tags.sh --get-latest
```
## Debian 13 (Trixie) Compatibility Mode
Newer Hyprland versions (0.53.x+) may require source-level compatibility shims on Debian 13 (trixie) due to toolchain / standard-library feature gaps.
- Default behavior is **auto-detect** (via `/etc/os-release`): if `ID=debian` and `VERSION_CODENAME=trixie`, compatibility mode turns on.
- You can force it on/off:
```bash
# Force ON
./update-hyprland.sh --build-trixie --install
# Force OFF
./update-hyprland.sh --no-trixie --install
```
## Central Version Management ## Central Version Management
### hypr-tags.env ### hypr-tags.env
This file contains version tags for all Hyprland components: This file contains version tags for all Hyprland components:
```bash ```bash
# Current versions (example) # Current versions (example)
HYPRLAND_TAG=v0.51.1 HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.9.3 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.8.2 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.4 HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.1.5 HYPRGRAPHICS_TAG=v0.5.0
HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5 HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4 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.4 HYPRLAND_QTUTILS_TAG=v0.1.5
WAYLAND_PROTOCOLS_TAG=1.45 HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46
```
### Refreshing tags (latest releases)
You can refresh `hypr-tags.env` to the latest GitHub release tags:
```bash
# Update only keys set to auto/latest (or unset)
./refresh-hypr-tags.sh --get-latest
# Force-override pinned keys
FORCE=1 ./refresh-hypr-tags.sh --get-latest
# or
./refresh-hypr-tags.sh --force-update
``` ```
### Version Override Priority ### Version Override Priority
1. Environment variables (exported) 1. Environment variables (exported)
2. hypr-tags.env file values 2. hypr-tags.env file values
3. Default hardcoded values in each module 3. Default hardcoded values in each module
@ -85,6 +166,7 @@ WAYLAND_PROTOCOLS_TAG=1.45
## Installation Methods ## Installation Methods
### Method 1: Original Full Installation ### Method 1: Original Full Installation
```bash ```bash
# Standard installation with all components # Standard installation with all components
chmod +x install.sh chmod +x install.sh
@ -92,17 +174,20 @@ chmod +x install.sh
``` ```
This method now automatically: This method now automatically:
- Loads versions from `hypr-tags.env` - Loads versions from `hypr-tags.env`
- Installs wayland-protocols from source before Hyprland - Installs wayland-protocols from source before Hyprland
- Maintains proper dependency ordering - Maintains proper dependency ordering
### Method 2: Hyprland Stack Only ### Method 2: Hyprland Stack Only
```bash ```bash
# Install only Hyprland and essential components # Install only Hyprland and essential components
./update-hyprland.sh --install ./update-hyprland.sh --install
``` ```
### Method 3: Fresh Installation with Latest Versions ### Method 3: Fresh Installation with Latest Versions
```bash ```bash
# Fetch latest GitHub releases and install # Fetch latest GitHub releases and install
./update-hyprland.sh --fetch-latest --install ./update-hyprland.sh --fetch-latest --install
@ -112,6 +197,7 @@ This method now automatically:
``` ```
### Method 4: Preset-Based Installation ### Method 4: Preset-Based Installation
```bash ```bash
# Use preset file for automated choices # Use preset file for automated choices
./install.sh --preset ./preset.sh ./install.sh --preset ./preset.sh
@ -124,6 +210,7 @@ Quick link: [Upgrade 0.49/0.50.x → 0.51.1](#upgrade-049050x--0511)
### Upgrading to Latest Hyprland Release ### Upgrading to Latest Hyprland Release
#### Option A: Automatic Discovery #### Option A: Automatic Discovery
```bash ```bash
# Fetch latest tags and install (respects pins in hypr-tags.env) # Fetch latest tags and install (respects pins in hypr-tags.env)
./update-hyprland.sh --fetch-latest --install ./update-hyprland.sh --fetch-latest --install
@ -133,12 +220,14 @@ Quick link: [Upgrade 0.49/0.50.x → 0.51.1](#upgrade-049050x--0511)
``` ```
#### Option B: Specific Version #### Option B: Specific Version
```bash ```bash
# Set specific Hyprland version # Set specific Hyprland version
./update-hyprland.sh --set HYPRLAND=v0.51.1 --install ./update-hyprland.sh --set HYPRLAND=v0.51.1 --install
``` ```
#### Option C: Test Before Installing #### Option C: Test Before Installing
```bash ```bash
# Test compilation first, then install if successful # Test compilation first, then install if successful
./update-hyprland.sh --fetch-latest --dry-run ./update-hyprland.sh --fetch-latest --dry-run
@ -171,6 +260,7 @@ Quick link: [Upgrade 0.49/0.50.x → 0.51.1](#upgrade-049050x--0511)
If youre currently on Hyprland 0.49 or 0.50.x, you can upgrade directly to 0.51.1 without a full reinstall. If youre currently on Hyprland 0.49 or 0.50.x, you can upgrade directly to 0.51.1 without a full reinstall.
Recommended path: Recommended path:
```bash ```bash
# Ensure hypr-tags.env pins the target version (skip if already v0.51.1) # Ensure hypr-tags.env pins the target version (skip if already v0.51.1)
./update-hyprland.sh --set HYPRLAND=v0.51.1 ./update-hyprland.sh --set HYPRLAND=v0.51.1
@ -180,13 +270,17 @@ Recommended path:
``` ```
Notes: Notes:
- The command will automatically ensure and run, as needed: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine, then hyprland. - The command will automatically ensure and run, as needed: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine, then hyprland.
- Full install via install.sh is not required for this upgrade unless you also want to install/refresh optional modules (e.g., SDDM, Bluetooth, Thunar, AGS, dotfiles) or youre recovering from a failed/partial setup. - Full install via install.sh is not required for this upgrade unless you also want to install/refresh optional modules (e.g., SDDM, Bluetooth, Thunar, AGS, dotfiles) or youre recovering from a failed/partial setup.
- Optional: add --with-deps to re-run dependency installation first: - Optional: add --with-deps to re-run dependency installation first:
```bash ```bash
./update-hyprland.sh --with-deps --install --only hyprland ./update-hyprland.sh --with-deps --install --only hyprland
``` ```
- You can dry-run first to validate: - You can dry-run first to validate:
```bash ```bash
./update-hyprland.sh --dry-run --only hyprland ./update-hyprland.sh --dry-run --only hyprland
``` ```
@ -194,6 +288,7 @@ Notes:
## Dry-Run Testing ## Dry-Run Testing
### Why Use Dry-Run? ### Why Use Dry-Run?
- Test compilation compatibility before installing - Test compilation compatibility before installing
- Validate version combinations - Validate version combinations
- Debug build issues without system changes - Debug build issues without system changes
@ -226,6 +321,7 @@ Notes:
``` ```
### Dry-Run Limitations ### Dry-Run Limitations
- **Dependencies still install**: apt operations run to ensure compilation succeeds - **Dependencies still install**: apt operations run to ensure compilation succeeds
- **pkg-config requirements**: Some components need system-installed prerequisites - **pkg-config requirements**: Some components need system-installed prerequisites
- **No system changes**: No files installed to /usr/local or /usr - **No system changes**: No files installed to /usr/local or /usr
@ -233,7 +329,9 @@ Notes:
## Log Management ## Log Management
### Log Location ### Log Location
All build activities generate timestamped logs in: All build activities generate timestamped logs in:
``` ```
Install-Logs/ Install-Logs/
├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Main install log ├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Main install log
@ -243,6 +341,7 @@ Install-Logs/
``` ```
### Log Analysis ### Log Analysis
```bash ```bash
# View most recent install log # View most recent install log
ls -t Install-Logs/*.log | head -1 | xargs less ls -t Install-Logs/*.log | head -1 | xargs less
@ -255,8 +354,10 @@ cat Install-Logs/build-dry-run-*.log
``` ```
### Log Retention ### Log Retention
- Logs accumulate over time for historical reference - Logs accumulate over time for historical reference
- Manual cleanup recommended periodically: - Manual cleanup recommended periodically:
```bash ```bash
# Keep only logs from last 30 days # Keep only logs from last 30 days
find Install-Logs/ -name "*.log" -mtime +30 -delete find Install-Logs/ -name "*.log" -mtime +30 -delete
@ -267,6 +368,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
### Tag Management ### Tag Management
#### Force Update All Tags #### Force Update All Tags
```bash ```bash
# Override pinned values in hypr-tags.env to the latest releases # Override pinned values in hypr-tags.env to the latest releases
./update-hyprland.sh --fetch-latest --force-update --dry-run ./update-hyprland.sh --fetch-latest --force-update --dry-run
@ -275,6 +377,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
``` ```
#### Backup and Restore #### Backup and Restore
```bash ```bash
# Tags are automatically backed up on changes # Tags are automatically backed up on changes
# Restore most recent backup # Restore most recent backup
@ -282,6 +385,7 @@ find Install-Logs/ -name "*.log" -mtime +30 -delete
``` ```
#### Multiple Version Sets #### Multiple Version Sets
```bash ```bash
# Save current configuration # Save current configuration
cp hypr-tags.env hypr-tags-stable.env cp hypr-tags.env hypr-tags-stable.env
@ -296,6 +400,7 @@ cp hypr-tags-stable.env hypr-tags.env
### Environment Integration ### Environment Integration
#### Custom PKG_CONFIG_PATH #### Custom PKG_CONFIG_PATH
```bash ```bash
# Ensure /usr/local takes precedence # Ensure /usr/local takes precedence
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:-}"
@ -303,6 +408,7 @@ export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PK
``` ```
#### Parallel Builds #### Parallel Builds
```bash ```bash
# Control build parallelism (default: all cores) # Control build parallelism (default: all cores)
export MAKEFLAGS="-j4" export MAKEFLAGS="-j4"
@ -312,6 +418,7 @@ export MAKEFLAGS="-j4"
### Development Workflow ### Development Workflow
#### Testing New Releases #### Testing New Releases
```bash ```bash
# 1. Create test environment # 1. Create test environment
cp hypr-tags.env hypr-tags.backup cp hypr-tags.env hypr-tags.backup
@ -327,6 +434,7 @@ cp hypr-tags.env hypr-tags.backup
``` ```
#### Component Development #### Component Development
```bash ```bash
# Install dependencies only # Install dependencies only
./update-hyprland.sh --with-deps --dry-run ./update-hyprland.sh --with-deps --dry-run
@ -343,9 +451,11 @@ tail -f Install-Logs/install-*hyprland*.log
### Common Issues ### Common Issues
#### CMake Configuration Fails #### CMake Configuration Fails
**Symptoms**: "Package dependency requirement not satisfied" **Symptoms**: "Package dependency requirement not satisfied"
**Solutions**: **Solutions**:
```bash ```bash
# Install missing prerequisites # Install missing prerequisites
./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang ./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang
@ -358,9 +468,11 @@ rm -rf hyprland aquamarine hyprutils hyprlang
``` ```
#### Compilation Errors #### Compilation Errors
**Symptoms**: "too many errors emitted" **Symptoms**: "too many errors emitted"
**Solutions**: **Solutions**:
```bash ```bash
# Update core dependencies first # Update core dependencies first
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang ./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
@ -370,9 +482,11 @@ grep -A5 -B5 "error:" Install-Logs/install-*hyprland*.log
``` ```
#### Tag Not Found #### Tag Not Found
**Symptoms**: "Remote branch X not found" **Symptoms**: "Remote branch X not found"
**Solutions**: **Solutions**:
```bash ```bash
# Check available tags # Check available tags
git ls-remote --tags https://github.com/hyprwm/Hyprland git ls-remote --tags https://github.com/hyprwm/Hyprland
@ -384,6 +498,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
### Debug Steps ### Debug Steps
1. **Check system compatibility**: 1. **Check system compatibility**:
```bash ```bash
# Verify Debian version # Verify Debian version
cat /etc/os-release cat /etc/os-release
@ -393,6 +508,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
``` ```
2. **Verify environment**: 2. **Verify environment**:
```bash ```bash
# Check current tags # Check current tags
cat hypr-tags.env cat hypr-tags.env
@ -402,6 +518,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
``` ```
3. **Analyze logs**: 3. **Analyze logs**:
```bash ```bash
# Most recent errors # Most recent errors
grep -i "error\|fail" Install-Logs/*.log | tail -20 grep -i "error\|fail" Install-Logs/*.log | tail -20
@ -420,6 +537,7 @@ git ls-remote --tags https://github.com/hyprwm/Hyprland
## Migration from Previous Versions ## Migration from Previous Versions
### Existing Installations ### Existing Installations
The new tools work alongside existing installations: The new tools work alongside existing installations:
```bash ```bash
@ -431,6 +549,7 @@ The new tools work alongside existing installations:
``` ```
### Converting to Tag Management ### Converting to Tag Management
```bash ```bash
# Current versions are saved to hypr-tags.env automatically # Current versions are saved to hypr-tags.env automatically
# Verify with: # Verify with:

View File

@ -90,8 +90,8 @@ sudo nano /etc/apt/sources.list
- Hyprland-Debian nows builds 0.51.1 from source! - Hyprland-Debian nows builds 0.51.1 from source!
- The installer now can be used to install newer releases later - The installer now can be used to install newer releases later
- If you are currently running 0.49, or 0.50, you can upgrade to 0.51.1 - If you are currently running 0.49, or 0.50, you can upgrade to 0.51.1
> Note: At this time Debian 13 (Trixie) can't compile v0.52.2+ > Note: Newer Hyprland versions (0.53.x+) may require compatibility shims on Debian 13 (Trixie).
> Debian Testing and SID can > Use the provided update/install scripts with `--build-trixie` if needed.
- You do not have to re-install everything, but re-running `install.sh` works also - You do not have to re-install everything, but re-running `install.sh` works also
- Instructions are available in English and Spanish - Instructions are available in English and Spanish

View File

@ -134,11 +134,16 @@ done
# Summary # Summary
{ {
echo "\nSummary (dry-run):" printf "\nSummary (dry-run):\n"
for mod in "${MODULES[@]}"; do for mod in "${MODULES[@]}"; do
printf "%-24s %s\n" "$mod" "${RESULTS[$mod]:-SKIPPED}" printf "%-24s %s\n" "$mod" "${RESULTS[$mod]:-SKIPPED}"
done done
echo "\nLogs: individual module logs are under Install-Logs/. This summary: $SUMMARY_LOG" # Show current tag values to make changes visible during dry-runs
if [[ -f "$REPO_ROOT/hypr-tags.env" ]]; then
printf "\nCurrent versions (from %s):\n" "$REPO_ROOT/hypr-tags.env"
grep -E '^[A-Z0-9_]+=' "$REPO_ROOT/hypr-tags.env" | sort
fi
printf "\nLogs: individual module logs are under Install-Logs/. This summary: %s\n" "$SUMMARY_LOG"
} | tee -a "$SUMMARY_LOG" } | tee -a "$SUMMARY_LOG"
# Exit non-zero if any FAIL occurred # Exit non-zero if any FAIL occurred

View File

@ -2,14 +2,17 @@
# You can edit these values or let update-hyprland.sh manage them. # You can edit these values or let update-hyprland.sh manage them.
# Each module script reads its TAG from these environment variables if set. # Each module script reads its TAG from these environment variables if set.
HYPRLAND_TAG=v0.52.2 # 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.10.4 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.7 HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.4.0 HYPRGRAPHICS_TAG=v0.5.0
HYPRTOOLKIT_TAG=v0.4.1 HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5 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_GUIUTILS_TAG=v0.2.0 HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46 WAYLAND_PROTOCOLS_TAG=1.46

View File

@ -1,13 +0,0 @@
AQUAMARINE_TAG=v0.10.0
HYPRGRAPHICS_TAG=v0.5.0
HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRLAND_PROTOCOLS_TAG=v0.7.0
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRLAND_TAG=v0.53.0
HYPRLANG_TAG=v0.6.7
HYPRTOOLKIT_TAG=v0.4.1
HYPRUTILS_TAG=v0.11.0
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46

View File

@ -72,7 +72,14 @@ fi
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git; then
cd hyprland-guiutils || exit 1 cd hyprland-guiutils || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build # 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:-}"
export LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH:-}"
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:-}"
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` cmake --build ./build --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 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then

View File

@ -118,6 +118,16 @@ EOF
sed -ri 's|^\s*#embed\s+"\.{0,2}/\.{0,2}/example/hyprland\.conf"\s*$|#include "defaultConfig.bytes.inc"|g' src/config/defaultConfig.hpp || true sed -ri 's|^\s*#embed\s+"\.{0,2}/\.{0,2}/example/hyprland\.conf"\s*$|#include "defaultConfig.bytes.inc"|g' src/config/defaultConfig.hpp || true
fi fi
# Compatibility: some toolchains/libstdc++ do not support std::string operator+ with std::string_view.
# Hyprland hyprctl uses a std::string_view filename; ensure it is converted explicitly.
HYPRCTL_MAIN="$(pwd)/hyprctl/src/main.cpp"
if [ -f "$HYPRCTL_MAIN" ] && grep -q "std::string socketPath" "$HYPRCTL_MAIN"; then
# Only patch if we see a "+ filename" concatenation.
if grep -qE '\+\s*filename\s*;' "$HYPRCTL_MAIN"; then
sed -ri 's/\+\s*filename\s*;/+ std::string(filename);/g' "$HYPRCTL_MAIN" || true
fi
fi
# Apply patch only if it applies cleanly; otherwise skip # Apply patch only if it applies cleanly; otherwise skip
if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then 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 if patch -p1 --dry-run <../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then

View File

@ -12,10 +12,33 @@ if [ -z "${HYPRWIRE_TAG:-}" ]; then
fi fi
if [ -n "${HYPRWIRE_TAG:-}" ]; then tag="$HYPRWIRE_TAG"; fi if [ -n "${HYPRWIRE_TAG:-}" ]; then tag="$HYPRWIRE_TAG"; fi
# Dry-run support # Dry-run support + shim controls
DO_INSTALL=1 DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then FORCE_SHIM=0
NO_SHIM=0
for arg in "$@"; do
case "$arg" in
--dry-run)
DO_INSTALL=0 DO_INSTALL=0
;;
# Force the compatibility shim used on Debian 13 (trixie) toolchains.
# This is intentionally distro-named so it's obvious what it does for most users.
--build-trixie|--force-shim)
FORCE_SHIM=1
;;
# For testing/sid (or any toolchain that supports std::vector::append_range), allow opting out.
--no-shim)
NO_SHIM=1
;;
esac
done
if [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
fi
if [ $DO_INSTALL -eq 0 ]; then
echo "${NOTE} DRY RUN: install step will be skipped." echo "${NOTE} DRY RUN: install step will be skipped."
fi fi
@ -48,20 +71,57 @@ fi
if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git; then
cd hyprwire || exit 1 cd hyprwire || exit 1
# Temporary compatibility shim for compilers/libstdc++ without std::vector::append_range # Decide whether we need the append_range compatibility shim.
# On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch.
# On newer toolchains (testing/sid), prefer building upstream unmodified.
NEED_SHIM=0
if [ "$NO_SHIM" -eq 1 ]; then
NEED_SHIM=0
elif [ "$FORCE_SHIM" -eq 1 ]; then
NEED_SHIM=1
else
CXX_TEST="${CXX:-c++}"
TMPD="$(mktemp -d)"
cat >"$TMPD/append_range_test.cpp" <<'EOF'
#include <vector>
int main() {
std::vector<unsigned char> v;
v.append_range(std::vector<unsigned char>{1,2,3});
return 0;
}
EOF
if "$CXX_TEST" -std=c++23 -c "$TMPD/append_range_test.cpp" -o /dev/null >/dev/null 2>&1; then
NEED_SHIM=0
else
NEED_SHIM=1
fi
rm -rf "$TMPD"
fi
if [ "$NEED_SHIM" -eq 1 ]; then
echo "${NOTE} Applying append_range compatibility shim (use --no-shim to disable; --build-trixie to force)."
# Temporary compatibility shim for toolchains where libstdc++ lacks std::vector::append_range (C++23 library feature).
# Note: append_range in upstream accepts temporaries (e.g. encodeVarInt(...) returns a temporary vector). To support that,
# we bind the expression to a named auto&& first.
cat > append_range_compat.hpp <<'EOF' cat > append_range_compat.hpp <<'EOF'
#pragma once #pragma once
#include <iterator> #include <iterator>
#define APPEND_RANGE(vec, ...) (vec).insert((vec).end(), std::begin(__VA_ARGS__), std::end(__VA_ARGS__))
// Append any begin/end range to a container, supporting temporaries by binding to auto&&.
#define APPEND_RANGE(vec, ...) do { \
auto&& _r = (__VA_ARGS__); \
(vec).insert((vec).end(), std::begin(_r), std::end(_r)); \
} while(0)
EOF EOF
# Replace X.append_range(Y) -> APPEND_RANGE(X, Y) only where it appears
PATCH_FILES=$(grep -RIl --exclude-dir=.git 'append_range\(' . || true) # Replace X.(.|->)append_range(Y) -> APPEND_RANGE(X, Y) only where it appears
PATCH_FILES=$(grep -RIl --exclude-dir=.git -F 'append_range(' . || true)
if [ -n "$PATCH_FILES" ]; then if [ -n "$PATCH_FILES" ]; then
# Replace LHS .append_range(arg...) with APPEND_RANGE(LHS, arg...)
# LHS: identifiers and common member/ptr chains (this->obj, ns::obj.member) # LHS: identifiers and common member/ptr chains (this->obj, ns::obj.member)
echo "$PATCH_FILES" | xargs -r sed -ri 's/([A-Za-z_][A-Za-z0-9_:\->\.]+)\s*\.\s*append_range\s*\(/APPEND_RANGE(\1, /g' echo "$PATCH_FILES" | xargs -r sed -ri 's/([A-Za-z_][A-Za-z0-9_:>.\-]+)\s*(\.|->)\s*append_range\s*\(/APPEND_RANGE(\1, /g'
# Show any remaining occurrences # Show any remaining occurrences
REMAIN=$(grep -RIn --exclude-dir=.git '\.\s*append_range\s*\(' $PATCH_FILES || true) REMAIN=$(grep -RIn --exclude-dir=.git -E '(\.|->)[[:space:]]*append_range[[:space:]]*\(' $PATCH_FILES || true)
if [ -n "$REMAIN" ]; then if [ -n "$REMAIN" ]; then
echo "[WARN] Some append_range() calls remain unpatched:" >&2 echo "[WARN] Some append_range() calls remain unpatched:" >&2
echo "$REMAIN" >&2 echo "$REMAIN" >&2
@ -72,6 +132,10 @@ fi
APPEND_HDR="$(pwd)/append_range_compat.hpp" APPEND_HDR="$(pwd)/append_range_compat.hpp"
cmake -S . -B build -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 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23
fi
cmake --build build -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 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then

View File

@ -29,6 +29,7 @@ if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
fi fi
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
MLOG="install-$(date +%d-%H%M%S)_xdph2.log"
# Check if the file exists and remove it # Check if the file exists and remove it
[[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland" [[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland"
@ -62,7 +63,8 @@ if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-h
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
mv $MLOG ../Install-Logs/ || true # Move the additional logs to Install-Logs directory
[ -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

@ -105,6 +105,60 @@ if is_ubuntu; then
exit 1 exit 1
fi fi
# Debian Trixie compatibility mode
# Some Hypr* components need source-level shims on Debian 13 (trixie) toolchains.
# Default: auto-detect via /etc/os-release
# Overrides:
# --build-trixie / --no-trixie
# HYPR_BUILD_TRIXIE=1|0 (env)
TRIXIE_MODE="auto"
PRESET_FILE=""
# Parse a small set of supported CLI args (order-independent)
# NOTE: install.sh historically used "$1"/"$2" for --preset; this keeps that working.
args=("$@")
for ((i=0; i<${#args[@]}; i++)); do
case "${args[$i]}" in
--build-trixie)
TRIXIE_MODE="on"
;;
--no-trixie)
TRIXIE_MODE="off"
;;
--preset)
if [ $((i+1)) -lt ${#args[@]} ]; then
PRESET_FILE="${args[$((i+1))]}"
fi
;;
esac
done
# If env explicitly sets HYPR_BUILD_TRIXIE, honor it.
if [ -n "${HYPR_BUILD_TRIXIE+x}" ]; then
if [ "${HYPR_BUILD_TRIXIE}" = "1" ]; then
TRIXIE_MODE="on"
elif [ "${HYPR_BUILD_TRIXIE}" = "0" ]; then
TRIXIE_MODE="off"
fi
fi
# Resolve auto-detection
if [ "$TRIXIE_MODE" = "auto" ]; then
HYPR_BUILD_TRIXIE=0
if [ -f /etc/os-release ]; then
# shellcheck disable=SC1091
. /etc/os-release || true
if [ "${ID:-}" = "debian" ] && [ "${VERSION_CODENAME:-}" = "trixie" ]; then
HYPR_BUILD_TRIXIE=1
fi
fi
elif [ "$TRIXIE_MODE" = "on" ]; then
HYPR_BUILD_TRIXIE=1
else
HYPR_BUILD_TRIXIE=0
fi
export HYPR_BUILD_TRIXIE
# install whiptails if detected not installed. Necessary for this version # install whiptails if detected not installed. Necessary for this version
if ! command -v whiptail >/dev/null; then if ! command -v whiptail >/dev/null; then
echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG"
@ -269,7 +323,13 @@ execute_script() {
if [ -f "$script_path" ]; then if [ -f "$script_path" ]; then
chmod +x "$script_path" chmod +x "$script_path"
if [ -x "$script_path" ]; then if [ -x "$script_path" ]; then
env "$script_path" # Pass --build-trixie to all module scripts when in trixie compatibility mode.
# Scripts that don't care should simply ignore unknown args.
if [ "${HYPR_BUILD_TRIXIE:-0}" = "1" ]; then
env HYPR_BUILD_TRIXIE=1 "$script_path" --build-trixie
else
env HYPR_BUILD_TRIXIE=0 "$script_path"
fi
else else
echo "Failed to make script '$script' executable." | tee -a "$LOG" echo "Failed to make script '$script' executable." | tee -a "$LOG"
fi fi
@ -323,9 +383,9 @@ load_preset() {
fi fi
} }
# Check if --preset argument is passed # Check if --preset argument is passed (order-independent)
if [[ "$1" == "--preset" && -n "$2" ]]; then if [ -n "${PRESET_FILE:-}" ]; then
load_preset "$2" load_preset "$PRESET_FILE"
fi fi
# List of services to check for active login managers # List of services to check for active login managers
@ -558,6 +618,14 @@ else
execute_script "hypridle.sh" execute_script "hypridle.sh"
fi fi
# Ensure /usr/local/lib is in the dynamic linker search path.
# Many Hypr* components install shared libraries into /usr/local/lib; without this,
# tools like hyprctl can fail to load (e.g. missing libhyprwire.so.*).
if ! sudo grep -qxF "/usr/local/lib" /etc/ld.so.conf.d/usr-local.conf 2>/dev/null; then
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/usr-local.conf >/dev/null
fi
sudo ldconfig 2>/dev/null || true
#execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024 #execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024
# execute_script "waybar-git.sh" only if waybar on repo is old # execute_script "waybar-git.sh" only if waybar on repo is old

View File

@ -11,20 +11,61 @@ mkdir -p "$LOG_DIR"
TS=$(date +%F-%H%M%S) TS=$(date +%F-%H%M%S)
SUMMARY_LOG="$LOG_DIR/refresh-tags-$TS.log" SUMMARY_LOG="$LOG_DIR/refresh-tags-$TS.log"
usage() {
cat <<'EOF'
refresh-hypr-tags.sh
Refresh hypr-tags.env with latest GitHub release tags.
Usage:
./refresh-hypr-tags.sh
FORCE=1 ./refresh-hypr-tags.sh
./refresh-hypr-tags.sh --force-update
./refresh-hypr-tags.sh --get-latest
Notes:
- By default, only updates keys set to auto/latest (or unset).
- Use FORCE=1 or --force-update to override pinned values.
EOF
}
# Arg parsing (minimal/backwards compatible)
FORCE=${FORCE:-0}
for arg in "$@"; do
case "$arg" in
-h|--help)
usage
exit 0
;;
--force-update|--force)
FORCE=1
;;
# Alias for user ergonomics; refresh always checks latest tags.
--get-latest|--fetch-latest)
:
;;
*)
echo "[WARN] Unknown argument ignored: $arg" | tee -a "$SUMMARY_LOG"
;;
esac
done
# Ensure tags file exists # Ensure tags file exists
if [[ ! -f "$TAGS_FILE" ]]; then if [[ ! -f "$TAGS_FILE" ]]; then
cat > "$TAGS_FILE" <<'EOF' cat > "$TAGS_FILE" <<'EOF'
HYPRLAND_TAG=v0.51.1 # Default Hyprland stack versions
AQUAMARINE_TAG=v0.9.3 HYPRLAND_TAG=v0.53.1
HYPRUTILS_TAG=v0.8.2 AQUAMARINE_TAG=v0.10.0
HYPRLANG_TAG=v0.6.4 HYPRUTILS_TAG=v0.11.0
HYPRGRAPHICS_TAG=v0.1.5 HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.5.0
HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5 HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4 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.4 HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRWIRE_TAG=auto HYPRLAND_GUIUTILS_TAG=v0.2.0
WAYLAND_PROTOCOLS_TAG=1.45 HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46
EOF EOF
fi fi
@ -38,16 +79,19 @@ if ! command -v curl >/dev/null 2>&1; then
fi fi
# Map of env var -> repo # Map of env var -> repo
# (Some modules may not publish GitHub releases; in that case the tag may not refresh.)
declare -A repos=( declare -A repos=(
[HYPRLAND_TAG]="hyprwm/Hyprland" [HYPRLAND_TAG]="hyprwm/Hyprland"
[AQUAMARINE_TAG]="hyprwm/aquamarine" [AQUAMARINE_TAG]="hyprwm/aquamarine"
[HYPRUTILS_TAG]="hyprwm/hyprutils" [HYPRUTILS_TAG]="hyprwm/hyprutils"
[HYPRLANG_TAG]="hyprwm/hyprlang" [HYPRLANG_TAG]="hyprwm/hyprlang"
[HYPRGRAPHICS_TAG]="hyprwm/hyprgraphics" [HYPRGRAPHICS_TAG]="hyprwm/hyprgraphics"
[HYPRTOOLKIT_TAG]="hyprwm/hyprtoolkit"
[HYPRWAYLAND_SCANNER_TAG]="hyprwm/hyprwayland-scanner" [HYPRWAYLAND_SCANNER_TAG]="hyprwm/hyprwayland-scanner"
[HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols" [HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols"
[HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support" [HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support"
[HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils" [HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils"
[HYPRLAND_GUIUTILS_TAG]="hyprwm/hyprland-guiutils"
[HYPRWIRE_TAG]="hyprwm/hyprwire" [HYPRWIRE_TAG]="hyprwm/hyprwire"
) )
@ -59,12 +103,18 @@ while IFS='=' read -r k v; do
done < "$TAGS_FILE" done < "$TAGS_FILE"
# Fetch latest, but only update keys set to 'auto' or 'latest' unless forced # Fetch latest, but only update keys set to 'auto' or 'latest' unless forced
FORCE=${FORCE:-0} changes=()
for key in "${!repos[@]}"; do for key in "${!repos[@]}"; do
repo="${repos[$key]}" repo="${repos[$key]}"
url="https://api.github.com/repos/$repo/releases/latest" url="https://api.github.com/repos/$repo/releases/latest"
echo "[INFO] Checking latest tag for $repo" | tee -a "$SUMMARY_LOG" echo "[INFO] Checking latest tag for $repo" | tee -a "$SUMMARY_LOG"
body=$(curl -fsSL "$url" || true)
# Be resilient to transient GitHub API errors (e.g. 5xx).
body=$(curl -fsSL \
--retry 3 --retry-all-errors --retry-delay 1 \
-H 'Accept: application/vnd.github+json' \
"$url" || true)
[[ -z "$body" ]] && { echo "[WARN] Empty response for $repo" | tee -a "$SUMMARY_LOG"; continue; } [[ -z "$body" ]] && { echo "[WARN] Empty response for $repo" | tee -a "$SUMMARY_LOG"; continue; }
if command -v jq >/dev/null 2>&1; then if command -v jq >/dev/null 2>&1; then
tag=$(printf '%s' "$body" | jq -r '.tag_name // empty') tag=$(printf '%s' "$body" | jq -r '.tag_name // empty')
@ -78,12 +128,30 @@ for key in "${!repos[@]}"; do
existing="${cur[$key]:-}" existing="${cur[$key]:-}"
if [[ $FORCE -eq 1 ]] || [[ "$existing" =~ ^(auto|latest)$ ]] || [[ -z "$existing" ]]; then if [[ $FORCE -eq 1 ]] || [[ "$existing" =~ ^(auto|latest)$ ]] || [[ -z "$existing" ]]; then
cur[$key]="$tag" cur[$key]="$tag"
if [[ "$existing" != "$tag" ]]; then
changes+=("$key: $existing -> $tag")
fi
echo "[OK] $key := $tag" | tee -a "$SUMMARY_LOG" echo "[OK] $key := $tag" | tee -a "$SUMMARY_LOG"
else else
echo "[SKIP] $key pinned ($existing), not overriding" | tee -a "$SUMMARY_LOG" echo "[SKIP] $key pinned ($existing), not overriding" | tee -a "$SUMMARY_LOG"
fi fi
done done
# Show change summary and prompt before writing (interactive only)
if [[ -t 0 && ${#changes[@]} -gt 0 ]]; then
printf "\nPlanned tag updates (refresh-hypr-tags.sh):\n" | tee -a "$SUMMARY_LOG"
printf "%s\n" "${changes[@]}" | tee -a "$SUMMARY_LOG"
printf "\nProceed with writing updated tags to %s? [Y/n]: " "$TAGS_FILE"
read -r ans || true
ans=${ans:-Y}
case "$ans" in
[nN]|[nN][oO])
echo "[INFO] User aborted tag update; leaving $TAGS_FILE unchanged." | tee -a "$SUMMARY_LOG"
exit 0
;;
esac
fi
# Write back # Write back
{ {
for k in "${!cur[@]}"; do for k in "${!cur[@]}"; do

View File

@ -65,6 +65,12 @@ ONLY_LIST=""
SKIP_LIST="" SKIP_LIST=""
SET_ARGS=() SET_ARGS=()
# Trixie compatibility mode
# - auto: enable on Debian trixie (useful for toolchain/library shims)
# - on: force enable via --build-trixie
# - off: force disable via --no-trixie
TRIXIE_MODE="auto"
usage() { usage() {
# Print the header comments (quick reference) followed by explicit flags overview # Print the header comments (quick reference) followed by explicit flags overview
sed -n '2,140p' "$0" | sed -n '/^# /p' | sed 's/^# \{0,1\}//' sed -n '2,140p' "$0" | sed -n '/^# /p' | sed 's/^# \{0,1\}//'
@ -85,6 +91,8 @@ Options:
--via-helper Use dry-run-build.sh to summarize a dry-run --via-helper Use dry-run-build.sh to summarize a dry-run
--minimal Build minimal stack before hyprland --minimal Build minimal stack before hyprland
--no-fetch Do not auto-fetch tags on install --no-fetch Do not auto-fetch tags on install
--build-trixie Force Debian 13 (trixie) compatibility mode (enables needed shims)
--no-trixie Disable trixie compatibility mode
--set K=V [...] Set one or more tags (e.g., HYPRLAND=v0.53.0) --set K=V [...] Set one or more tags (e.g., HYPRLAND=v0.53.0)
EOF EOF
} }
@ -93,16 +101,18 @@ ensure_tags_file() {
if [[ ! -f "$TAGS_FILE" ]]; then if [[ ! -f "$TAGS_FILE" ]]; then
echo "[INFO] Creating default tags file: $TAGS_FILE" | tee -a "$SUMMARY_LOG" echo "[INFO] Creating default tags file: $TAGS_FILE" | tee -a "$SUMMARY_LOG"
cat >"$TAGS_FILE" <<'EOF' cat >"$TAGS_FILE" <<'EOF'
HYPRLAND_TAG=v0.50.1 # Default Hyprland stack versions
AQUAMARINE_TAG=v0.9.2 # (You can override any of these via --set or by editing hypr-tags.env.)
HYPRUTILS_TAG=v0.8.2 HYPRLAND_TAG=v0.53.1
HYPRLANG_TAG=v0.6.4 AQUAMARINE_TAG=v0.10.0
HYPRGRAPHICS_TAG=v0.1.5 HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.5.0
HYPRWAYLAND_SCANNER_TAG=v0.4.5 HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4 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.4 HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRWIRE_TAG=auto HYPRWIRE_TAG=v0.2.1
EOF EOF
fi fi
} }
@ -160,6 +170,8 @@ set_tags_from_args() {
fetch_latest_tags() { fetch_latest_tags() {
ensure_tags_file ensure_tags_file
backup_tags backup_tags
CHANGES_FILE="$LOG_DIR/update-delta-$TS.log"
: >"$CHANGES_FILE"
# Require curl; jq is preferred. Fallback to grep/sed if jq is missing. # Require curl; jq is preferred. Fallback to grep/sed if jq is missing.
if ! command -v curl >/dev/null 2>&1; then if ! command -v curl >/dev/null 2>&1; then
@ -217,6 +229,8 @@ fetch_latest_tags() {
map[$k]="$v" map[$k]="$v"
done <"$TAGS_FILE" done <"$TAGS_FILE"
# Build a list of changes (old -> new) according to override rules
changes=()
for k in "${!tags[@]}"; do for k in "${!tags[@]}"; do
if [[ $FORCE_UPDATE -eq 1 ]]; then if [[ $FORCE_UPDATE -eq 1 ]]; then
# Force override regardless of current value (matches FORCE=1 behavior in refresh-hypr-tags.sh) # Force override regardless of current value (matches FORCE=1 behavior in refresh-hypr-tags.sh)
@ -229,6 +243,27 @@ fetch_latest_tags() {
fi fi
done done
# Interactive confirmation before writing, if we have a TTY
if [[ -t 0 && ${#changes[@]} -gt 0 ]]; then
printf "\nPlanned tag updates (update-hyprland.sh):\n" | tee -a "$SUMMARY_LOG"
printf "%s\n" "${changes[@]}" | tee -a "$SUMMARY_LOG" | tee -a "$CHANGES_FILE"
printf "\nProceed with writing updated tags to %s? [Y/n]: " "$TAGS_FILE"
read -r ans || true
ans=${ans:-Y}
case "$ans" in
[nN]|[nN][oO])
echo "[INFO] User aborted tag update; leaving $TAGS_FILE unchanged." | tee -a "$SUMMARY_LOG"
# restore original copy
latest_bak=$(ls -1t "$TAGS_FILE".bak-* 2>/dev/null | head -n1 || true)
[[ -n "$latest_bak" ]] && cp "$latest_bak" "$TAGS_FILE"
return 0
;;
esac
else
# non-interactive: still record changes
printf "%s\n" "${changes[@]}" >>"$CHANGES_FILE" || true
fi
{ {
for k in "${!map[@]}"; do for k in "${!map[@]}"; do
echo "$k=${map[$k]}" echo "$k=${map[$k]}"
@ -256,6 +291,20 @@ run_stack() {
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:-}"
# Auto-detect Debian trixie unless explicitly overridden.
if [[ "$TRIXIE_MODE" == "auto" ]] && [[ -f /etc/os-release ]]; then
# shellcheck disable=SC1091
. /etc/os-release || true
if [[ "${ID:-}" == "debian" ]] && [[ "${VERSION_CODENAME:-}" == "trixie" ]]; then
TRIXIE_MODE="on"
fi
fi
if [[ "$TRIXIE_MODE" == "on" ]]; then
export HYPR_BUILD_TRIXIE=1
else
export HYPR_BUILD_TRIXIE=0
fi
# Propagate system/bundled selection to hyprland.sh # Propagate system/bundled selection to hyprland.sh
if [[ $USE_SYSTEM_LIBS -eq 1 ]]; then if [[ $USE_SYSTEM_LIBS -eq 1 ]]; then
export USE_SYSTEM_HYPRLIBS=1 export USE_SYSTEM_HYPRLIBS=1
@ -471,19 +520,49 @@ run_stack() {
continue continue
} }
chmod +x "$script" || true chmod +x "$script" || true
# Extra args for module scripts
# Most scripts ignore unknown flags, so this is safe and lets us add future
# trixie-specific shims without changing update-hyprland.sh again.
extra_args=()
if [[ "${HYPR_BUILD_TRIXIE:-0}" == "1" ]]; then
extra_args+=("--build-trixie")
fi
if [[ $DO_DRY_RUN -eq 1 ]]; then if [[ $DO_DRY_RUN -eq 1 ]]; then
if DRY_RUN=1 "$script"; then results[$mod]="PASS"; else results[$mod]="FAIL"; fi if DRY_RUN=1 "$script" "${extra_args[@]}"; then results[$mod]="PASS"; else results[$mod]="FAIL"; fi
else else
if "$script"; then results[$mod]="INSTALLED"; else results[$mod]="FAIL"; fi if "$script" "${extra_args[@]}"; then results[$mod]="INSTALLED"; else results[$mod]="FAIL"; fi
fi fi
done done
# Ensure /usr/local/lib is in the dynamic linker search path after installs.
# Many Hypr* components install shared libraries into /usr/local/lib; without this,
# tools like hyprctl can fail to load (e.g. missing libhyprwire.so.*).
if [[ $DO_INSTALL -eq 1 ]]; then
echo "[INFO] Ensuring /usr/local/lib is in dynamic linker path" | tee -a "$SUMMARY_LOG"
if ! sudo grep -qxF "/usr/local/lib" /etc/ld.so.conf.d/usr-local.conf 2>/dev/null; then
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/usr-local.conf >/dev/null
fi
sudo ldconfig || true
fi
{ {
echo "\nSummary:" printf "\nSummary:\n"
for mod in "${modules[@]}"; do for mod in "${modules[@]}"; do
printf "%-24s %s\n" "$mod" "${results[$mod]:-SKIPPED}" printf "%-24s %s\n" "$mod" "${results[$mod]:-SKIPPED}"
done done
echo "\nLogs under: $LOG_DIR. This run: $SUMMARY_LOG" # Show updated versions (final tag values)
if [[ -f "$TAGS_FILE" ]]; then
printf "\nUpdated versions (from %s):\n" "$TAGS_FILE"
grep -E '^[A-Z0-9_]+=' "$TAGS_FILE" | sort
fi
# Include change list if present
if [[ -f "$LOG_DIR/update-delta-$TS.log" ]]; then
printf "\nChanges applied this run:\n"
cat "$LOG_DIR/update-delta-$TS.log"
fi
printf "\nLogs under: %s. This run: %s\n" "$LOG_DIR" "$SUMMARY_LOG"
} | tee -a "$SUMMARY_LOG" } | tee -a "$SUMMARY_LOG"
# Non-zero on any FAILs # Non-zero on any FAILs
@ -533,6 +612,14 @@ while [[ $# -gt 0 ]]; do
NO_FETCH=1 NO_FETCH=1
shift shift
;; ;;
--build-trixie)
TRIXIE_MODE="on"
shift
;;
--no-trixie)
TRIXIE_MODE="off"
shift
;;
--only) --only)
ONLY_LIST=${2:-} ONLY_LIST=${2:-}
shift 2 shift 2