mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-16 18:15:58 +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 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_RT=1` - Disables realtime priority setting by Hyprland.
|
||||||
- `HYPRLAND_NO_SD_NOTIFY=1` - If systemd, disables the `sd_notify` calls.
|
- `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
|
- `__GL_VRR_ALLOWED` - Controls if Adaptive Sync should be used. Recommended to
|
||||||
set as "0" to avoid having problems on some games.
|
set as "0" to avoid having problems on some games.
|
||||||
|
|
||||||
- `env = WLR_DRM_NO_ATOMIC,1` - use legacy DRM interface instead of atomic mode
|
- `env = AQ_NO_ATOMIC,1` - use legacy DRM interface instead of atomic mode
|
||||||
setting. Might fix flickering issues.
|
setting. **NOT** recommended.
|
||||||
|
|
||||||
## Theming Related Variables
|
## 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
|
After determining which "card" belongs to which GPU, we now have to tell
|
||||||
Hyprland the GPU we want to use primarily.
|
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 >}}
|
{{< callout type=info >}}
|
||||||
|
|
||||||
|
@ -59,34 +59,34 @@ with lower and higher power rating GPUs respectively.
|
||||||
{{< /callout >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
If you wish to use the integrated GPU to run Hyprland, no further action is
|
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
|
If instead you would like to use another GPU, you must first create a symlink to
|
||||||
the card from the previous section.
|
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`
|
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
|
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,
|
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.
|
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.
|
hyprland.conf to this linked card.
|
||||||
|
|
||||||
|
|
||||||
```ini
|
```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
|
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.
|
the var as a colon separated list in order of priority.
|
||||||
|
|
||||||
```ini
|
```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
|
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:
|
To enable tearing:
|
||||||
|
|
||||||
- Set `general:allow_tearing` to `true`. This is a "master toggle"
|
- 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
|
- Add an `immediate` windowrule to your game of choice. This makes sure that
|
||||||
Hyprland will tear it.
|
Hyprland will tear it.
|
||||||
|
|
||||||
|
@ -29,22 +27,9 @@ general {
|
||||||
allow_tearing = true
|
allow_tearing = true
|
||||||
}
|
}
|
||||||
|
|
||||||
env = WLR_DRM_NO_ATOMIC,1
|
|
||||||
|
|
||||||
windowrulev2 = immediate, class:^(cs2)$
|
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 >}}
|
{{< callout type=warning >}}
|
||||||
|
|
||||||
If you experience graphical issues, you may be out of luck. Tearing support is
|
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
|
### Apps that should tear, freeze
|
||||||
|
|
||||||
Almost definitely means your GPU driver does not support tearing, like e.g.
|
Almost definitely means your GPU driver does not support tearing.
|
||||||
Intel's, or AMD if you don't use the legacy backend with `env = WLR_DRM_NO_ATOMIC,1` or patch your kernel.
|
|
||||||
|
|
||||||
Please _do not_ report issues if this is the culprit.
|
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
|
Please _do not_ report issues if this is the culprit. Unfortunately, it's most
|
||||||
likely your GPU driver's fault.
|
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 |
|
| 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_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 |
|
| 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
|
### Debug
|
||||||
|
|
||||||
|
|
|
@ -33,16 +33,13 @@ Attach that file to your issue.
|
||||||
|
|
||||||
Diagnose the issue by what is in the log:
|
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 X has NO PREFERRED MODE, and an INVALID one was requested` -> your
|
||||||
monitor is bork.
|
monitor is bork.
|
||||||
- Other -> see the coredump. Use `coredumpctl`, find the latest one's PID and do
|
- Other -> see the coredump. Use `coredumpctl`, find the latest one's PID and do
|
||||||
`coredumpctl info PID`.
|
`coredumpctl info PID`.
|
||||||
- failing on a driver (e.g. `radeon`) -> try compiling with
|
- failing on a driver (e.g. `radeon`) -> try compiling with
|
||||||
`make legacyrenderer`, if that doesn't help, report an issue.
|
`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.
|
- failing on `Hyprland` -> report an issue.
|
||||||
|
|
||||||
## Crashes not at launch
|
## 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
|
**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
|
use only your dGPU, meaning your laptop's screen will be gone but your external
|
||||||
one will work.
|
one will work.
|
||||||
|
|
||||||
|
|
|
@ -211,15 +211,12 @@ copy hyprctl to `/usr/bin/`.
|
||||||
|
|
||||||
copy hyprpm 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
|
copy the desktop entry (`example/hyprland.desktop`) to
|
||||||
`/usr/share/wayland-sessions/`
|
`/usr/share/wayland-sessions/`
|
||||||
|
|
||||||
the example config is in `example/hyprland.conf`.
|
the example config is in `example/hyprland.conf`.
|
||||||
|
|
||||||
For updating later on, you can overwrite the binaries (hyprctl, hyprland and
|
For updating later on, you can overwrite the binaries (hyprctl, hyprland, hyprpm ...). You don't need to update anything else.
|
||||||
libwlroots), you don't need to update anything else.
|
|
||||||
|
|
||||||
### Manual (Manual Build)
|
### Manual (Manual Build)
|
||||||
|
|
||||||
|
@ -251,7 +248,7 @@ zypper in gcc-c++ git meson cmake "pkgconfig(cairo)" "pkgconfig(egl)" "pkgconfig
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
pkg install git pkgconf gmake gcc evdev-proto cmake wayland-protocols wayland libglvnd libxkbcommon libinput cairo pango pixman libxcb
|
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"
|
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
|
refer to the Ubuntu tab above
|
||||||
|
|
||||||
Please note Hyprland builds `wlroots`. Make sure you have the dependencies of
|
Please note that Hyprland uses the C++23 standard, so both your compiler and your
|
||||||
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
|
|
||||||
C++ library has to support that (`gcc>=13.0.0` or `clang>=15`). On Clang-based
|
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
|
systems libc++ may be used by default, so until libc++ supports C++23 you have
|
||||||
to pass `-stdlib=libstdc++` or switch to GCC.
|
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
|
Additionally to those, you will also need a few hypr* dependencies which may or may not be
|
||||||
packaged for your distro of choice:
|
packaged for your distro of choice:
|
||||||
|
- aquamarine
|
||||||
- hyprlang
|
- hyprlang
|
||||||
- hyprcursor
|
- hyprcursor
|
||||||
- hyprwayland-scanner (build-only)
|
- 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
|
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)
|
[here](#manual-releases-linux-only)
|
||||||
|
|
||||||
## Running In a VM
|
## Running In a VM
|
||||||
|
|
|
@ -92,7 +92,9 @@ cursor {
|
||||||
{{< callout type=warning >}}
|
{{< callout type=warning >}}
|
||||||
|
|
||||||
Previously used `WLR_NO_HARDWARE_CURSORS` environment variable has been deprecated.
|
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 >}}
|
{{< /callout >}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue