This commit is contained in:
Vaxry 2024-07-19 20:30:43 +02:00
parent de5c5d2683
commit 37d2c6b134
6 changed files with 16 additions and 52 deletions

View file

@ -35,7 +35,7 @@ environment on traditional Linux distros.
## Hyprland Environment Variables
- `HYPRLAND_LOG_WLR=1` - Enables more verbose logging of wlroots.
- `HYPRLAND_TRACE=1` - Enables more verbose logging.
- `HYPRLAND_NO_RT=1` - Disables realtime priority setting by Hyprland.
- `HYPRLAND_NO_SD_NOTIFY=1` - If systemd, disables the `sd_notify` calls.
@ -98,8 +98,8 @@ To force GBM as a backend, set the following environment variables:
- `__GL_VRR_ALLOWED` - Controls if Adaptive Sync should be used. Recommended to
set as "0" to avoid having problems on some games.
- `env = WLR_DRM_NO_ATOMIC,1` - use legacy DRM interface instead of atomic mode
setting. Might fix flickering issues.
- `env = AQ_NO_ATOMIC,1` - use legacy DRM interface instead of atomic mode
setting. **NOT** recommended.
## Theming Related Variables

View file

@ -46,7 +46,7 @@ boot and is subject to frequent change, making it unsuitable as a marker for GPU
After determining which "card" belongs to which GPU, we now have to tell
Hyprland the GPU we want to use primarily.
This is done by setting the `WLR_DRM_DEVICES` environment variable.
This is done by setting the `AQ_DRM_DEVICES` environment variable.
{{< callout type=info >}}
@ -59,34 +59,34 @@ with lower and higher power rating GPUs respectively.
{{< /callout >}}
If you wish to use the integrated GPU to run Hyprland, no further action is
required. wlroots will set `WLR_DRM_DEVICES` to the integrated GPU by default.
required. Aquamarine will set `AQ_DRM_DEVICES` to the integrated GPU by default.
If instead you would like to use another GPU, you must first create a symlink to
the card from the previous section.
It is not possible to use `~/.config/hypr/card` as wlroots will not expand it correctly.
It is not possible to use `~/.config/hypr/card` as aquamarine will not expand it correctly.
You must include full path e.g `$HOME/.config/hypr/card`
```
ln -sf /dev/dri/by-path/pci-0000:06:00.0-card $HOME/.config/hypr/card
```
It is not possible to directly use the `/dev/dri/by-path/pci-0000:06:00.0-card` path,
as wlroots interprets the colon symbols in the path as separators. Escaping
as aquamarine interprets the colon symbols in the path as separators. Escaping
characters will not rectify this.
Afterwards, you must set the `WLR_DRM_DEVICES` environment variable in
Afterwards, you must set the `AQ_DRM_DEVICES` environment variable in
hyprland.conf to this linked card.
```ini
env = WLR_DRM_DEVICES,$HOME/.config/hypr/card
env = AQ_DRM_DEVICES,$HOME/.config/hypr/card
```
If you want to set a sequence of fallback cards, symlink another card and set
the var as a colon separated list in order of priority.
```ini
env = WLR_DRM_DEVICES,$HOME/.config/hypr/card:$HOME/.config/hypr/otherCard
env = AQ_DRM_DEVICES,$HOME/.config/hypr/card:$HOME/.config/hypr/otherCard
```
Here, we tell Hyprland to set priorities. If `card` isn't available for

View file

