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
40 changed files with 394 additions and 974 deletions

View File

@ -1,50 +1,8 @@
## CHANGELOG ## CHANGELOG
## 27 January 2026
### Fixed build issue with Debian stable (trixie)
- All references to `Nix::`, `Nix.hpp`, `Nix.cpp`, `--no-nixgl`, and `nixGL` in the built Hyprland sources are removed via assets/0002-start-hyprland-no-nixgl.patch.
- The patch:
- Drops the Nix include and logic from `start/src/core/Instance.cpp`, `start/src/core/State.hpp`, and `start/src/main.cpp`.
- Removes the `--no-nixgl` flag and the Nix environment checks.
- Now `start-hyprland` starts `Hyprland` directly, with no `nixGL` wrapper or Nix environment inspection.
## 24 January 2026
- Updated Hyprland version to v0.53.3
- Fixes `hyprpm` issues
- All other packages remain at the same version
## 23 January 2026
- New layout for building Hyprland Source
- The `build` directory will hold the source and compiler output
- Now you can just remove the build directory after install
- Updated the default Hyprland version to `v0.53.2`
- Updated the documentation on the new directory layout
- Fixed issue of Fastfetch reading old hyprland version file
## 21 January 2026
### Important Note for Debian `Trixie` users.
- If you later upgrade Debian to `Forky` or `SID` you **MUST** recompile Hyprland!!
- Run `update-hyprland --install --with-deps`
- Reboot after
- Failure to do so will prevent Hyprland from starting
- You will be returned to the login manager
## 15 January 2026
- Updated README
- Added not about not supporting `Kali` Linux
- Update info on NVIDIA GPUs
- Cleaning up some formatting
## 02 January 2026 ## 02 January 2026
### > Note: Support for Hyprland v0.53.2 is now available for Debian Stable (Trixie) ### > Note: Support for Hyprland v0.53.1 is now available for Debian Stable (Trixie)
### > At this time it should be considered BETA, not for production use ### > At this time it should be considered BETA, not for production use
@ -53,7 +11,7 @@
### > Only Intel, AMD, and in VMs ### > Only Intel, AMD, and in VMs
- Updated: - Updated:
- Default Hyprland stack versions now target 0.53.2 (see `hypr-tags.env`) - Default Hyprland stack versions now target 0.53.1 (see `hypr-tags.env`)
- Added trixie compatibility mode flags: - Added trixie compatibility mode flags:
- `--build-trixie` / `--no-trixie` (auto-detected on Debian 13) - `--build-trixie` / `--no-trixie` (auto-detected on Debian 13)
- Added `--force-update` to refresh pinned package versions - Added `--force-update` to refresh pinned package versions

View File

