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:
Vaxry 2024-07-21 13:11:03 +02:00 committed by GitHub
parent 128a6cf28e
commit 810af5579b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 22 additions and 54 deletions

View file

@ -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

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 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

View file

@ -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.

View file

@ -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

View file

@ -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

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 **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.

View file

@ -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

View file

@ -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 >}}