@ -10,8 +10,6 @@ Screen tearing is used to reduce latency and/or jitter in games.
To enable tearing:
- Set `general:allow_tearing` to `true`. This is a "master toggle"
- Add `env = WLR_DRM_NO_ATOMIC,1` to your Hyprland config. This disables the
usage of a newer kernel DRM API that doesn't support tearing yet.
- Add an `immediate` windowrule to your game of choice. This makes sure that
Hyprland will tear it.
@ -29,22 +27,9 @@ general {
allow_tearing = true
}
env = WLR_DRM_NO_ATOMIC,1
windowrulev2 = immediate, class:^(cs2)$
```
{{< callout >}}
`env = WLR_DRM_NO_ATOMIC,1` is not recommended. If your kernel ver is >= 6.8,
you can remove it.
For kernels < 6.8, this env is required.
Check your kernel version with `uname -r`.
{{< /callout >}}
{{< callout type=warning >}}
If you experience graphical issues, you may be out of luck. Tearing support is
@ -66,8 +51,7 @@ monitor is fine)
### Apps that should tear, freeze
Almost definitely means your GPU driver does not support tearing, like e.g.
Intel's, or AMD if you don't use the legacy backend with `env = WLR_DRM_NO_ATOMIC,1` or patch your kernel.
Almost definitely means your GPU driver does not support tearing.
Please _do not_ report issues if this is the culprit.
@ -77,13 +61,3 @@ Likely issue with your graphics driver.
Please _do not_ report issues if this is the culprit. Unfortunately, it's most
likely your GPU driver's fault.
### Other graphical issues/Hyprland instantly crashes on launch
Likely issue with `WLR_DRM_NO_ATOMIC`.
NO_ATOMIC forces the use of a legacy, less tested drm API.
Please _do not_ report issues if this is the culprit. Unfortunately, you will
have to wait for the Linux kernel to support tearing page flips on the atomic
API.

View file

@ -33,16 +33,13 @@ Attach that file to your issue.
Diagnose the issue by what is in the log:
- `sWLRBackend was NULL!` -> launch in the TTY and refer to the wlr logs in RED.
- `backend failed to start` -> launch in the TTY and refer to the logs in RED.
- `Monitor X has NO PREFERRED MODE, and an INVALID one was requested` -> your
monitor is bork.
- Other -> see the coredump. Use `coredumpctl`, find the latest one's PID and do
`coredumpctl info PID`.
- failing on a driver (e.g. `radeon`) -> try compiling with
`make legacyrenderer`, if that doesn't help, report an issue.
- failing on `wlr-xxx` -> try compiling with `make legacyrenderer`, if that
doesn't help, report an issue, and also refer to the TTY wlr logs in RED like
in the first point.
- failing on `Hyprland` -> report an issue.
## Crashes not at launch

View file

@ -39,7 +39,7 @@ Outside those, there is a way to fix it that _might_ work for you though:
**Option 1:** Use _only_ the external monitor
By using `WLR_DRM_DEVICES=/dev/dri/card1` (or `card0`) environment variable you can force Hyprland to
By using `AQ_DRM_DEVICES=/dev/dri/card1` (or `card0`) environment variable you can force Hyprland to
use only your dGPU, meaning your laptop's screen will be gone but your external
one will work.

View file

@ -211,15 +211,12 @@ copy hyprctl to `/usr/bin/`.
copy hyprpm to `/usr/bin/`.
copy the wlroots .so (`libwlroots.so.XX032`) to `/usr/lib/`.
copy the desktop entry (`example/hyprland.desktop`) to
`/usr/share/wayland-sessions/`
the example config is in `example/hyprland.conf`.
For updating later on, you can overwrite the binaries (hyprctl, hyprland and
libwlroots), you don't need to update anything else.
For updating later on, you can overwrite the binaries (hyprctl, hyprland, hyprpm ...), you don't need to update anything else.
### Manual (Manual Build)
@ -251,7 +248,7 @@ zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig
```plain
pkg install git pkgconf gmake gcc evdev-proto cmake wayland-protocols wayland libglvnd libxkbcommon libinput cairo pango pixman libxcb
pkg install meson jq `pkg rquery %dn wlroots` hwdata libdisplay-info libliftoff
pkg install meson jq hwdata libdisplay-info libliftoff
export CC=gcc CXX=g++ LDFLAGS="-static-libstdc++ -static-libgcc"
```
@ -261,11 +258,7 @@ export CC=gcc CXX=g++ LDFLAGS="-static-libstdc++ -static-libgcc"
refer to the Ubuntu tab above
Please note Hyprland builds `wlroots`. Make sure you have the dependencies of
wlroots installed, you can make sure you have them by installing wlroots
separately (Hyprland doesn't mind)
Also note that Hyprland uses the C++23 standard, so both your compiler and your
Please note that Hyprland uses the C++23 standard, so both your compiler and your
C++ library has to support that (`gcc>=13.0.0` or `clang>=15`). On Clang-based
systems libc++ may be used by default, so until libc++ supports C++23 you have
to pass `-stdlib=libstdc++` or switch to GCC.