@ -1,81 +0,0 @@
# Código de Conducta del Pacto del Colaborador
[Ver versión en inglés](./CODE_OF_CONDUCT.md)
## Nuestro compromiso
Nosotros, como miembros, contribuyentes y líderes, nos comprometemos a hacer que la participación en nuestra comunidad sea una experiencia libre de acoso para todas las personas, sin distinción de edad, complexión, discapacidad visible o invisible, etnia, características sexuales, identidad y expresión de género, nivel de experiencia, educación, situación socioeconómica, nacionalidad, apariencia personal, raza, religión, orientación o identidad sexual.
Nos comprometemos a actuar e interactuar de maneras que contribuyan a una comunidad abierta, acogedora, diversa, inclusiva y saludable.
## Nuestros estándares
Ejemplos de comportamiento que contribuye a un entorno positivo para nuestra comunidad incluyen:
- Demostrar empatía y amabilidad hacia otras personas.
- Ser respetuoso con opiniones, puntos de vista y experiencias que difieran de las nuestras.
- Dar y aceptar con gracia retroalimentación constructiva.
- Asumir la responsabilidad y disculparse ante quienes se vean afectados por nuestros errores, y aprender de la experiencia.
- Centrarse en lo que es mejor no solo para nosotros como individuos, sino para la comunidad en su conjunto.
Ejemplos de comportamiento inaceptable incluyen:
- El uso de lenguaje o imágenes sexualizadas, y cualquier tipo de atención o insinuación sexual.
- Troleo, comentarios insultantes o despectivos, y ataques personales o políticos.
- Acoso público o privado.
- Publicación de información privada de otras personas, como direcciones físicas o de correo electrónico, sin su permiso explícito.
- Otra conducta que, razonablemente, pudiera considerarse inapropiada en un entorno profesional.
## Responsabilidades de cumplimiento
Los líderes de la comunidad son responsables de aclarar y hacer cumplir nuestros estándares de comportamiento aceptable y tomarán medidas correctivas apropiadas y justas en respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino.
Los líderes de la comunidad tienen el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, confirmaciones de cambios (commits), código, ediciones del wiki, incidencias y otras contribuciones que no estén alineadas con este Código de Conducta, y comunicarán los motivos de las decisiones de moderación cuando corresponda.
## Alcance
Este Código de Conducta se aplica a todos los espacios de la comunidad y también cuando una persona representa oficialmente a la comunidad en espacios públicos. Ejemplos de representar a nuestra comunidad incluyen usar una dirección de correo electrónico oficial, publicar a través de una cuenta oficial en redes sociales o actuar como representante designado en un evento en línea o presencial.
## Cumplimiento
Los casos de comportamiento abusivo, acosador o de otra forma inaceptable pueden ser reportados a los líderes de la comunidad responsables del cumplimiento en mail[at]ml4w.com. Todas las quejas serán revisadas e investigadas de manera rápida y justa.
Todos los líderes de la comunidad están obligados a respetar la privacidad y seguridad de quien reporte cualquier incidente.
## Guías de aplicación
Los líderes de la comunidad seguirán estas Guías de Impacto Comunitario para determinar las consecuencias por cualquier acción que consideren en violación de este Código de Conducta:
### 1. Corrección
Impacto comunitario: Uso de lenguaje inapropiado u otro comportamiento considerado no profesional o no bienvenido en la comunidad.
Consecuencia: Una advertencia privada y por escrito de parte de los líderes de la comunidad, brindando claridad sobre la naturaleza de la violación y una explicación de por qué el comportamiento fue inapropiado. Se puede solicitar una disculpa pública.
### 2. Advertencia
Impacto comunitario: Una violación por un incidente único o una serie de acciones.
Consecuencia: Una advertencia con consecuencias para comportamientos continuados. Ninguna interacción con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el Código de Conducta, por un período de tiempo especificado. Esto incluye evitar interacciones en espacios de la comunidad así como en canales externos como redes sociales. Violaciones a estos términos pueden llevar a una suspensión temporal o permanente.
### 3. Suspensión temporal
Impacto comunitario: Una violación grave de los estándares de la comunidad, incluido el comportamiento inapropiado sostenido.
Consecuencia: Una suspensión temporal de cualquier tipo de interacción o comunicación pública con la comunidad por un período de tiempo especificado. No se permite interacción pública o privada con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el Código de Conducta, durante este período. Violar estos términos puede llevar a una suspensión permanente.
### 4. Suspensión permanente
Impacto comunitario: Demostrar un patrón de violación de los estándares de la comunidad, incluido el comportamiento inapropiado sostenido, acoso a una persona o agresión o desprecio hacia clases de individuos.
Consecuencia: Suspensión permanente de cualquier tipo de interacción pública dentro de la comunidad.
## Atribución
Este Código de Conducta está adaptado del [Contributor Covenant][homepage], versión 2.0, disponible en https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Las Guías de Impacto Comunitario se inspiraron en la [escala de aplicación del código de conducta de Mozilla](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
Para respuestas a preguntas comunes sobre este código de conducta, vea las preguntas frecuentes en https://www.contributor-covenant.org/faq. Traducciones disponibles en https://www.contributor-covenant.org/translations.

View File

@ -1,148 +0,0 @@
# Guía para Mensajes de Commit
[Ver versión en inglés](./COMMIT_MESSAGE_GUIDELINES.md)
Un buen mensaje de commit debe ser descriptivo y aportar contexto sobre los cambios realizados. Esto facilita entender y revisar los cambios en el futuro.
## Recomendaciones
- Empieza con un resumen breve de los cambios del commit.
- Usa el modo imperativo en el resumen, como si dieras una instrucción. Por ejemplo, "Add feature" en lugar de "Added feature".
- Proporciona detalles adicionales en el cuerpo del mensaje, si es necesario: motivo del cambio, impacto, dependencias añadidas o eliminadas, etc.
- Mantén cada línea en 72 caracteres o menos para que sea fácil de leer en la salida de `git log`.
### Ejemplos de buenos mensajes
- "Add authentication feature for user login"
- "Fix bug causing application to crash on startup"
- "Update documentation for API endpoints"
Recordatorio: escribir mensajes de commit descriptivos ahorra tiempo en el futuro y ayuda a otras personas a entender los cambios hechos al código.
## Tipos de commit
A continuación, una lista (ampliable) de tipos de commit que puedes usar:
`feat`: Añade una característica nueva al proyecto
```markdown
feat: Add multi-image upload support
```
`fix`: Corrige un error o problema en el proyecto
```markdown
fix: Fix bug causing application to crash on startup
```
`docs`: Cambios en documentación
```markdown
docs: Update documentation for API endpoints
```
`style`: Cambios cosméticos o de formato (colores, formateo de código, etc.)
```markdown
style: Update colors and formatting
```
`refactor`: Cambios internos que no alteran el comportamiento, pero mejoran calidad/mantenibilidad
```markdown
refactor: Remove unused code
```
`test`: Añadir o modificar tests
```markdown
test: Add tests for new feature
```
`chore`: Cambios que no encajan en otras categorías (actualizar dependencias, configurar build, etc.)
```markdown
chore: Update dependencies
```
`perf`: Mejoras de rendimiento
```markdown
perf: Improve performance of image processing
```
`security`: Aborda temas de seguridad
```markdown
security: Update dependencies to address security issues
```
`merge`: Fusiones de ramas
```markdown
merge: Merge branch 'feature/branch-name' into develop
```
`revert`: Revertir un commit previo
```markdown
revert: Revert "Add feature"
```
`build`: Cambios en el sistema de build o dependencias
```markdown
build: Update dependencies
```
`ci`: Cambios en la integración continua (CI)
```markdown
ci: Update CI configuration
```
`config`: Cambios en archivos de configuración
```markdown
config: Update configuration files
```
`deploy`: Cambios en el proceso de despliegue
```markdown
deploy: Update deployment scripts
```
`init`: Inicialización de repositorio o proyecto
```markdown
init: Initialize project
```
`move`: Mover archivos o directorios
```markdown
move: Move files to new directory
```
`rename`: Renombrar archivos o directorios
```markdown
rename: Rename files
```
`remove`: Eliminar archivos o directorios
```markdown
remove: Remove files
```
`update`: Actualización de código, dependencias u otros componentes
```markdown
update: Update code
```
Estos son solo ejemplos; puedes definir tipos personalizados si los usas de forma consistente y con mensajes claros y descriptivos.
**Importante:** Si planeas usar un tipo de commit personalizado que no esté en la lista, añádelo aquí para que otras personas lo entiendan también. Crea un pull request para incluirlo en este archivo.

View File

@ -1,58 +0,0 @@
# Guía para Contribuir a KooL Hyprland Projects (Debian)
[Ver versión en inglés](./CONTRIBUTING.md)
¡Gracias por tu interés en contribuir! Aceptamos correcciones de errores, nuevas características, mejoras de documentación y otras mejoras generales.
## Primeros pasos
1. Haz un fork del repositorio (rama `development`) en tu cuenta de GitHub.
- Botón **Fork** o [enlace directo](https://github.com/JaKooLit/Debian-Hyprland/fork).
- Desmarca la opción de copiar solo la rama `main` para incluir `development` y otras ramas.
2. Clona tu fork en tu equipo:
```bash
git clone --depth=1 -b development https://github.com/JaKooLit/Debian-Hyprland.git
```
3. Crea una rama para tus cambios:
```bash
git checkout -b tu-rama
```
4. Realiza tus cambios y crea un commit con mensaje descriptivo (sigue la [guía de commits](./COMMIT_MESSAGE_GUIDELINES.md)):
```bash
git commit -m "feat: add a new feature"
```
5. Sube tu rama a tu fork:
```bash
git push origin tu-rama
```
6. Abre un **pull request** contra `development`.
- Usa la [plantilla de PR](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) y añade etiquetas relevantes.
## Directrices
- Sigue el estilo de código del proyecto.
- Actualiza la documentación cuando sea necesario.
- Añade tests si aplica y verifica que pasen.
- Mantén el PR enfocado; evita cambios no relacionados.
- Revisa estos archivos útiles:
- [bug.yml](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/ISSUE_TEMPLATE/bug.yml)
- [feature.yml](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/ISSUE_TEMPLATE/feature.yml)
- [documentation-update.yml](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/ISSUE_TEMPLATE/documentation-update.yml)
- [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md)
- [COMMIT_MESSAGE_GUIDELINES.md](./COMMIT_MESSAGE_GUIDELINES.md)
- [CONTRIBUTING.md](./CONTRIBUTING.md)
- [LICENSE](https://github.com/JaKooLit/Debian-Hyprland/blob/main/LICENSE.md)
- [README.md](https://github.com/JaKooLit/Debian-Hyprland/blob/main/README.md)
## Contacto
Para preguntas, usa [GitHub Discussions](https://github.com/JaKooLit/Debian-Hyprland/discussions) o el [Servidor de Discord](https://discord.gg/kool-tech-world).

View File

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

View File

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

View File

@ -13,14 +13,6 @@
<br/> <br/>
</div> </div>
## IMPORTANT note for Debian `Trixie` users
> If you later update Debian to `Forky` or `SID` you **MUST** recompile Hyprland!!
> Run `update-hyprland.sh --install --with-deps`
> Reboot afterwards
> Failure to do so will prevent Hyprland from starting under `Forky` or `SID`
> It will return to the login manager
<div align="center"> <div align="center">
<br> <br>
<a href="#-announcement-"><kbd><br>Read this First<br></kbd></a>&ensp;&ensp; <a href="#-announcement-"><kbd><br>Read this First<br></kbd></a>&ensp;&ensp;
@ -43,7 +35,7 @@
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki"><kbd><br>Wiki<br></kbd></a>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki"><kbd><br>Wiki<br></kbd></a>&ensp;&ensp;
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd><br>Keybinds<br></kbd></a>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd><br>Keybinds<br></kbd></a>&ensp;&ensp;
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd><br>FAQ<br></kbd></a>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd><br>FAQ<br></kbd></a>&ensp;&ensp;
<a href="https://discord.gg/RZJgC7KAKm"><kbd><br>Discord<br></kbd></a> <a href="https://discord.gg/kool-tech-world"><kbd><br>Discord<br></kbd></a>
</div><br> </div><br>
<p align="center"> <p align="center">
@ -78,54 +70,34 @@
#### ⚠️ Pre-requisites and VERY Important #### ⚠️ Pre-requisites and VERY Important
> Note: At this time `Kali` Linux is not supported. - Do not run this installer as sudo or as root
> A number of users have reported issues installing and using the Dotfiles - This Installer requires a user with a priviledge to install packages
- Needs a Debian 13 Trixie or greater. As it needs newer wayland packages!
- Do not run this installer with `sudo` or as `root` - edit your `/etc/apt/sources.list` and **remove** `#` on lines with `deb-src` to enable source packaging else will not install properly especially Hyprland
- This Installer requires a user with a `sudo` privileges to install packages
- Debian 13 Trixie or greater. For the correct `GCC` compiler and libs
- Edit your `/etc/apt/sources.list` and **remove** `#` on lines with `deb-src` to enable source packaging else will not install properly especially Hyprland
```bash ```bash
sudo nano /etc/apt/sources.list sudo nano /etc/apt/sources.list
``` ```
- Delete `#` on the lines with `deb-src` - delete # on the lines with 'deb-src'
- Make sure to install `non-free` repository especially for users with NVIDIA GPUs. You can also install non-free drivers if required. - ensure to allow to install non-free drivers especially for users with NVIDIA gpus. You can also install non-free drivers if required. Edit install-scripts/nvidia.sh and change the nvidia stuff's if required
- Edit `install-scripts/nvidia.sh` and change the NVIDIA settings if required
> Note: For users with newer NVIDIA GPUs, especially, RTX5000 series, we strongly suggest you manually install the current `open` drivers for NVIDIA
> Not install them from Jak's Debian install script
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧 ### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
[Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md) [Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md)
- 10 January 2026 Update!
- Debian now builds Hyprland v0.53.2!
- This requires the just released `Debian-Hyprland v2.9.4` installer
- Debian 13 (`Trixie`, aka `Stable`)
- While it does now support v0.53.2
- 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
- 10 October 2025 Update! - 10 October 2025 Update!
- Hyprland-Debian nows builds 0.51.1 from source! - Hyprland-Debian nows builds 0.51.1 from source!
- 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 > Note: Newer Hyprland versions (0.53.x+) may require compatibility shims on Debian 13 (Trixie). > Use the provided update/install scripts with `--build-trixie` if needed. - If you are currently running 0.49, or 0.50, you can upgrade to 0.51.1
> Note: Newer Hyprland versions (0.53.x+) may require compatibility shims on Debian 13 (Trixie).
> 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
#### ✨ Some notes on this installer / Prerequisites #### ✨ Some notes on this installer / Prerequisites
- Recommend installing SDDM. Apart from GDM and SDDM, other Login Managers may not launch `Hyprland`. - Recommend to install SDDM. Apart from GDM and SDDM, any other Login Manager may not work nor launch Hyprland. However, hyprland can be launched through tty by type Hyprland
- yprland can be launched through tty by typing:
- Prior to Hyprland v0.53.x `Hyprland` or `hyprland`
- After Hyprland v0.53.x you must use `start-hyprland`
- Otherwise will generate and error at start up.
- You might need to update the login manager if not using SDDM or GDM
- 🕯️ network-manager-gnome (nm-applet) _has been removed_ from the packages to install. This is because it is known to restart the networkmanager causing issues in the installation process. After you boot up, inorder to get the network-manager applet, install network-manager-gnome. `sudo apt install network-manager-gnome` See below if your network or wifi became unmanaged after installation - 🕯️ network-manager-gnome (nm-applet) _has been removed_ from the packages to install. This is because it is known to restart the networkmanager causing issues in the installation process. After you boot up, inorder to get the network-manager applet, install network-manager-gnome. `sudo apt install network-manager-gnome` See below if your network or wifi became unmanaged after installation
### 🚩 changing login manager to SDDM ### 🚩 changing login manager to SDDM
@ -217,9 +189,7 @@ chmod +x install.sh
**Most common question I got is, Hey Ja, Why the heck it is taking long time to install? Other distro like Arch its only a minute or two. Why here takes like forever?!?!?** **Most common question I got is, Hey Ja, Why the heck it is taking long time to install? Other distro like Arch its only a minute or two. Why here takes like forever?!?!?**
- Most of the core packages are downloaded, some have to be compiled from source. - Well, most of the core packages are downloaded and Build and compiled from _SOURCE_. Unlike Other distros, they already have prepacked binary that can just download and install.
- Unlike Other distros, these packages already have prepacked binary that can just download and install.
- This adds to the install time
## 🛎 **_DEBIAN Hyprland Dots UPDATING NOTES_** ## 🛎 **_DEBIAN Hyprland Dots UPDATING NOTES_**
@ -237,7 +207,7 @@ Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds) Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
> [!TIP] > [!TIP]
> KooL Hyprland has a searchable keybind rofi menu. (`SUPER SHIFT K`) or right click the `HINTS` waybar button > KooL Hyprland has a searchable keybind function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button
#### 🙋 👋 Having issues or questions? #### 🙋 👋 Having issues or questions?
@ -251,9 +221,7 @@ Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
- `./install-scripts/sddm.sh` - to reinstall sddm - `./install-scripts/sddm.sh` - to reinstall sddm
> [!IMPORTANT] > [!IMPORTANT]
> DO NOT CD into `install-scripts` directory to run any of those scripts > DO NOT CD into install-scripts directory as script as it will fail. Scripts are designed to ran outside install-scripts directory for installation logging purposes.
> The scripts are designed to ran outside `install-scripts` directory.
> If you do the scripts will fail.
#### 🛣️ Roadmap #### 🛣️ Roadmap
@ -272,7 +240,7 @@ log into your account
) )
``` ```
- add `env = WLR_DRM_DEVICES,/dev/dri/cardX` to the ENVvariables config `~/.config/hypr/UserConfigs/ENVariables.conf` ; X being where the symlink of the gpu points to - add "env = WLR_DRM_DEVICES,/dev/dri/cardX" to the ENVvariables config `~/.config/hypr/UserConfigs/ENVariables.conf` ; X being where the symlink of the gpu points to
- more info from the hyprland wiki [`Hyprland Wiki Link`](https://wiki.hyprland.org/FAQ/#my-external-monitor-is-blank--doesnt-render--receives-no-signal-laptop) - more info from the hyprland wiki [`Hyprland Wiki Link`](https://wiki.hyprland.org/FAQ/#my-external-monitor-is-blank--doesnt-render--receives-no-signal-laptop)

View File

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

View File

@ -1,13 +1,18 @@
# Central tag overrides for the Hyprland stack
# You can edit these values or let update-hyprland.sh manage them.
# Each module script reads its TAG from these environment variables if set.
# Hyprland 0.53.x stack (includes hyprwire)
HYPRLAND_TAG=v0.53.1
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.11.0
HYPRLANG_TAG=v0.6.8
HYPRGRAPHICS_TAG=v0.5.0 HYPRGRAPHICS_TAG=v0.5.0
HYPRLAND_GUIUTILS_TAG=v0.2.1 HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.7.0 HYPRLAND_PROTOCOLS_TAG=v0.7.0
HYPRLAND_QT_SUPPORT_TAG=v0.1.0 HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.5 HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRLAND_TAG=v0.53.3 HYPRLAND_GUIUTILS_TAG=v0.2.0
HYPRLANG_TAG=v0.6.8
HYPRTOOLKIT_TAG=v0.5.3
HYPRUTILS_TAG=v0.11.0
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRWIRE_TAG=v0.2.1 HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46 WAYLAND_PROTOCOLS_TAG=1.46

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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