build hyprland from source with ease.
Currently supported distros:
Fedora 44
Supported and tested Hyprland Versions:
hl0.56.0
HYRIBYN_ROOT is the git directory of all the git repos to be cloned.
for example:
~/.local/share/hyribyn/hyribyn will contain this repository.
~/.local/share/hyribyn/hyprland will contain the hyprland repository.
HYRIBYN_DISTRO is the linux distro you are on.
fedora is the default and does not need to be set.
export HYRIBYN_DISTRO="fedora"
sync-hyprland-session-target.sh is for xdg-desktop-portal.
You probably want and need this. If not feel free to exclude it.
I think when you use uwsm you don't need it. I dont use uwsm so can't tell for sure.
export HYRIBYN_ROOT="$HOME/.local/share/hyribyn" \
&& git clone --recurse-submodules "https://github.com/RobinMeow/hyribyn" "$HYRIBYN_ROOT/hyribyn" \
&& "$HYRIBYN_ROOT/hyribyn/install.sh" \
&& "$HYRIBYN_ROOT/hyribyn/sync-hyprland-session-target.sh"I recommend using sourcerer to clone this repo, and call the corresponding scripts.
# hyribyn will be cloned in ~/.local/share/ribyn/hyribyn
export HYRIBYN="$HOME/.local/share/ribyn/"
# you gotta replace the filepath with whereever your sourcerer script is
SOURCERER_DEST="$HYRIBYN" source "$HOME/path/to/your/sourcerer.sh"
function hyribyn_installed() {
# never consider it to be installed.
# hyribyn is already idempotent and knows what it needs to run what not.
return 1 # its an exit code, not a boolean
}
function hyribyn_build_and_install() {
# use fedora as target distro
export HYRIBYN_DISTRO="fedora"
# this is where hyribyn will clone all the git repos,
# build, install and update them.
# hyribyn will also look in here for its own git location
# unless you set HYRIBYN
# replace ribyn with your username, or dont set it at all
export HYRIBYN_ROOT="$HOME/.local/share/ribyn"
# install all hyprland dependencies, hyprland itself,
# and hyprland runtime dependencies
"$HYRIBYN/hyprland/install-stack.sh"
# call only the apps you wish to have, in any order
"$HYRIBYN/common/install-app.sh" "hyprshutdown"
"$HYRIBYN/common/install-app.sh" "hyprlock"
"$HYRIBYN/common/install-app.sh" "hyprpaper"
"$HYRIBYN/common/install-app.sh" "hyprpolkitagent"
# dont call em, if you dont want em, duh :)
# "$HYRIBYN/common/install-app.sh" "hyprpicker"
# "$HYRIBYN/common/install-app.sh" "hy3"
}
check_source_state \
"hyribyn" \
"hl0.56.0"
source_git "https://github.com/RobinMeow/hyribyn.git"This is the way I did it, on my dotfile repo. See here
for an example.
Or an example building neovim from source using sorcerer
Look at the environment variables in ./versions.sh.
Before running the scripts, export all of these, and set the strings to
latest-tag. This is a feature by sourcerer
which builds against the latest available git tag using standard versioning.
Most of the time it will just work, and behave similar to pacman updates.
I personally don't like, nor use this. But who am I to tell you what to do :)
you can checkout this repository using git tags. using this versioning scheme:
hlx.x.x. So if you want to build hyprland 0.56.0 you checkout this
repository at hl0.56.0 and run the scripts. Thats it.
However not every single version is included here, especially not older versions.
This is okay, you can still build them, just a bit more work.
Look at the environment variables in ./versions.sh.
You need to export these variables in the versions you want to build against,
before running the scripts. Thats it for most use cases, but you might need to install
some packages which were needed in the past, or added in the future.
same as the above honestly, just specify the dev branch in the string.
e.g. origin/dev. You can even build against feature-branches
which are currently in development if you want to. Commit hashes
are also supported. Everything sourcerer
supports, this repo supports also.
Saying you can build against any commit hash, does not mean, it will build or run successfully. This is for advanced users, who know what they are doing, or people who just wanna mess around in a VM.
Feel free to join the hyribyn discord, if you want to contribute. You can also open issues, just make sure to not implement stuff without prior elaboration.
- no AI. everything is hand written.
I will only maintain fedora, however the foundation is the same for
all. Adding another distro is straight forward (for most distros).
Its mainly just looking for the same packages, which might be named differently.
For example: for a from source build on arch you need the cairo package
sudo pacman -S cairo but on fedora you need to install cairo-devel package
sudo dnf install cairo-devel and on Ubuntu its the libcairo2-dev package
sudo apt install libcairo2-dev. Point is, the same package can have
different names on different distros. But building and installation is
mostly the same for all.
Each repository has a install-deps-fedora.sh script. Copy it to
install-deps-distroname.sh, and change the package names for the distro you wish
to implement.
If you wish to contribute the scripts for another hyprapp, e.g. hyprsunset
seek elaboration with me first, using the hyribyn discord or github issues.
- allow to only specify the hyprland version, and have a depenceny resolver at runtime, which resolves the latest support version for each dependency. (not the latest minimum supported version)
- allow installation to
/usr/localinstead of/usrand use it as default. easy to implement as expirimental. But testing it at runtime takes some time for me. - other programms which are based on hyprland
the state of this repo already serves it purpose for me.
If you wish something to be done. Open an issue or upvote an existing one.
- hyprland wiki - customer build flags the original distribution of binaries by the hyprland team in arch (using pacman) does not strip those out either. Not only you increase risk of breakage, but you increase maintenance just for a few kilobytes of disk space
- apps which do not depend on hyprland. e.g. mpvpaper and wl-freeze. You can check out my dotfiles repo for examples on how to build mpvpaper with sourcer or wl-freeze with sourcerer from source
- older versions prior to hyprland 0.56.0
Uses sourcerer to build the whole hyprland stack from source as well as optional dependencies, and other hyprapps.
-
hyprland-protocols -
hyprwayland-scanner -
hyprutils -
hyprgraphics -
hyprlang -
hyprcursor -
aquamarine -
xdg-desktop-portal-hyprland -
hyprwire -
hyprtoolkit -
hyprlandas mentioned in the hyprland wiki - faq
and a runtime only dependency which the FAQ does not mention:
-
hyprland-guiutils(runtime-only dependency. formerly hyprland-qtutils)
and other hyprapps:
-
hyprpolkitagentto use hyprlands optional permission system -
hyprshutdownlogging out of hyprland. the official recommended way. -
hyprpaperbackground wallpaper engine -
hyprlocklockscreen -
hyprpickeruse your mouse as color picker on whatever the screen is rendering currently (handy for people who enjoy ricing) -
hyprmoncfggenerate a lua configuration for your monitors on the fly in a tui -
hy3sway/i3 like window tiling layout strategy