mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-12-22 17:49:48 +01:00
various aquamarine stuff (#721)
* aq * nv cursors * list aq dep * thanks fuf Co-authored-by: Mihai Fufezan <fufexan@protonmail.com> * thanks ikalco --------- Co-authored-by: Mihai Fufezan <fufexan@protonmail.com>
This commit is contained in:
parent
128a6cf28e
commit
810af5579b
8 changed files with 22 additions and 54 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -426,6 +426,7 @@ _Subcategory `group:groupbar:`_
|
|||
| enable_hyprcursor | whether to enable hyprcursor support | bool | true |
|
||||
| hide_on_key_press | Hides the cursor when you press any key until the mouse is moved. | bool | false |
|
||||
| hide_on_touch | Hides the cursor when the last input was a touch input until a mouse input is done. | bool | false |
|
||||
| allow_dumb_copy | Makes HW cursors work on Nvidia, at the cost of a possible hitch whenever the image changes | bool | false |
|
||||
|
||||
### Debug
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
@ -276,6 +269,7 @@ to pass `-stdlib=libstdc++` or switch to GCC.
|
|||
|
||||
Additionally to those, you will also need a few hypr* dependencies which may or may not be
|
||||
packaged for your distro of choice:
|
||||
- aquamarine
|
||||
- hyprlang
|
||||
- hyprcursor
|
||||
- hyprwayland-scanner (build-only)
|
||||
|
@ -367,7 +361,7 @@ Now, of course, install manually.
|
|||
sudo cp ./build/Hyprland /usr/bin && sudo cp ./example/hyprland.desktop /usr/share/wayland-sessions
|
||||
```
|
||||
|
||||
Lastly, copy hyprctl, hyprpm, and wlroots as mentioned
|
||||
Lastly, copy hyprctl, hyprpm, hyprctl, etc as mentioned
|
||||
[here](#manual-releases-linux-only)
|
||||
|
||||
## Running In a VM
|
||||
|
|
|
@ -92,7 +92,9 @@ cursor {
|
|||
{{< callout type=warning >}}
|
||||
|
||||
Previously used `WLR_NO_HARDWARE_CURSORS` environment variable has been deprecated.
|
||||
Do not set it in your configs. Use `cursor:no_hardware_cursors` instead.
|
||||
Do not set it in your configs. Use `cursor:no_hardware_cursors` instead, and enable `cursor:allow_dumb_copy`.
|
||||
|
||||
Please note this may cause small hitches whenever the cursor shape changes.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
|
|
Loading…
Reference in a new issue