2024-02-20 21:16:07 +01:00
---
2024-07-30 16:37:26 +02:00
weight: 1
2024-02-20 21:16:07 +01:00
title: Installation
---
2024-07-30 16:37:26 +02:00
{{< callout type = warning > }}
2022-08-12 20:46:36 +02:00
2024-10-08 17:55:32 +02:00
Hyprland is not meant for beginners! It is expected that you read this wiki,
understand Linux's workings and are able to search online and troubleshoot issues
on your own.
If you are a Linux beginner, consider reading this wiki in **its entirety** and all
the other pages it refers to, otherwise you might have a really hard time
getting a usable desktop.
Online forums (e.g. Reddit) should be used as a last resort, as most information
can be found in this wiki and it's guaranteed to be _up-to-date and accurate_ ,
unlike most online "tips and tricks".
Follow the [Master tutorial ](../Master-Tutorial ) **FROM START TO FINISH** unless
you really know what you are doing!
{{< / callout > }}
{{< callout type = warning > }}
2022-08-24 06:41:31 +02:00
Due to their proprietary nature, Nvidia GPUs have limited compatibility with
2024-02-20 21:16:07 +01:00
Hyprland. If you want to try Hyprland on Nvidia regardless (many people have
2024-03-17 13:44:39 +01:00
reported successes), follow the [Nvidia page ](../../Nvidia ) after installing
2024-02-20 21:16:07 +01:00
Hyprland.
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
{{< / callout > }}
2022-10-23 16:35:39 +02:00
## Distros
2022-08-12 20:46:36 +02:00
2022-08-22 14:06:25 +02:00
Arch, NixOS and openSUSE Tumbleweed are very supported. For any other distro
2024-11-14 00:03:59 +01:00
(not based on Arch/Nix/openSUSE) you might have varying amounts of success. However,
2022-08-22 14:06:25 +02:00
since Hyprland is extremely bleeding-edge, distros like Pop!\_OS, Ubuntu, etc.
might have **major** issues running Hyprland.
2022-08-12 20:46:36 +02:00
2022-10-23 16:35:39 +02:00
## Installation
2022-08-12 20:46:36 +02:00
2024-08-06 14:01:55 +02:00
Installing Hyprland is very easy. Simply install it with your package manager
2024-04-21 16:35:48 +02:00
(if there is a Hyprland package available) or install/build it yourself.
2022-08-12 20:46:36 +02:00
2024-02-20 21:16:07 +01:00
{{< callout > }}
This project is under development and is constantly changing. If you want to
keep up to date with the latest commits, please consider updating your packages
2024-04-21 16:35:48 +02:00
with `yay -Syu --devel` , or your preferred package manager.
2024-02-20 21:16:07 +01:00
{{< / callout > }}
2022-08-12 20:46:36 +02:00
2022-10-23 16:35:39 +02:00
### Packages
2022-08-12 20:46:36 +02:00
**WARNING:** I do not maintain any packages. If they are broken, try building
from source first.
2024-02-20 21:16:07 +01:00
{{% details title="Arch" closed="true" %}}
2022-08-12 20:46:36 +02:00
2024-08-05 14:46:32 +02:00
Install from the AUR, which compiles the latest source:
2024-10-13 12:43:32 +02:00
2024-08-05 14:46:32 +02:00
```shell
2024-09-08 18:47:13 +02:00
yay -S hyprland-git
2024-08-05 14:46:32 +02:00
```
or a tagged release from the arch packages:
2024-10-13 12:43:32 +02:00
2024-08-05 14:46:32 +02:00
```shell
sudo pacman -S hyprland
2022-08-12 20:46:36 +02:00
```
2024-11-30 18:46:41 +01:00
Alternatively, install the `hyprland-meta` package to automatically fetch and compile the latest git versions of all components within the hypr* ecosystem.
```shell
yay -S hyprland-meta-git
```
2024-08-06 14:01:55 +02:00
If you decide to use the `git` version from the AUR, you can use the [Chaotic Aur ](https://aur.chaotic.cx/ ) to get pre-built binaries.
In case of errors you can downgrade easily with [downgrade ](https://github.com/archlinux-downgrade/downgrade ).
2024-02-20 21:16:07 +01:00
{{% /details %}}
{{% details title="Nix" closed="true" %}}
2023-07-17 18:14:43 +02:00
Enable Hyprland in your NixOS configuration:
```nix
programs.hyprland.enable = true;
```
2024-03-17 13:44:39 +01:00
For more details, read the [Nix page ](../../Nix ).
2023-07-17 18:14:43 +02:00
2024-02-20 21:16:07 +01:00
{{% /details %}}
{{% details title="openSUSE*" closed="true" %}}
Hyprland is part of factory, starting with snapshot 20230411. To install it
simply use zypper
2022-08-22 14:06:25 +02:00
```sh
2023-04-13 16:09:46 +02:00
sudo zypper in hyprland
2022-08-22 14:06:25 +02:00
```
2023-04-13 16:09:46 +02:00
or install the "hyprland" package via YaST2 Software.
2024-08-13 21:33:24 +02:00
For `hyprpm` to recognize it's dependencies, you'll also need to install `hyprland-devel` :
2024-10-13 12:43:32 +02:00
2024-08-13 21:33:24 +02:00
```sh
sudo zypper in hyprland-devel
```
2024-02-20 21:16:07 +01:00
Alternatively, you can also follow the instructions under
["Manual (Manual Build)" ](#manual-manual-build ) to build Hyprland yourself.
Note: _Hyprland is not available for Leap, as most libraries (and compiler) that
Hyprland needs are too old._
{{% /details %}}
{{% details title="Fedora*" closed="true" %}}
2022-08-22 14:06:25 +02:00
2024-07-09 10:32:43 +02:00
On Fedora 39+, run:
2023-12-03 18:46:26 +01:00
```sh
sudo dnf install hyprland
2024-07-09 10:32:43 +02:00
sudo dnf install hyprland-devel # If you want to build plugins (use hyprpm)
2023-12-03 18:46:26 +01:00
```
2024-07-09 10:32:43 +02:00
Faster updates and additional packages are available in the
2024-02-20 21:16:07 +01:00
[solopasha/hyprland ](https://copr.fedorainfracloud.org/coprs/solopasha/hyprland )
Copr repository.
If you are on an older version of Fedora, you can also compile it yourself by
following the instructions
[here ](https://github.com/hyprwm/Hyprland/discussions/284 )
2024-08-04 11:55:15 +02:00
{{% /details %}}
{{% details title="Debian*" closed="true" %}}
2024-08-07 16:05:54 +02:00
Hyprland recently made it into the SID and trixie repos and can be installed with
2024-08-04 11:55:15 +02:00
```sh
sudo apt install hyprland
```
2024-10-13 12:43:32 +02:00
2024-08-07 16:05:54 +02:00
Note: Even though Hyprland is in the trixie repos, it is still recommended to install from SID, as some dependencies in the trixie repo are outdated.
2024-08-04 11:55:15 +02:00
Alternatively, you can also follow the instructions under
["Manual (Manual Build)" ](#manual-manual-build ) to build Hyprland yourself.
{{< callout type = info > }}
Hyprland is not available for Bookworm as its packages are too old.
{{< / callout > }}
2024-02-20 21:16:07 +01:00
{{% /details %}}
{{% details title="Gentoo*" closed="true" %}}
2023-12-07 18:58:45 +01:00
2024-01-05 12:45:06 +01:00
The hyprland package is available in the main tree:
2023-07-21 10:24:15 +02:00
```sh
emerge --ask gui-wm/hyprland
```
2024-02-20 21:16:07 +01:00
Additional packages like hyprlock, hypridle, xdg-desktop-portal-hyprland,
hyprland-plugins, hyprpaper and hyprpicker are available in the
[GURU ](https://wiki.gentoo.org/wiki/Project:GURU ) overlay. Community-contributed
scripts are also available in GURU as part of the hyprland-contrib package.
2022-08-24 06:41:31 +02:00
2022-08-20 22:52:51 +02:00
```sh
2023-02-19 21:59:58 +01:00
eselect repository enable guru
emaint sync -r guru
2024-01-05 12:45:06 +01:00
2024-02-25 01:18:28 +01:00
emerge --ask gui-apps/hyprlock
emerge --ask gui-apps/hypridle
2024-01-05 12:45:06 +01:00
emerge --ask gui-libs/xdg-desktop-portal-hyprland
2023-07-21 10:24:15 +02:00
emerge --ask gui-apps/hyprland-plugins
emerge --ask gui-apps/hyprpaper
emerge --ask gui-apps/hyprpicker
emerge --ask gui-wm/hyprland-contrib
2022-08-20 22:52:51 +02:00
```
2022-08-24 06:41:31 +02:00
2024-02-20 21:16:07 +01:00
For USE flags and more details, read the
[Gentoo wiki page ](https://wiki.gentoo.org/wiki/Hyprland ) about Hyprland.
{{% /details %}}
{{% details title="FreeBSD*" closed="true" %}}
2023-07-21 10:24:15 +02:00
2022-12-20 17:09:42 +01:00
Hyprland and related are in the default repository:
2024-02-20 21:16:07 +01:00
2022-12-20 17:09:42 +01:00
- [hyprland ](https://www.freshports.org/x11-wm/hyprland )
- [hyprpaper ](https://www.freshports.org/x11/hyprpaper )
- [hyprpicker ](https://www.freshports.org/x11/hyprpicker )
- [xdg-desktop-portal-hyprland ](https://www.freshports.org/x11/xdg-desktop-portal-hyprland )
- [Other Wayland stuff ](https://www.freshports.org/wayland/ )
2024-02-20 21:16:07 +01:00
{{% /details %}}
2024-08-07 16:05:54 +02:00
{{% details title="Ubuntu*" closed="true" %}}
2024-02-20 21:16:07 +01:00
2024-10-13 12:43:32 +02:00
Hyprland made it into the Ubuntu 24.10 Oracular Oriole universe repo and can be installed with
2024-08-07 16:05:54 +02:00
```bash
sudo add-apt-repository universe & & sudo apt-get update & & sudo apt-get install -y hyprland
```
2024-09-23 21:21:27 +02:00
{{< callout type = info > }}
NOTE: Above is for Ubuntu 24.10 (Unreleased) version
{{< / callout > }}
For installing Hyprland from Source, install first the dependencies below:
2024-02-20 21:16:07 +01:00
2023-05-01 16:47:32 +02:00
```bash
2024-09-23 21:21:27 +02:00
sudo apt-get install -y meson wget build-essential ninja-build cmake-extras cmake gettext gettext-base fontconfig libfontconfig-dev libffi-dev libxml2-dev libdrm-dev libxkbcommon-x11-dev libxkbregistry-dev libxkbcommon-dev libpixman-1-dev libudev-dev libseat-dev seatd libxcb-dri3-dev libegl-dev libgles2 libegl1-mesa-dev glslang-tools libinput-bin libinput-dev libxcb-composite0-dev libavutil-dev libavcodec-dev libavformat-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-present-dev libxcb-icccm4-dev libxcb-render-util0-dev libxcb-res0-dev libxcb-xinput-dev libtomlplusplus3
2023-05-01 16:47:32 +02:00
```
2024-10-13 12:43:32 +02:00
You will also need to build the latest wayland, wayland-protocols, and
libdisplay-info tagged releases from source.
2024-02-20 21:16:07 +01:00
2024-10-25 00:39:06 +02:00
For screensharing, you can also install `xdg-desktop-portal-wlr` or `xdg-desktop-portal-hyprland`
2024-09-23 21:21:27 +02:00
```bash
sudo apt-get install -y xdg-desktop-portal-wlr
```
_Unfortunately, `xdg-desktop-portal-hyprland` still not in Ubuntu Repo so you have to build it from source_
See
2024-10-13 12:43:32 +02:00
[The xdph GitHub repo's readme ](https://github.com/hyprwm/xdg-desktop-portal-hyprland ). Refer to
[XDPH ](../../Hypr-Ecosystem/xdg-desktop-portal-hyprland ) and
2024-02-20 21:16:07 +01:00
[Ubuntu Guide For Installing And Building Hyprland Gist ](https://gist.github.com/Vertecedoc4545/3b077301299c20c5b9b4db00f4ca6000 )
2024-10-13 12:43:32 +02:00
for more information.
2023-05-01 16:47:32 +02:00
2024-02-20 21:16:07 +01:00
{{< callout type = warning > }}
2023-05-01 16:47:32 +02:00
2024-02-20 21:16:07 +01:00
Please note that since Ubuntu is generally behind with dependencies, it's not
guaranteed that the build process will work at all. Even if it is, it's likely
that it will break at some point in the future.
2023-05-01 16:47:32 +02:00
2024-10-11 15:13:42 +02:00
{{< / callout > }}
2024-08-07 16:05:54 +02:00
{{< callout > }}
Always use the latest version of Ubuntu for the most up to date dependencies.
Note: Your mileage may vary, as GDM has some bugs with Hyprland. Check the [Master Tutorial ](../Master-Tutorial ) for more info.
2023-05-01 16:47:32 +02:00
Refer to the gist if anything fails.
2024-10-13 12:43:32 +02:00
<!-- For some reason uncommenting the line below creates an unwanted <pre><div></pre> in the page. -->
<!-- {{< /callout >}} -->
2024-02-20 21:16:07 +01:00
{{% /details %}}
{{% details title="Void Linux*" closed="true" %}}
2024-07-30 16:37:26 +02:00
Hyprland is not available from Void Linux's official repositories
[due to a conflict of packaging philosophy ](https://github.com/void-linux/void-packages/issues/37544 ).
However, a [third party repository ](https://github.com/Makrennel/hyprland-void )
is available with
[binary packages ](https://github.com/Makrennel/hyprland-void/tree/repository-x86_64-glibc )
built in CI by GitHub Actions.
2024-02-20 21:16:07 +01:00
2024-07-30 16:37:26 +02:00
You can add this repository by creating a file such as
`/etc/xbps.d/hyprland-void.conf` with the following contents:
2023-05-01 16:47:32 +02:00
2024-11-06 21:55:14 +01:00
```plain {filename="/etc/xbps.d/hyprland-void.conf"}
2024-06-13 23:18:21 +02:00
repository=https://raw.githubusercontent.com/Makrennel/hyprland-void/repository-x86_64-glibc
```
2024-08-06 14:01:55 +02:00
2024-06-13 23:18:21 +02:00
Then you can install the packages as you would any other:
2024-02-20 21:16:07 +01:00
2024-06-13 23:18:21 +02:00
```sh
sudo xbps-install -S hyprland
sudo xbps-install -S hyprland-devel # If you want to use plugins
sudo xbps-install -S xdg-desktop-portal-hyprland
2024-02-20 21:16:07 +01:00
2024-06-13 23:18:21 +02:00
xbps-query -Rs hypr # This will require you to have already accepted the repository's fingerprint using xbps-install -S
```
2024-08-06 14:01:55 +02:00
2024-07-30 16:37:26 +02:00
More information is available in the
[hyprland-void README ](https://github.com/Makrennel/hyprland-void/blob/master/README.md ),
including information about how you can
[manually build ](https://github.com/Makrennel/hyprland-void?tab=readme-ov-file#manually-building )
Hyprland for Void Linux using the templates provided.
2024-02-20 21:16:07 +01:00
{{% /details %}}
{{% details title="Slackware*" closed="true" %}}
```plain
hyprland-bin (SlackBuilds) - Prebuilt release for Slackware ready for install
```
2023-06-27 13:34:27 +02:00
2024-02-20 21:16:07 +01:00
Hyprland is not installed by default on the current release of Slackware.
2023-06-27 13:34:27 +02:00
2024-02-20 21:16:07 +01:00
For detailed instructions on installing this build see
[here ](https://slackbuilds.org/repository/15.0/desktop/hyprland-bin/ )
2022-08-12 20:46:36 +02:00
2024-02-20 21:16:07 +01:00
{{% /details %}}
2022-08-12 20:46:36 +02:00
2024-08-13 19:12:09 +02:00
{{% details title="Alpine*" closed="true" %}}
Hyprland is available in Alpine's [testing repository ](https://wiki.alpinelinux.org/wiki/Repositories#Testing ) which can be enabled in `/etc/apk/repositories` by adding
2024-11-06 21:55:14 +01:00
```plain {filename="/etc/apk/repositories"}
2024-08-13 19:12:09 +02:00
http://dl-cdn.alpinelinux.org/alpine/edge/testing
```
This will only work on Alpine linux edge, not on any stable release. For use on stable releases, see the [Alpine wiki ](https://wiki.alpinelinux.org/wiki/Repositories#Using_the_testing_repository_on_stable_branches )
2024-10-13 12:43:32 +02:00
After enabling the repository, the following command will install hyprland and its dependencies.
2024-08-13 19:12:09 +02:00
```plain
apk add hyprland
```
{{% /details %}}
2024-09-26 22:59:25 +02:00
{{% details title="Ximper*" closed="true" %}}
Install from the Sisyphus:
```bash
epmi hyprland
epmi hyprland-devel # If you want to use plugins
```
or legacyrenderer version:
```bash
epmi hyprland-legacyrenderer
```
Ecosystem:
```bash
epmi xdg-desktop-portal-hyprland
epmi hypridle
epmi hyprpaper
epmi hyprpicker
```
2024-11-06 19:34:37 +01:00
2024-10-22 18:37:02 +02:00
{{% /details %}}
{{% details title="Solus*" closed="true" %}}
For Solus, run:
```bash
sudo eopkg install hyprland
```
2024-09-26 22:59:25 +02:00
{{% /details %}}
2024-02-20 21:16:07 +01:00
_**\* Unofficial, no official support is provided. These instructions are
community-driven, and no guarantee is provided for their validity.**_
2023-07-16 00:32:40 +02:00
2022-12-20 17:09:42 +01:00
### Manual (Releases, Linux-only)
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
1. Download the most recent release.
2. copy the binaries (Hyprland, hyprctl, hyprpm) to `/usr/bin/` .
3. copy the desktop entry (`example/hyprland.desktop`) to
`/usr/share/wayland-sessions/`
2022-08-12 20:46:36 +02:00
2023-10-24 18:51:53 +02:00
the example config is in `example/hyprland.conf` .
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
For updating later on, you can overwrite the binaries (Hyprland, hyprctl,
hyprpm) . You don't need to update anything else.
2022-08-12 20:46:36 +02:00
2022-10-23 16:35:39 +02:00
### Manual (Manual Build)
2022-08-12 20:46:36 +02:00
2024-05-13 16:25:51 +02:00
Dependencies:
2024-08-08 11:56:51 +02:00
{{< callout type = info > }}
Please note that Hyprland uses the C++26 standard, so both your compiler and your
C++ standard library has to support that (`gcc>=14` or `clang>=18` ).
{{< / callout > }}
2024-05-13 16:25:51 +02:00
{{% details title="Arch" closed="true" %}}
2022-08-12 20:46:36 +02:00
2022-08-13 01:45:14 +02:00
```plain
2024-12-03 20:04:00 +01:00
yay -S ninja gcc cmake meson libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite libxrender pixman wayland-protocols cairo pango seatd libxkbcommon xcb-util-wm xorg-xwayland libinput libliftoff libdisplay-info cpio tomlplusplus hyprlang-git hyprcursor-git hyprwayland-scanner-git xcb-util-errors hyprutils-git hyprgraphics-git
2022-08-13 01:45:14 +02:00
```
2022-08-12 20:46:36 +02:00
2024-02-20 21:16:07 +01:00
_(Please make a pull request or open an issue if any packages are missing from
the list)_
2022-08-12 20:46:36 +02:00
2024-05-13 16:25:51 +02:00
{{% /details %}}
{{% details title="OpenSuse" closed="true" %}}
2022-08-22 14:06:25 +02:00
```sh
2024-02-20 21:16:07 +01:00
zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig(gbm)" "pkgconfig(gl)" "pkgconfig(glesv2)" "pkgconfig(libdrm)" "pkgconfig(libinput)" "pkgconfig(libseat)" "pkgconfig(libudev)" "pkgconfig(pango)" "pkgconfig(pangocairo)" "pkgconfig(pixman-1)" "pkgconfig(vulkan)" "pkgconfig(wayland-client)" "pkgconfig(wayland-protocols)" "pkgconfig(wayland-scanner)" "pkgconfig(wayland-server)" "pkgconfig(xcb)" "pkgconfig(xcb-icccm)" "pkgconfig(xcb-renderutil)" "pkgconfig(xkbcommon)" "pkgconfig(xwayland)" "pkgconfig(xcb-errors)" glslang-devel Mesa-libGLESv3-devel tomlplusplus-devel
2022-08-22 14:06:25 +02:00
```
2024-02-20 21:16:07 +01:00
(this should also work on RHEL/Fedora if you remove `Mesa-libGLESv3-devel` and
`pkgconfig(xcb-errors)` )
2022-08-22 14:06:25 +02:00
2024-05-13 16:25:51 +02:00
{{% /details %}}
{{% details title="FreeBSD" closed="true" %}}
2022-12-20 17:09:42 +01:00
2024-11-06 21:55:14 +01:00
```sh
2023-04-15 21:43:28 +02:00
pkg install git pkgconf gmake gcc evdev-proto cmake wayland-protocols wayland libglvnd libxkbcommon libinput cairo pango pixman libxcb
2024-07-21 13:11:03 +02:00
pkg install meson jq hwdata libdisplay-info libliftoff
2022-12-20 17:09:42 +01:00
export CC=gcc CXX=g++ LDFLAGS="-static-libstdc++ -static-libgcc"
```
2024-05-13 16:25:51 +02:00
{{% /details %}}
{{% details title="Ubuntu" closed="true" %}}
refer to the Ubuntu tab above
2023-05-01 16:47:32 +02:00
2024-05-13 16:25:51 +02:00
{{% /details %}}
{{< callout type = warning > }}
2024-08-06 14:01:55 +02:00
Additionally to those, you will also need a few hypr\* dependencies which may or may not be
2024-05-13 16:25:51 +02:00
packaged for your distro of choice:
2024-08-06 14:01:55 +02:00
- aquamarine
- hyprlang
- hyprcursor
2024-12-03 20:04:00 +01:00
- hyprutils
- hyprgraphics
2024-08-06 14:01:55 +02:00
- hyprwayland-scanner (build-only)
2024-05-13 16:25:51 +02:00
{{< / callout > }}
2022-08-12 20:46:36 +02:00
### CMake (recommended)
2024-11-06 21:55:14 +01:00
```sh
2022-08-12 20:46:36 +02:00
git clone --recursive https://github.com/hyprwm/Hyprland
cd Hyprland
2023-10-14 19:52:53 +02:00
make all & & sudo make install
2022-08-12 20:46:36 +02:00
```
2024-02-20 21:16:07 +01:00
_CMake is always recommended as it's the intended way Hyprland should be
installed._
2023-05-03 22:31:29 +02:00
2022-08-12 20:46:36 +02:00
### Meson
2024-11-06 21:55:14 +01:00
```sh
2023-05-16 23:18:25 +02:00
meson subprojects update --reset
meson setup build
ninja -C build
ninja -C build install --tags runtime,man
2022-08-12 20:46:36 +02:00
```
2024-03-17 13:44:39 +01:00
Refer to [Debugging ](../../Contributing-and-Debugging ) to see how to build &
2022-08-13 01:47:48 +02:00
debug.
2022-08-12 20:46:36 +02:00
2022-08-13 01:45:14 +02:00
## Crash on launch
2022-08-12 20:46:36 +02:00
2024-03-17 13:44:39 +01:00
See [Crashes and Bugs ](../../Crashes-and-Bugs ).
2022-08-12 20:46:36 +02:00
## Custom installation (legacy renderer, etc)
2024-07-30 16:37:26 +02:00
1. cd into the hyprland repo.
2. for legacy renderer:
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
```bash
make legacyrenderer
sudo make install
2022-08-12 20:46:36 +02:00
```
2024-07-30 16:37:26 +02:00
{{< callout type = info > }}
2022-10-23 16:35:39 +02:00
_please note the legacy renderer may not support some graphical features._
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
{{< / callout > }}
3. Any other config: (replace `<PRESET>` with your preset: `release` , `debug` ,
`legacyrenderer` , `legacyrendererdebug` )
```bash
make < PRESET > & & sudo cp ./build/Hyprland /usr/bin & & sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
2022-08-12 20:46:36 +02:00
```
## Custom Build flags
To apply custom build flags, you'll have to ditch make.
Supported custom build flags:
2024-07-30 16:37:26 +02:00
```bash
LEGACY_RENDERER - Compiles with the legacy renderer (see above)
2022-08-12 20:46:36 +02:00
NO_XWAYLAND - Removes XWayland support
2023-01-11 16:29:34 +01:00
NO_SYSTEMD - Removes systemd dependencies
2022-08-12 20:46:36 +02:00
```
2024-07-30 16:37:26 +02:00
Flags can be passed to CMake like this:
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
```bash
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -D< FLAG > :STRING=true -B build -G Ninja
2022-08-12 20:46:36 +02:00
```
2024-07-30 16:37:26 +02:00
Change `<FLAG>` to one of the custom build flags. Multiple flags can be used at
once, by adding more `-D<FLAG_2>:STRING=true` .
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
The `BUILD_TYPE` can also be changed to `Debug` .
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
To build, run:
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
```bash
cmake --build ./build --config Release --target all
2022-08-12 20:46:36 +02:00
```
If you configured in `Debug` , change the `--config` to `Debug` as well.
2024-07-30 16:37:26 +02:00
To install, run:
2022-08-12 20:46:36 +02:00
2024-07-30 16:37:26 +02:00
```bash
sudo cmake --install ./build
2023-01-22 08:26:42 +01:00
```
2024-01-17 14:40:57 +01:00
2024-05-29 14:55:49 +02:00
## Running In a VM
2024-08-06 14:01:55 +02:00
_YMMV, this is not officially supported._
2024-05-29 14:55:49 +02:00
2024-07-30 16:37:26 +02:00
Read through the
[libvirt Arch wiki page ](https://wiki.archlinux.org/title/Libvirt ) and get
`libvirt` , `virsh` , and `virt-viewer` setup and installed.
2024-08-06 14:01:55 +02:00
2024-07-30 16:37:26 +02:00
```bash
2024-05-29 14:55:49 +02:00
# Install libvirt and qemu things.
sudo pacman -S libvirt virt-viewer qemu-common
# Add yourself to the libvirt group.
sudo usermod -a -G libvirt USER # Replace 'USER' with your username.
2024-07-14 12:20:20 +02:00
# Enable and start libvirtd.
systemctl enable --now libvirtd
2024-05-29 14:55:49 +02:00
```
2024-07-30 16:37:26 +02:00
Go to the
[arch-boxes gitlab ](https://gitlab.archlinux.org/archlinux/arch-boxes/-/packages )
2024-05-29 14:55:49 +02:00
and download the latest arch qemu basic image. You can also download via any of
arch's mirrors.
2024-08-06 14:01:55 +02:00
2024-07-30 16:37:26 +02:00
```bash
2024-05-29 14:55:49 +02:00
curl https://geo.mirror.pkgbuild.com/images/latest/Arch-Linux-x86_64-basic.qcow2 \
-o ~/Downloads/arch-qemu.qcow2 # Or download wherever you want.
```
Create the VM with virsh.
2024-08-06 14:01:55 +02:00
2024-07-30 16:37:26 +02:00
```bash
2024-08-06 14:01:55 +02:00
# Use virt-install (included with libvirt) to install the vm from the image.
2024-05-29 14:55:49 +02:00
virt-install \
--graphics spice,listen=none,gl.enable=yes,rendernode=/dev/dri/renderD128 \
--name hypr-vm \
--os-variant archlinux \
--memory 2048 \
--disk ~/Downloads/arch-qemu.qcow2 \
--import
```
Connect with `virt-viewer` , this will open a `virt-viewer` graphical session on
the tty. The default login is 'arch' for user and 'arch' for password.
{{< callout > }}
Make sure the --attach flag is used, enabling virgl makes it so that
we had to disable listen. This means that we can't make a direct TCP/UNIX
socket connection to the remote display. --attach asks libvirt to provide a
2024-08-06 14:01:55 +02:00
pre-connected socket to the display.\*
2024-05-29 14:55:49 +02:00
{{< / callout > }}
```sh
virt-viewer --attach hypr-vm
```
2024-08-06 14:01:55 +02:00
2024-07-30 16:37:26 +02:00
Finally on the guest follow the instructions above for either
[installing hyprland-git from the aur ](#installation ) or
[building manually ](#manual-manual-build ).
2024-05-29 14:55:49 +02:00
{{< callout > }}
2024-07-30 16:37:26 +02:00
Make sure you install `mesa` as the OpenGL driver. The virgl drivers are
included in `mesa` .
2024-05-29 14:55:49 +02:00
{{< / callout > }}