Compare commits

...

10 Commits

Author SHA1 Message Date
Donald Williams
7a3fbdaa15
Fixed build issues Hyprland on debian stable (trixie) (#237)
* 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

* Fix package installation: skip plugins and debug symbols by default, improve dependency handling

* Add comprehensive troubleshooting guide for package installation issues

* Fix package installation path handling: use full paths instead of cd to preserve working directory

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Fixing script permissions

* fixing hyprwire build error

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

 Changes to be committed:
	modified:   hyprwire.sh

* Still fixing hyprwire build errors

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

 Changes to be committed:
	modified:   hyprwire.sh

* 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

* 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

* 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

* Fixing build error on hyprland

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

 Changes to be committed:
	modified:   hyprland.sh

* 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

* 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

* Fixind SED error

* Hyprland tag set to 52.2

* 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

* 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

* 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

* Fixing update-hyprland

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

 Changes to be committed:
	modified:   update-hyprland.sh

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Sync README/CHANGELOG with main

* Updated CHANGELOG and README re: debian trixie upgrades to Forky+

You must recompile Hyprland
`update-hyprland --install --with-deps`
Otherwise hyprland won't start
You will be returned to the login manager

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   README.md

* Fixed install script to pull current headers for versioning

Fastfetch was showing wrong version duo to header files from 52.2

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Improved syncing versioning

  Gets commit hash, tag, date, commit count, dirty state from hyprland --version.
  Pulls library versions from hyprland --version first, and falls back to hypr-tags.env if missing.
  Writes those values into /usr/include/hyprland/src/version.h.

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Fixed ver mismatch in FF  Pinned stable to 53.2 create build dir

Now the code will compile in build directory vs. base directory
Easier to clean up

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   README.md
	modified:   hypr-tags.env
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh

* Moved source and builds to build dir

Cleanup is now just removing the build directory and install-logs

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

 Changes to be committed:
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/dotfiles-branch.sh
	modified:   install-scripts/gtk_themes.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/rog.sh
	modified:   install-scripts/sddm_theme.sh
	modified:   install-scripts/swww.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   install-scripts/zsh_pokemon.sh

* Fixed build error with hyprtoolkit

* Updated docs for new build dir layout and how to clean up after

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

 Changes to be committed:
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md

* Updated CHANGELOG with build dir change and fixes

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

 Changes to be committed:
	modified:   CHANGELOG.md

* Updated env-tag to Hyprland v0.53.3 fixed hyprpm

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   hypr-tags.env

* Updated pinned version to 0.53.3

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh

* Updated CHANGELOG text

* Fixed build issue with debian 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.
▪  Makes start-hyprland exec Hyprland directly, with no nixGL wrapper or Nix environment inspection.

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

 Changes to be committed:
	new file:   assets/0002-start-hyprland-no-nixgl.patch
	modified:   install-scripts/hyprland.sh

* Fixing the fix

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

 Changes to be committed:
	modified:   assets/0002-start-hyprland-no-nixgl.patch

* Removed check for debian Hyprland packages not an option now

All builds are from source

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

 Changes to be committed:
	modified:   install.sh

* Updated CHANGELOG

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

 Changes to be committed:
	modified:   CHANGELOG.md
2026-01-27 16:53:03 -05:00
Donald Williams
2a01d9b65f
Development to main : Update Hyprland version to 0.53.3 to fix hyprpm (#236)
* 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

* Fix package installation: skip plugins and debug symbols by default, improve dependency handling

* Add comprehensive troubleshooting guide for package installation issues

* Fix package installation path handling: use full paths instead of cd to preserve working directory

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Fixing script permissions

* fixing hyprwire build error

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

 Changes to be committed:
	modified:   hyprwire.sh

* Still fixing hyprwire build errors

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

 Changes to be committed:
	modified:   hyprwire.sh

* 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

* 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

* 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

* Fixing build error on hyprland

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

 Changes to be committed:
	modified:   hyprland.sh

* 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

* 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

* Fixind SED error

* Hyprland tag set to 52.2

* 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

* 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

* 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

* Fixing update-hyprland

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

 Changes to be committed:
	modified:   update-hyprland.sh

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Sync README/CHANGELOG with main

* Updated CHANGELOG and README re: debian trixie upgrades to Forky+

You must recompile Hyprland
`update-hyprland --install --with-deps`
Otherwise hyprland won't start
You will be returned to the login manager

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   README.md

* Fixed install script to pull current headers for versioning

Fastfetch was showing wrong version duo to header files from 52.2

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Improved syncing versioning

  Gets commit hash, tag, date, commit count, dirty state from hyprland --version.
  Pulls library versions from hyprland --version first, and falls back to hypr-tags.env if missing.
  Writes those values into /usr/include/hyprland/src/version.h.

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Fixed ver mismatch in FF  Pinned stable to 53.2 create build dir

Now the code will compile in build directory vs. base directory
Easier to clean up

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   README.md
	modified:   hypr-tags.env
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh

* Moved source and builds to build dir

Cleanup is now just removing the build directory and install-logs

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

 Changes to be committed:
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/dotfiles-branch.sh
	modified:   install-scripts/gtk_themes.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/rog.sh
	modified:   install-scripts/sddm_theme.sh
	modified:   install-scripts/swww.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   install-scripts/zsh_pokemon.sh

* Fixed build error with hyprtoolkit

* Updated docs for new build dir layout and how to clean up after

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

 Changes to be committed:
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md

* Updated CHANGELOG with build dir change and fixes

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

 Changes to be committed:
	modified:   CHANGELOG.md

* Updated env-tag to Hyprland v0.53.3 fixed hyprpm

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   hypr-tags.env

* Updated pinned version to 0.53.3

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh

* Updated CHANGELOG text
2026-01-24 17:19:24 -05:00
Donald Williams
886f22ede3
Development to main Pin def v0.53.2 chg build dir location fix versioning (#235)
* 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

* Fix package installation: skip plugins and debug symbols by default, improve dependency handling

* Add comprehensive troubleshooting guide for package installation issues

* Fix package installation path handling: use full paths instead of cd to preserve working directory

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Fixing script permissions

* fixing hyprwire build error

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

 Changes to be committed:
	modified:   hyprwire.sh

* Still fixing hyprwire build errors

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

 Changes to be committed:
	modified:   hyprwire.sh

* 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

* 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

* 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

* Fixing build error on hyprland

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

 Changes to be committed:
	modified:   hyprland.sh

* 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

* 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

* Fixind SED error

* Hyprland tag set to 52.2

* 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

* 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

* 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

* Fixing update-hyprland

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

 Changes to be committed:
	modified:   update-hyprland.sh

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Sync README/CHANGELOG with main

* Updated CHANGELOG and README re: debian trixie upgrades to Forky+

You must recompile Hyprland
`update-hyprland --install --with-deps`
Otherwise hyprland won't start
You will be returned to the login manager

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   README.md

* Fixed install script to pull current headers for versioning

Fastfetch was showing wrong version duo to header files from 52.2

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Improved syncing versioning

  Gets commit hash, tag, date, commit count, dirty state from hyprland --version.
  Pulls library versions from hyprland --version first, and falls back to hypr-tags.env if missing.
  Writes those values into /usr/include/hyprland/src/version.h.

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

 Changes to be committed:
	modified:   install-scripts/hyprland.sh

* Fixed ver mismatch in FF  Pinned stable to 53.2 create build dir

Now the code will compile in build directory vs. base directory
Easier to clean up

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md
	modified:   README.md
	modified:   hypr-tags.env
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh

* Moved source and builds to build dir

Cleanup is now just removing the build directory and install-logs

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

 Changes to be committed:
	modified:   install-scripts/Global_functions.sh
	modified:   install-scripts/ags.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/dotfiles-branch.sh
	modified:   install-scripts/gtk_themes.sh
	modified:   install-scripts/hyprcursor.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hypridle.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/hyprlock.sh
	modified:   install-scripts/hyprpolkitagent.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/quickshell.sh
	modified:   install-scripts/rofi-wayland.sh
	modified:   install-scripts/rog.sh
	modified:   install-scripts/sddm_theme.sh
	modified:   install-scripts/swww.sh
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   install-scripts/xdph.sh
	modified:   install-scripts/xkbcommon.sh
	modified:   install-scripts/zsh_pokemon.sh

* Fixed build error with hyprtoolkit

* Updated docs for new build dir layout and how to clean up after

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

 Changes to be committed:
	modified:   Debian-Hyprland-Install-Upgrade.es.md
	modified:   Debian-Hyprland-Install-Upgrade.md

* Updated CHANGELOG with build dir change and fixes

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

 Changes to be committed:
	modified:   CHANGELOG.md
2026-01-23 20:40:52 -05:00
Donald Williams
6d8fe7f359
Development to main merge (#234)
* 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

* Fix package installation: skip plugins and debug symbols by default, improve dependency handling

* Add comprehensive troubleshooting guide for package installation issues

* Fix package installation path handling: use full paths instead of cd to preserve working directory

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Fixing script permissions

* fixing hyprwire build error

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

 Changes to be committed:
	modified:   hyprwire.sh

* Still fixing hyprwire build errors

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

 Changes to be committed:
	modified:   hyprwire.sh

* 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

* 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

* 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

* Fixing build error on hyprland

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

 Changes to be committed:
	modified:   hyprland.sh

* 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

* 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

* Fixind SED error

* Hyprland tag set to 52.2

* 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

* 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

* 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

* Fixing update-hyprland

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

 Changes to be committed:
	modified:   update-hyprland.sh

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Sync README/CHANGELOG with main

* Updated CHANGELOG and README re: debian trixie upgrades to Forky+

You must recompile Hyprland
`update-hyprland --install --with-deps`
Otherwise hyprland won't start
You will be returned to the login manager

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

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   README.md
2026-01-21 13:17:57 -05:00
Don Williams
d9f4a876da Updated README for Kali linux and formatting / grammer fixes
On branch main
 Your branch is up to date with 'origin/main'.

 Changes to be committed:
	modified:   CHANGELOG.md
	modified:   README.md
2026-01-15 20:02:14 -05:00
Donald Williams
a6f603cf5a
Update Discord link in README.md
Link invalid after server name change
2026-01-13 19:27:14 -05:00
Don Williams
42cd493027 Merged development to main to redo v2.9.4 release properly
On branch main
 Your branch is up to date with 'origin/main'.

 Changes to be committed:
	renamed:    CHANGELOGS.md -> CHANGELOG.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-scripts/hyprland-guiutils.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprwire.sh
	modified:   install-scripts/xdph.sh
	modified:   install.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2026-01-12 08:14:45 -05:00
Don Williams
6ccabc5e19 Added Spanish Translations
On branch main
 Your branch is up to date with 'origin/main'.

 Changes to be committed:
	new file:   CODE_OF_CONDUCT.es.md
	new file:   COMMIT_MESSAGE_GUIDELINES.es.md
	new file:   CONTRIBUTING.es.md
2026-01-11 20:24:38 -05:00
Don Williams
2c8986ac5e Upd README for Debian 13 and related updates, spelling, grammer fixes
On branch main
 Your branch is up to date with 'origin/main'.

 Changes to be committed:
	modified:   README.md
2026-01-11 03:50:57 -05:00
Donald Williams
030198fb6e
Small fix to refresh-tags, update-hyprland scripts (#232)
* 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

* Fix package installation: skip plugins and debug symbols by default, improve dependency handling

* Add comprehensive troubleshooting guide for package installation issues

* Fix package installation path handling: use full paths instead of cd to preserve working directory

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* 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

* Fixing script permissions

* fixing hyprwire build error

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

 Changes to be committed:
	modified:   hyprwire.sh

* Still fixing hyprwire build errors

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

 Changes to be committed:
	modified:   hyprwire.sh

* 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

* 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

* 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

* Fixing build error on hyprland

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

 Changes to be committed:
	modified:   hyprland.sh

* 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

* 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

* Fixind SED error

* Hyprland tag set to 52.2

* 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

* 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

* 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

* Fixing update-hyprland

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

 Changes to be committed:
	modified:   update-hyprland.sh

* 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

* 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

* 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

* 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

* 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 21:43:33 -05:00
42 changed files with 1662 additions and 531 deletions

View File

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

81
CODE_OF_CONDUCT.es.md Normal file
View File

@ -0,0 +1,81 @@
# 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

@ -0,0 +1,148 @@
# 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.

58
CONTRIBUTING.es.md Normal file
View File

@ -0,0 +1,58 @@
# 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

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

View File

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

View File

@ -13,6 +13,14 @@
<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;
@ -35,7 +43,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/kool-tech-world"><kbd><br>Discord<br></kbd></a> <a href="https://discord.gg/RZJgC7KAKm"><kbd><br>Discord<br></kbd></a>
</div><br> </div><br>
<p align="center"> <p align="center">
@ -70,34 +78,54 @@
#### ⚠️ Pre-requisites and VERY Important #### ⚠️ Pre-requisites and VERY Important
- Do not run this installer as sudo or as root > Note: At this time `Kali` Linux is not supported.
- This Installer requires a user with a priviledge to install packages > A number of users have reported issues installing and using the Dotfiles
- Needs a Debian 13 Trixie or greater. As it needs newer wayland packages!
- edit your `/etc/apt/sources.list` and **remove** `#` on lines with `deb-src` to enable source packaging else will not install properly especially Hyprland - Do not run this installer with `sudo` or as `root`
- 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`
- 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 - Make sure to install `non-free` repository especially for users with NVIDIA GPUs. You can also install non-free drivers 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 - 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.
> Note: At this time Debian 13 (Trixie) can't compile v0.52.2+
> Debian Testing and SID can
- 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 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 - Recommend installing SDDM. Apart from GDM and SDDM, other Login Managers may not launch `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
@ -189,7 +217,9 @@ 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?!?!?**
- 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. - Most of the core packages are downloaded, some have to be compiled from source.
- 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_**
@ -207,7 +237,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 function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button > KooL Hyprland has a searchable keybind rofi menu. (`SUPER SHIFT K`) or right click the `HINTS` waybar button
#### 🙋 👋 Having issues or questions? #### 🙋 👋 Having issues or questions?
@ -221,7 +251,9 @@ 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 as script as it will fail. Scripts are designed to ran outside install-scripts directory for installation logging purposes. > DO NOT CD into `install-scripts` directory to run any of those scripts
> The scripts are designed to ran outside `install-scripts` directory.
> If you do the scripts will fail.
#### 🛣️ Roadmap #### 🛣️ Roadmap
@ -240,7 +272,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

@ -0,0 +1,91 @@
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

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

View File

@ -1,15 +1,13 @@
# 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_TAG=v0.52.2
AQUAMARINE_TAG=v0.10.0 AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.10.4 HYPRGRAPHICS_TAG=v0.5.0
HYPRLANG_TAG=v0.6.7 HYPRLAND_GUIUTILS_TAG=v0.2.1
HYPRGRAPHICS_TAG=v0.4.0
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_GUIUTILS_TAG=v0.2.0 HYPRLAND_QTUTILS_TAG=v0.1.5
HYPRLAND_TAG=v0.53.3
HYPRLANG_TAG=v0.6.8
HYPRTOOLKIT_TAG=v0.5.3
HYPRUTILS_TAG=v0.11.0
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRWIRE_TAG=v0.2.1
WAYLAND_PROTOCOLS_TAG=1.46 WAYLAND_PROTOCOLS_TAG=1.46

View File

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

View File

@ -25,6 +25,12 @@ 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,8 +95,9 @@ 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") # Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0") under build/src
for SRC_DIR in "ags" "ags_v1.9.0"; do for OLD 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"
@ -107,11 +108,14 @@ 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
if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then SRC_DIR="$SRC_ROOT/ags_v1.9.0"
cd ags_v1.9.0 || exit 1 if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git "$SRC_DIR"; then
cd "$SRC_DIR" || exit 1
BUILD_DIR="$BUILD_ROOT/ags_v1.9.0"
mkdir -p "$BUILD_DIR"
npm install npm install
meson setup build meson setup "$BUILD_DIR"
if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then if sudo meson install -C "$BUILD_DIR" 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
@ -203,11 +207,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" ../Install-Logs/ || true mv "$MLOG" "$PARENT_DIR/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" ../Install-Logs/ || true mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
exit 1 exit 1
fi fi

View File

@ -41,19 +41,22 @@ 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 # Check if aquamarinedirectory exists and remove it (under build/src)
if [ -d "aquamarine" ]; then SRC_DIR="$SRC_ROOT/aquamarine"
rm -rf "aquamarine" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git "$SRC_DIR"; then
cd aquamarine || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build BUILD_DIR="$BUILD_ROOT/aquamarine"
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -62,7 +65,7 @@ if git clone --recursive -b "$tag" https://github.com/hyprwm/aquamarine.git; the
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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,15 +24,16 @@ 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 # Check if Hyprland-Dots exists (under build/src)
if [ -d Hyprland-Dots-Debian ]; then SRC_DIR="$SRC_ROOT/Hyprland-Dots-Debian"
cd Hyprland-Dots-Debian if [ -d "$SRC_DIR" ]; then
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 Hyprland-Dots-Debian; then if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots "$SRC_DIR"; then
cd Hyprland-Dots-Debian || exit 1 cd "$SRC_DIR" || exit 1
chmod +x copy.sh chmod +x copy.sh
./copy.sh ./copy.sh
else else

View File

@ -29,18 +29,19 @@ 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 # Check if the directory exists and delete it if present (under build/src)
if [ -d "GTK-themes-icons" ]; then SRC_DIR="$SRC_ROOT/GTK-themes-icons"
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 "GTK-themes-icons" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 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 ; then if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git "$SRC_DIR"; then
cd GTK-themes-icons cd "$SRC_DIR"
chmod +x auto-extract.sh chmod +x auto-extract.sh
./auto-extract.sh ./auto-extract.sh
cd .. cd "$PARENT_DIR"
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,25 +45,28 @@ for PKG1 in "${cursor[@]}"; do
fi fi
done done
# Check if hyprcursor folder exists and remove it # Check if hyprcursor folder exists and remove it (under build/src)
if [ -d "hyprcursor" ]; then SRC_DIR="$SRC_ROOT/hyprcursor"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprcursor folder...\n" printf "${NOTE} Removing existing hyprcursor folder...\n"
rm -rf "hyprcursor" rm -rf "$SRC_DIR"
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git "$SRC_DIR"; then
cd hyprcursor || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprcursor"
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
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 ../Install-Logs/ || true mv $MLOG "$PARENT_DIR/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,19 +53,22 @@ 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 # Check if hyprgraphics directory exists and remove it (under build/src)
if [ -d "hyprgraphics" ]; then SRC_DIR="$SRC_ROOT/hyprgraphics"
rm -rf "hyprgraphics" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git "$SRC_DIR"; then
cd hyprgraphics || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprgraphics"
cmake --build ./build --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -74,7 +77,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; the
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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,24 +37,27 @@ for PKG1 in "${idle[@]}"; do
fi fi
done done
# Check if hypridle directory exists and remove it # Check if hypridle directory exists and remove it (under build/src)
if [ -d "hypridle" ]; then SRC_DIR="$SRC_ROOT/hypridle"
rm -rf "hypridle" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git "$SRC_DIR"; then
cd hypridle || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build BUILD_DIR="$BUILD_ROOT/hypridle"
cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
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 ../Install-Logs/ || true mv $MLOG "$PARENT_DIR/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,19 +63,29 @@ done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if hyprland-guiutils directory exists and remove it # Check if hyprland-guiutils directory exists and remove it (under build/src)
if [ -d "hyprland-guiutils" ]; then SRC_DIR="$SRC_ROOT/hyprland-guiutils"
rm -rf "hyprland-guiutils" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git "$SRC_DIR"; then
cd hyprland-guiutils || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build # Prefer /usr/local Hypr* libs so we don't accidentally link against copies in /lib.
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}"
export LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH:-}"
export LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath-link,/usr/local/lib ${LDFLAGS:-}"
export CPPFLAGS="-I/usr/local/include ${CPPFLAGS:-}"
BUILD_DIR="$BUILD_ROOT/hyprland-guiutils"
mkdir -p "$BUILD_DIR"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -84,7 +94,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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,18 +41,21 @@ 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 # Check if hyprland-protocols directory exists and remove it (under build/src)
if [ -d "hyprland-protocols" ]; then SRC_DIR="$SRC_ROOT/hyprland-protocols"
rm -rf "hyprland-protocols" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git "$SRC_DIR"; then
cd hyprland-protocols || exit 1 cd "$SRC_DIR" || exit 1
meson setup build BUILD_DIR="$BUILD_ROOT/hyprland-protocols"
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 2>&1 | tee -a "$MLOG" ; then if sudo meson install -C "$BUILD_DIR" 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"
@ -61,7 +64,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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,19 +61,22 @@ done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if hyprland-qt-support directory exists and remove it # Check if hyprland-qt-support directory exists and remove it (under build/src)
if [ -d "hyprland-qt-support" ]; then SRC_DIR="$SRC_ROOT/hyprland-qt-support"
rm -rf "hyprland-qt-support" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git "$SRC_DIR"; then
cd hyprland-qt-support || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprland-qt-support"
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -82,7 +85,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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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.0" tag="v0.53.3"
# 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,14 +73,17 @@ 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 # Check if Hyprland folder exists and remove it (under build/src)
if [ -d "Hyprland" ]; then SRC_DIR="$SRC_ROOT/Hyprland"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing Hyprland folder...\n" printf "${NOTE} Removing existing Hyprland folder...\n"
rm -rf "Hyprland" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG"
fi fi
if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland" "$SRC_DIR"; then
cd "Hyprland" || exit 1 cd "$SRC_DIR" || 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"
@ -118,14 +121,37 @@ EOF
sed -ri 's|^\s*#embed\s+"\.{0,2}/\.{0,2}/example/hyprland\.conf"\s*$|#include "defaultConfig.bytes.inc"|g' src/config/defaultConfig.hpp || true sed -ri 's|^\s*#embed\s+"\.{0,2}/\.{0,2}/example/hyprland\.conf"\s*$|#include "defaultConfig.bytes.inc"|g' src/config/defaultConfig.hpp || true
fi fi
# Compatibility: some toolchains/libstdc++ do not support std::string operator+ with std::string_view.
# Hyprland hyprctl uses a std::string_view filename; ensure it is converted explicitly.
HYPRCTL_MAIN="$(pwd)/hyprctl/src/main.cpp"
if [ -f "$HYPRCTL_MAIN" ] && grep -q "std::string socketPath" "$HYPRCTL_MAIN"; then
# Only patch if we see a "+ filename" concatenation.
if grep -qE '\+\s*filename\s*;' "$HYPRCTL_MAIN"; then
sed -ri 's/\+\s*filename\s*;/+ std::string(filename);/g' "$HYPRCTL_MAIN" || true
fi
fi
# Apply patch only if it applies cleanly; otherwise skip # Apply patch only if it applies cleanly; otherwise skip
if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then if [ -f "$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" ]; then
if patch -p1 --dry-run <../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then if patch -p1 --dry-run <"$PARENT_DIR/assets/0001-fix-hyprland-compile-issue.patch" >/dev/null 2>&1; then
patch -p1 <../assets/0001-fix-hyprland-compile-issue.patch patch -p1 <"$PARENT_DIR/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}
@ -169,19 +195,121 @@ 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 "${CONFIG_FLAGS[@]}" cmake -S . -B "$BUILD_DIR" "${CONFIG_FLAGS[@]}"
cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then if sudo cmake --install "$BUILD_DIR" 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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,19 +41,22 @@ 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 # Check if hyprlang directory exists and remove it (under build/src)
if [ -d "hyprlang" ]; then SRC_DIR="$SRC_ROOT/hyprlang"
rm -rf "hyprlang" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git "$SRC_DIR"; then
cd hyprlang || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprlang"
cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -62,7 +65,7 @@ if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then
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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,24 +46,27 @@ for PKG1 in "${build_dep[@]}"; do
build_dep "$PKG1" "$LOG" build_dep "$PKG1" "$LOG"
done done
# Check if hyprlock directory exists and remove it # Check if hyprlock directory exists and remove it (under build/src)
if [ -d "hyprlock" ]; then SRC_DIR="$SRC_ROOT/hyprlock"
rm -rf "hyprlock" if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git "$SRC_DIR"; then
cd hyprlock || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprlock"
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
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 ../Install-Logs/ || true mv $MLOG "$PARENT_DIR/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,25 +43,28 @@ for PKG1 in "${polkitagent[@]}"; do
fi fi
done done
# Check if hyprpolkitagent folder exists and remove it # Check if hyprpolkitagent folder exists and remove it (under build/src)
if [ -d "hyprpolkitagent" ]; then SRC_DIR="$SRC_ROOT/hyprpolkitagent"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprpolkitagent folder...\n" printf "${NOTE} Removing existing hyprpolkitagent folder...\n"
rm -rf "hyprpolkitagent" rm -rf "$SRC_DIR"
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git "$SRC_DIR"; then
cd hyprpolkitagent || exit 1 cd "$SRC_DIR" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build BUILD_DIR="$BUILD_ROOT/hyprpolkitagent"
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` mkdir -p "$BUILD_DIR"
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B "$BUILD_DIR"
cmake --build "$BUILD_DIR" --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if sudo cmake --install "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
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 ../Install-Logs/ || true mv $MLOG "$PARENT_DIR/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,18 +40,20 @@ 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 # Check if hyprtoolkit folder exists and remove it (under build/src)
if [ -d "hyprtoolkit" ]; then SRC_DIR="$SRC_ROOT/hyprtoolkit"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprtoolkit folder...\n" printf "${NOTE} Removing existing hyprtoolkit folder...\n"
rm -rf "hyprtoolkit" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG"
fi fi
if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git" "$SRC_DIR"; then
if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then cd "$SRC_DIR" || exit 1
cd "hyprtoolkit" || exit 1 BUILD_DIR="$BUILD_ROOT/hyprtoolkit"
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 2>&1 | tee -a "$MLOG"; then if sudo cmake --install "$BUILD_DIR" 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"
@ -59,7 +61,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then
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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,18 +43,20 @@ 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 # Check if hyprutils folder exists and remove it (under build/src)
if [ -d "hyprutils" ]; then SRC_DIR="$SRC_ROOT/hyprutils"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprutils folder...\n" printf "${NOTE} Removing existing hyprutils folder...\n"
rm -rf "hyprutils" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG"
fi fi
if git clone -b $tag "https://github.com/hyprwm/hyprutils.git" "$SRC_DIR"; then
if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then cd "$SRC_DIR" || exit 1
cd "hyprutils" || exit 1 BUILD_DIR="$BUILD_ROOT/hyprutils"
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 2>&1 | tee -a "$MLOG"; then if sudo cmake --install "$BUILD_DIR" 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"
@ -62,7 +64,7 @@ if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; 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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,20 +55,23 @@ done
printf "${NOTE} Installing hyprwayland-scanner...\n" printf "${NOTE} Installing hyprwayland-scanner...\n"
# Check if hyprwayland-scanner folder exists and remove it # Check if hyprwayland-scanner folder exists and remove it (under build/src)
if [ -d "hyprwayland-scanner" ]; then SRC_DIR="$SRC_ROOT/hyprwayland-scanner"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprwayland-scanner folder...\n" printf "${NOTE} Removing existing hyprwayland-scanner folder...\n"
rm -rf "hyprwayland-scanner" rm -rf "$SRC_DIR"
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; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git "$SRC_DIR"; then
cd hyprwayland-scanner || exit 1 cd "$SRC_DIR" || exit 1
cmake -DCMAKE_INSTALL_PREFIX=/usr -B build BUILD_DIR="$BUILD_ROOT/hyprwayland-scanner"
cmake --build build -j `nproc` mkdir -p "$BUILD_DIR"
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 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -77,7 +80,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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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

@ -12,10 +12,33 @@ if [ -z "${HYPRWIRE_TAG:-}" ]; then
fi fi
if [ -n "${HYPRWIRE_TAG:-}" ]; then tag="$HYPRWIRE_TAG"; fi if [ -n "${HYPRWIRE_TAG:-}" ]; then tag="$HYPRWIRE_TAG"; fi
# Dry-run support # Dry-run support + shim controls
DO_INSTALL=1 DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then FORCE_SHIM=0
NO_SHIM=0
for arg in "$@"; do
case "$arg" in
--dry-run)
DO_INSTALL=0
;;
# Force the compatibility shim used on Debian 13 (trixie) toolchains.
# This is intentionally distro-named so it's obvious what it does for most users.
--build-trixie|--force-shim)
FORCE_SHIM=1
;;
# For testing/sid (or any toolchain that supports std::vector::append_range), allow opting out.
--no-shim)
NO_SHIM=1
;;
esac
done
if [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0 DO_INSTALL=0
fi
if [ $DO_INSTALL -eq 0 ]; then
echo "${NOTE} DRY RUN: install step will be skipped." echo "${NOTE} DRY RUN: install step will be skipped."
fi fi
@ -38,43 +61,87 @@ 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 # Remove existing tree if present (under build/src)
if [ -d "hyprwire" ]; then SRC_DIR="$SRC_ROOT/hyprwire"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing hyprwire folder...\n" printf "${NOTE} Removing existing hyprwire folder...\n"
rm -rf "hyprwire" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 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; then if git clone --recursive -b "$tag" https://github.com/hyprwm/hyprwire.git "$SRC_DIR"; then
cd hyprwire || exit 1 cd "$SRC_DIR" || exit 1
BUILD_DIR="$BUILD_ROOT/hyprwire"
mkdir -p "$BUILD_DIR"
# Temporary compatibility shim for compilers/libstdc++ without std::vector::append_range # Decide whether we need the append_range compatibility shim.
cat > append_range_compat.hpp <<'EOF' # On Debian 13 (trixie), libstdc++ typically lacks std::vector::append_range, so we patch.
# On newer toolchains (testing/sid), prefer building upstream unmodified.
NEED_SHIM=0
if [ "$NO_SHIM" -eq 1 ]; then
NEED_SHIM=0
elif [ "$FORCE_SHIM" -eq 1 ]; then
NEED_SHIM=1
else
CXX_TEST="${CXX:-c++}"
TMPD="$(mktemp -d)"
cat >"$TMPD/append_range_test.cpp" <<'EOF'
#include <vector>
int main() {
std::vector<unsigned char> v;
v.append_range(std::vector<unsigned char>{1,2,3});
return 0;
}
EOF
if "$CXX_TEST" -std=c++23 -c "$TMPD/append_range_test.cpp" -o /dev/null >/dev/null 2>&1; then
NEED_SHIM=0
else
NEED_SHIM=1
fi
rm -rf "$TMPD"
fi
if [ "$NEED_SHIM" -eq 1 ]; then
echo "${NOTE} Applying append_range compatibility shim (use --no-shim to disable; --build-trixie to force)."
# Temporary compatibility shim for toolchains where libstdc++ lacks std::vector::append_range (C++23 library feature).
# Note: append_range in upstream accepts temporaries (e.g. encodeVarInt(...) returns a temporary vector). To support that,
# we bind the expression to a named auto&& first.
cat > append_range_compat.hpp <<'EOF'
#pragma once #pragma once
#include <iterator> #include <iterator>
#define APPEND_RANGE(vec, ...) (vec).insert((vec).end(), std::begin(__VA_ARGS__), std::end(__VA_ARGS__))
// Append any begin/end range to a container, supporting temporaries by binding to auto&&.
#define APPEND_RANGE(vec, ...) do { \
auto&& _r = (__VA_ARGS__); \
(vec).insert((vec).end(), std::begin(_r), std::end(_r)); \
} while(0)
EOF EOF
# Replace X.append_range(Y) -> APPEND_RANGE(X, Y) only where it appears
PATCH_FILES=$(grep -RIl --exclude-dir=.git 'append_range\(' . || true) # Replace X.(.|->)append_range(Y) -> APPEND_RANGE(X, Y) only where it appears
if [ -n "$PATCH_FILES" ]; then PATCH_FILES=$(grep -RIl --exclude-dir=.git -F 'append_range(' . || true)
# Replace LHS .append_range(arg...) with APPEND_RANGE(LHS, arg...) if [ -n "$PATCH_FILES" ]; then
# LHS: identifiers and common member/ptr chains (this->obj, ns::obj.member) # LHS: identifiers and common member/ptr chains (this->obj, ns::obj.member)
echo "$PATCH_FILES" | xargs -r sed -ri 's/([A-Za-z_][A-Za-z0-9_:\->\.]+)\s*\.\s*append_range\s*\(/APPEND_RANGE(\1, /g' echo "$PATCH_FILES" | xargs -r sed -ri 's/([A-Za-z_][A-Za-z0-9_:>.\-]+)\s*(\.|->)\s*append_range\s*\(/APPEND_RANGE(\1, /g'
# Show any remaining occurrences # Show any remaining occurrences
REMAIN=$(grep -RIn --exclude-dir=.git '\.\s*append_range\s*\(' $PATCH_FILES || true) REMAIN=$(grep -RIn --exclude-dir=.git -E '(\.|->)[[:space:]]*append_range[[:space:]]*\(' $PATCH_FILES || true)
if [ -n "$REMAIN" ]; then if [ -n "$REMAIN" ]; then
echo "[WARN] Some append_range() calls remain unpatched:" >&2 echo "[WARN] Some append_range() calls remain unpatched:" >&2
echo "$REMAIN" >&2 echo "$REMAIN" >&2
fi
fi
# Absolute path for forced include
APPEND_HDR="$(pwd)/append_range_compat.hpp"
cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}"
else
echo "${NOTE} Toolchain supports std::vector::append_range; building hyprwire without shim."
cmake -S . -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23
fi fi
fi cmake --build "$BUILD_DIR" -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
# Absolute path for forced include
APPEND_HDR="$(pwd)/append_range_compat.hpp"
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_FLAGS="-include ${APPEND_HDR}"
cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install "$BUILD_DIR" 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"
@ -82,7 +149,7 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
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" ../Install-Logs/ [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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="$PARENT_DIR/.thirdparty/breakpad" BP_DIR="$SRC_ROOT/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="quickshell-src" SRC_DIR="$SRC_ROOT/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,32 +183,33 @@ 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
if ! cmake -S . -B build "${CMAKE_FLAGS[@]}" 2>&1 | tee -a "$MLOG"; then BUILD_DIR="$BUILD_ROOT/quickshell"
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/build.ninja ]; then if [ ! -f "$BUILD_DIR/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 2>&1 | tee -a "$MLOG"; then if ! cmake --build "$BUILD_DIR" 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 2>&1 | tee -a "$MLOG"; then if ! sudo cmake --install "$BUILD_DIR" 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,25 +68,29 @@ 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 # Check if rofi directory exists (under build/src)
if [ -d "rofi-$rofi_tag" ]; then SRC_DIR="$SRC_ROOT/rofi-$rofi_tag"
rm -rf "rofi-$rofi_tag" TAR_PATH="$SRC_ROOT/rofi-$rofi_tag.tar.gz"
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 $release_url wget -O "$TAR_PATH" $release_url
if [ -f "rofi-$rofi_tag.tar.gz" ]; then if [ -f "$TAR_PATH" ]; 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 xf rofi-$rofi_tag.tar.gz tar -C "$SRC_ROOT" -xf "$TAR_PATH"
fi fi
cd rofi-$rofi_tag || exit 1 cd "$SRC_DIR" || exit 1
# Proceed with the installation steps # Proceed with the installation steps
if meson setup build && ninja -C build ; then BUILD_DIR="$BUILD_ROOT/rofi-$rofi_tag"
if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then mkdir -p "$BUILD_DIR"
if meson setup "$BUILD_DIR" && ninja -C "$BUILD_DIR" ; then
if sudo ninja -C "$BUILD_DIR" install 2>&1 | tee -a "$MLOG"; then
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"
@ -96,10 +100,10 @@ else
fi fi
# Move logs to Install-Logs directory # Move logs to Install-Logs directory
mv "$MLOG" ../Install-Logs/ || true mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
cd .. || exit 1 cd .. || exit 1
# clean up # clean up
rm -rf rofi-$rofi_tag.tar.gz rm -rf "$TAR_PATH"
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -38,11 +38,13 @@ 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"
if git clone "$git_url" "$project_name"; then rm -rf "$src_dir"
cd "$project_name" || exit 1 if git clone "$git_url" "$src_dir"; then
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
@ -58,7 +60,7 @@ install_and_log() {
fi fi
#moving logs into main install-logs #moving logs into main install-logs
mv $LOG ../Install-Logs/ || true mv $LOG "$PARENT_DIR/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,15 +31,16 @@ 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 the current directory and remove if it does # Check if $theme_name directory exists in build/src and remove if it does
if [ -d "$theme_name" ]; then SRC_DIR="$SRC_ROOT/$theme_name"
rm -rf "$theme_name" if [ -d "$SRC_DIR" ]; then
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" "$theme_name"; then if git clone --depth=1 "$source_theme" "$SRC_DIR"; then
if [ ! -d "$theme_name" ]; then if [ ! -d "$SRC_DIR" ]; then
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG" echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
fi fi
@ -50,7 +51,7 @@ if git clone --depth=1 "$source_theme" "$theme_name"; then
fi fi
# Move cloned theme to the themes directory # Move cloned theme to the themes directory
sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG" sudo mv "$SRC_DIR" "/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,13 +49,14 @@ done
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}
# Check if swww directory exists # Check if swww directory exists (under build/src)
if [ -d "swww" ]; then SRC_DIR="$SRC_ROOT/swww"
cd swww || exit 1 if [ -d "$SRC_DIR" ]; then
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; then if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git "$SRC_DIR"; then
cd swww || exit 1 cd "$SRC_DIR" || 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
@ -94,7 +95,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" ../Install-Logs/ || true mv "$MLOG" "$PARENT_DIR/Install-Logs/" || true
cd - || exit 1 cd - || exit 1
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@ -39,17 +39,18 @@ 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 # Clean previous clone (under build/src)
if [ -d "wayland-protocols" ]; then SRC_DIR="$SRC_ROOT/wayland-protocols"
rm -rf "wayland-protocols" if [ -d "$SRC_DIR" ]; then
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" wayland-protocols; then if git clone --depth=1 --filter=blob:none "$repo_url" "$SRC_DIR"; then
cd wayland-protocols || exit 1 cd "$SRC_DIR" || 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
@ -67,10 +68,12 @@ if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; 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
meson setup build --prefix=/usr/local BUILD_DIR="$BUILD_ROOT/wayland-protocols"
meson compile -C build -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)" mkdir -p "$BUILD_DIR"
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 2>&1 | tee -a "$MLOG" ; then if sudo meson install -C "$BUILD_DIR" 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"
@ -79,7 +82,7 @@ if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; 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" ../Install-Logs/ || true [ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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

@ -29,6 +29,7 @@ if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
fi fi
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
MLOG="install-$(date +%d-%H%M%S)_xdph2.log"
# Check if the file exists and remove it # Check if the file exists and remove it
[[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland" [[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland"
@ -47,22 +48,26 @@ 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 # Check if xdg-desktop-portal-hyprland folder exists and remove it (under build/src)
if [ -d "xdg-desktop-portal-hyprland" ]; then SRC_DIR="$SRC_ROOT/xdg-desktop-portal-hyprland"
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 "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG" rm -rf "$SRC_DIR" 2>&1 | tee -a "$LOG"
fi fi
if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git" "$SRC_DIR"; then
cd "xdg-desktop-portal-hyprland" || exit 1 cd "$SRC_DIR" || exit 1
cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build BUILD_DIR="$BUILD_ROOT/xdg-desktop-portal-hyprland"
cmake --build build mkdir -p "$BUILD_DIR"
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B "$BUILD_DIR"
printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG" 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"
else else
echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
mv $MLOG ../Install-Logs/ || true # Move the additional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" "$PARENT_DIR/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,25 +40,28 @@ for PKG1 in "${xkbcommon[@]}"; do
fi fi
done done
# Check if xkbcommon folder exists and remove it # Check if xkbcommon folder exists and remove it (under build/src)
if [ -d "libxkbcommon" ]; then SRC_DIR="$SRC_ROOT/libxkbcommon"
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing libxkbcommon folder...\n" printf "${NOTE} Removing existing libxkbcommon folder...\n"
rm -rf "libxkbcommon" rm -rf "$SRC_DIR"
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; then if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git "$SRC_DIR"; then
cd libxkbcommon || exit 1 cd "$SRC_DIR" || exit 1
meson setup build --libdir=/usr/local/lib BUILD_DIR="$BUILD_ROOT/libxkbcommon"
meson compile -C build mkdir -p "$BUILD_DIR"
if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then meson setup "$BUILD_DIR" --libdir=/usr/local/lib
meson compile -C "$BUILD_DIR"
if sudo meson install -C "$BUILD_DIR" 2>&1 | tee -a "$MLOG" ; then
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 ../Install-Logs/ || true mv $MLOG "$PARENT_DIR/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,11 +20,12 @@ 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} ..."
if [ -d "pokemon-colorscripts" ]; then SRC_DIR="$SRC_ROOT/pokemon-colorscripts"
cd pokemon-colorscripts && git pull && sudo ./install.sh && cd .. if [ -d "$SRC_DIR" ]; then
cd "$SRC_DIR" && git pull && sudo ./install.sh && cd ..
else else
git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git && git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git "$SRC_DIR" &&
cd pokemon-colorscripts && sudo ./install.sh && cd .. cd "$SRC_DIR" && sudo ./install.sh && cd ..
fi fi
# Check if ~/.zshrc exists # Check if ~/.zshrc exists

View File

@ -1,9 +1,6 @@
#!/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
@ -105,6 +102,60 @@ if is_ubuntu; then
exit 1 exit 1
fi fi
# Debian Trixie compatibility mode
# Some Hypr* components need source-level shims on Debian 13 (trixie) toolchains.
# Default: auto-detect via /etc/os-release
# Overrides:
# --build-trixie / --no-trixie
# HYPR_BUILD_TRIXIE=1|0 (env)
TRIXIE_MODE="auto"
PRESET_FILE=""
# Parse a small set of supported CLI args (order-independent)
# NOTE: install.sh historically used "$1"/"$2" for --preset; this keeps that working.
args=("$@")
for ((i=0; i<${#args[@]}; i++)); do
case "${args[$i]}" in
--build-trixie)
TRIXIE_MODE="on"
;;
--no-trixie)
TRIXIE_MODE="off"
;;
--preset)
if [ $((i+1)) -lt ${#args[@]} ]; then
PRESET_FILE="${args[$((i+1))]}"
fi
;;
esac
done
# If env explicitly sets HYPR_BUILD_TRIXIE, honor it.
if [ -n "${HYPR_BUILD_TRIXIE+x}" ]; then
if [ "${HYPR_BUILD_TRIXIE}" = "1" ]; then
TRIXIE_MODE="on"
elif [ "${HYPR_BUILD_TRIXIE}" = "0" ]; then
TRIXIE_MODE="off"
fi
fi
# Resolve auto-detection
if [ "$TRIXIE_MODE" = "auto" ]; then
HYPR_BUILD_TRIXIE=0
if [ -f /etc/os-release ]; then
# shellcheck disable=SC1091
. /etc/os-release || true
if [ "${ID:-}" = "debian" ] && [ "${VERSION_CODENAME:-}" = "trixie" ]; then
HYPR_BUILD_TRIXIE=1
fi
fi
elif [ "$TRIXIE_MODE" = "on" ]; then
HYPR_BUILD_TRIXIE=1
else
HYPR_BUILD_TRIXIE=0
fi
export HYPR_BUILD_TRIXIE
# install whiptails if detected not installed. Necessary for this version # install whiptails if detected not installed. Necessary for this version
if ! command -v whiptail >/dev/null; then if ! command -v whiptail >/dev/null; then
echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG" echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG"
@ -159,59 +210,6 @@ 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" \
@ -220,24 +218,8 @@ 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 user to choose build method # Ask if the user wants to proceed (source-only build)
build_method="source" 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?"
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
@ -269,7 +251,13 @@ execute_script() {
if [ -f "$script_path" ]; then if [ -f "$script_path" ]; then
chmod +x "$script_path" chmod +x "$script_path"
if [ -x "$script_path" ]; then if [ -x "$script_path" ]; then
env "$script_path" # Pass --build-trixie to all module scripts when in trixie compatibility mode.
# Scripts that don't care should simply ignore unknown args.
if [ "${HYPR_BUILD_TRIXIE:-0}" = "1" ]; then
env HYPR_BUILD_TRIXIE=1 "$script_path" --build-trixie
else
env HYPR_BUILD_TRIXIE=0 "$script_path"
fi
else else
echo "Failed to make script '$script' executable." | tee -a "$LOG" echo "Failed to make script '$script' executable." | tee -a "$LOG"
fi fi
@ -323,9 +311,9 @@ load_preset() {
fi fi
} }
# Check if --preset argument is passed # Check if --preset argument is passed (order-independent)
if [[ "$1" == "--preset" && -n "$2" ]]; then if [ -n "${PRESET_FILE:-}" ]; then
load_preset "$2" load_preset "$PRESET_FILE"
fi fi
# List of services to check for active login managers # List of services to check for active login managers
@ -492,72 +480,68 @@ echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
sleep 1 sleep 1
execute_script "fonts.sh" execute_script "fonts.sh"
# Build method selection: from source or pre-built packages # Build from source (only method)
if [ "$build_method" = "packages" ]; then # Optional: refresh tags before building the Hyprland stack
echo "${INFO} Installing from ${SKY_BLUE}pre-built packages${RESET}..." | tee -a "$LOG" # Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags)
sleep 1 if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then
if install_from_packages; then chmod +x ./refresh-hypr-tags.sh || true
echo "${OK} Pre-built packages installed successfully!" | tee -a "$LOG" ./refresh-hypr-tags.sh
else
echo "${ERROR} Failed to install pre-built packages. Exiting..." | tee -a "$LOG"
exit 1
fi
else
# Build from source (original method)
# Optional: refresh tags before building the Hyprland stack
# Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags)
if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then
chmod +x ./refresh-hypr-tags.sh || true
./refresh-hypr-tags.sh
fi
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "01-hypr-pkgs.sh"
sleep 1
execute_script "hyprutils.sh"
sleep 1
execute_script "hyprlang.sh"
sleep 1
execute_script "hyprcursor.sh"
sleep 1
execute_script "hyprwayland-scanner.sh"
sleep 1
execute_script "hyprgraphics.sh"
sleep 1
execute_script "aquamarine.sh"
sleep 1
execute_script "hyprland-qt-support.sh"
sleep 1
execute_script "hyprtoolkit.sh"
sleep 1
execute_script "hyprland-guiutils.sh"
sleep 1
execute_script "hyprland-protocols.sh"
sleep 1
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
execute_script "wayland-protocols-src.sh"
sleep 1
execute_script "xkbcommon.sh"
sleep 1
# Build hyprwire before Hyprland (required by Hyprland >= 0.53)
execute_script "hyprwire.sh"
sleep 1
execute_script "hyprland.sh"
sleep 1
execute_script "hyprpolkitagent.sh"
sleep 1
execute_script "wallust.sh"
sleep 1
execute_script "swww.sh"
sleep 1
execute_script "rofi-wayland.sh"
sleep 1
execute_script "hyprlock.sh"
sleep 1
execute_script "hypridle.sh"
fi fi
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages from source...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "01-hypr-pkgs.sh"
sleep 1
execute_script "hyprutils.sh"
sleep 1
execute_script "hyprlang.sh"
sleep 1
execute_script "hyprcursor.sh"
sleep 1
execute_script "hyprwayland-scanner.sh"
sleep 1
execute_script "hyprgraphics.sh"
sleep 1
execute_script "aquamarine.sh"
sleep 1
execute_script "hyprland-qt-support.sh"
sleep 1
execute_script "hyprtoolkit.sh"
sleep 1
execute_script "hyprland-guiutils.sh"
sleep 1
execute_script "hyprland-protocols.sh"
sleep 1
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
execute_script "wayland-protocols-src.sh"
sleep 1
execute_script "xkbcommon.sh"
sleep 1
# Build hyprwire before Hyprland (required by Hyprland >= 0.53)
execute_script "hyprwire.sh"
sleep 1
execute_script "hyprland.sh"
sleep 1
execute_script "hyprpolkitagent.sh"
sleep 1
execute_script "wallust.sh"
sleep 1
execute_script "swww.sh"
sleep 1
execute_script "rofi-wayland.sh"
sleep 1
execute_script "hyprlock.sh"
sleep 1
execute_script "hypridle.sh"
# Ensure /usr/local/lib is in the dynamic linker search path.
# Many Hypr* components install shared libraries into /usr/local/lib; without this,
# tools like hyprctl can fail to load (e.g. missing libhyprwire.so.*).
if ! sudo grep -qxF "/usr/local/lib" /etc/ld.so.conf.d/usr-local.conf 2>/dev/null; then
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/usr-local.conf >/dev/null
fi
sudo ldconfig 2>/dev/null || true
#execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024 #execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024
# execute_script "waybar-git.sh" only if waybar on repo is old # execute_script "waybar-git.sh" only if waybar on repo is old

View File

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

View File

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