2022-10-23 16:37:31 +02:00
# Table of Contents
2022-08-13 17:00:36 +02:00
{{< toc format = html > }}
2022-10-23 16:37:31 +02:00
# Nothing renders / screen is empty / crash on opening first app
2022-08-12 20:46:36 +02:00
Possible causes:
2022-08-13 17:00:36 +02:00
> Your themes are not set up properly, making apps crash.
2022-08-12 20:46:36 +02:00
2023-03-09 15:35:22 +01:00
Use something like `qt6ct` (QT) and `nwg-look` (GTK) (\*for GTK you can also
2022-08-12 20:46:36 +02:00
set up themes with envvars) to set up your themes.
2022-10-23 16:37:31 +02:00
> Your PC is very, _very_ old.
2022-08-12 20:46:36 +02:00
In that case, see the
2022-08-13 18:45:33 +02:00
[Installation Page ](../../Getting-Started/Installation ) and
2022-08-12 20:46:36 +02:00
try compiling with LEGACY_RENDERER
2022-10-23 16:37:31 +02:00
_For more info about bugs and crashes, see this_
_[wiki page](../../Crashes-and-Bugs)_
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# Me cursor no render?
2022-08-12 20:46:36 +02:00
Are you on NVIDIA? If so, then you have been a naughty boy and haven't listened
2022-08-13 18:45:33 +02:00
to my tips on other pages. Use the `WLR_NO_HARDWARE_CURSORS=1` environment
variable.
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# My external monitor is blank / doesn't render / receives no signal (laptop)
2022-08-25 20:15:30 +02:00
2022-11-14 13:07:59 +01:00
For Radeon graphics - unfortunately, it's a bug in wlroots. You can either revert one commit
from wlroots or use a special env flag, see
2022-08-25 20:15:30 +02:00
[https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451 ](https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3451 )
2022-12-28 19:49:31 +01:00
For Nvidia graphics - This issue appears to be resolved when using Nvidia Drivers 525.60.11 or later, but it may persist with older drivers.
2022-08-25 20:15:30 +02:00
2022-12-28 19:49:31 +01:00
Outside those, there is a way to fix it that _might_ work for you though:
2022-08-25 20:19:11 +02:00
2022-10-23 16:37:31 +02:00
**Option 1:** Use _only_ the external monitor
2022-08-25 20:19:11 +02:00
By using `WLR_DRM_DEVICES=/dev/dri/card1` (or `card0` ) you can force Hyprland to use only your dGPU,
meaning your laptop's screen will be gone but your external one will work.
**Option 2:** Use all outputs, at the cost of battery life.
2022-10-23 16:37:31 +02:00
By switching your laptop to only use the dGPU in the BIOS, you _might_ be able to get everything to work,
2022-08-25 20:19:11 +02:00
at the cost of high battery usage.
2022-10-23 16:37:31 +02:00
_Please note these are highly model-specific and might or might not work. If they don't, you're unfortunately out of luck._
2022-08-25 20:19:11 +02:00
2023-01-27 11:32:59 +01:00
You might try a USB-C to HDMI adapter though, maybe that could route the external monitor through the iGPU.
2022-08-25 20:19:11 +02:00
2022-10-23 16:37:31 +02:00
# How do I screenshot?
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
Install `grim` and `slurp`
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
Use a keybind (or execute) `grim -g "$(slurp)"` , select a region. A screenshot
2022-08-12 20:46:36 +02:00
will pop into your `~/Pictures/` (You can configure grim and slurp, see their
2022-10-10 16:22:57 +02:00
GitHub pages).
2022-08-13 18:45:33 +02:00
2022-10-23 16:37:31 +02:00
For a more complete utility, try our own screenshotting utility:
2022-08-13 18:45:33 +02:00
[Grimblast ](https://github.com/hyprwm/contrib ).
2022-08-12 20:46:36 +02:00
2023-04-05 12:23:09 +02:00
For recording videos, [wf-recorder ](https://github.com/ammen99/wf-recorder ), [wl-screenrec ](https://github.com/russelltg/wl-screenrec ) or [OBS Studio ](https://obsproject.com/ ) could be used.
2022-10-23 16:37:31 +02:00
# Screenshare / OBS no worky
2022-09-12 15:13:18 +02:00
Check [Screensharing ](../Useful-Utilities/Screen-Sharing ).
2022-11-04 20:48:10 +01:00
Also install `qt6-wayland` if you plan to use obs.
2022-10-23 16:37:31 +02:00
# How do I change my wallpaper?
2022-08-12 20:46:36 +02:00
2022-08-13 18:45:33 +02:00
See [Wallpapers ](../Useful-Utilities/Wallpapers ).
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# My games work poorly, especially proton ones
2022-08-22 14:44:14 +02:00
Use `gamescope` , tends to fix any and all issues with wayland/Hyprland.
2022-10-23 16:37:31 +02:00
# How heavy is this?
2022-08-12 20:46:36 +02:00
Not that much heavier than Xorg. If you want maximum performance, consider
turning off the blur and animations.
2022-10-23 16:37:31 +02:00
# My monitor no worky
2022-08-12 20:46:36 +02:00
Try changing the mode in your config. If your preferred one doesn't work, try a
lower one. A good way to list all modes is to get `wlr-randr` and do a
`wlr-randr --dryrun`
2023-02-23 11:15:05 +01:00
# My monitor has flickering brightness when I turn on VRR
Change the VRR option to `2` (fullscreen), so that it is only used in games.
This happens because the brightness on some monitors can depends on the refresh
rate, and rapidly changing refresh rates (for example, when the screen momentarily
updates after pressing a key) will cause rapid changes in brightness.
2022-10-23 16:37:31 +02:00
# How do I update?
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
Open a terminal where you cloned the repo.
```bash
git pull
sudo make clear
2022-12-15 13:42:53 +01:00
sudo make install
2022-10-23 16:37:31 +02:00
```
2022-08-21 11:06:00 +02:00
2022-10-23 16:37:31 +02:00
If you are using the AUR (hyprland-git) package, you
will need to cleanbuild to update the package. Paru
has been problematic with updating before, use Yay.
2022-08-21 11:06:00 +02:00
2022-10-23 16:37:31 +02:00
# How do I screen lock?
2022-08-12 20:46:36 +02:00
Use a wayland-compatible locking utility using WLR protocols, e.g. `swaylock` .
2022-10-23 16:37:31 +02:00
# How do I change me mouse cursor?
2022-08-12 20:46:36 +02:00
2023-03-09 15:35:22 +01:00
1. Set the GTK cursor using [nwg-look ](https://github.com/nwg-piotr/nwg-look ).
2. Add `exec-once=hyprctl setcursor [THEME] [SIZE]` to your config and restart Hyprland.
2022-08-12 20:46:36 +02:00
2023-03-09 15:35:22 +01:00
If using flatpak, run `flatpak override --env=~/.themes:ro --env=~/.icons:ro --user` and put your themes in both `/usr/share/themes` and `~/.themes` , and put your icons and cursors in both `/usr/share/icons` and `~/.icons` .
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
For QT applications, Hyprland exports XCURSOR_SIZE as 24, which is the default.
2023-03-05 14:43:30 +01:00
You can overwrite this by exporting XCURSOR_SIZE to a different value with `env` .
2022-10-23 16:37:31 +02:00
2023-03-09 15:35:22 +01:00
You can also try running `gsettings set org.gnome.desktop.interface cursor-theme 'theme-name'` or adding it after `exec-once=` in your config.
2022-08-12 20:46:36 +02:00
2023-03-09 15:35:22 +01:00
If you do not want to install a GTK settings editor, change the config files according to the
[XDG specification (Arch Wiki link) ](https://wiki.archlinux.org/title/Cursor_themes#Configuration ).
Make sure to also edit `~/.config/gtk-4.0/settings.ini` and `~/.gtkrc-2.0` if _not_ using a tool
(like `nwg-look` ).
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# GTK Settings no work / whatever
2022-08-12 20:46:36 +02:00
[https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland ](https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland )
2022-10-23 16:37:31 +02:00
# My \[program name\] is freezing
2022-08-12 20:46:36 +02:00
Make sure you have a notification daemon running, for example `dunst` . Autostart
it with the `exec-once` keyword.
2022-10-23 16:37:31 +02:00
# Waybar workspaces no worky???
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
Waybar has a set of caveats or settings that you need to be aware of. See
[Status bars ](../Useful-Utilities/Status-Bars ) for solutions.
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# How do I autostart my favorite apps?
2022-08-12 20:46:36 +02:00
2023-08-02 18:28:58 +02:00
Using the window rules to assign apps to workspace you can open a bunch of
applications on various workspaces. The following method will start these apps
silently (i.e. without the flickering from workspace to workspace).
2022-08-12 20:46:36 +02:00
2022-08-13 19:09:01 +02:00
Put the following in your `hyprland.conf` : (example)
2022-08-12 20:46:36 +02:00
2022-09-24 16:03:37 +02:00
```ini
2023-08-02 18:28:58 +02:00
exec-once=[workspace 1 silent] kitty
exec-once=[workspace 1 silent] subl
exec-once=[workspace 3 silent] mailspring
exec-once=[workspace 4 silent] firefox
2022-08-12 20:46:36 +02:00
```
2022-10-23 16:37:31 +02:00
# How do I move my favorite workspaces to a new monitor when I plug it in?
2022-08-12 20:46:36 +02:00
if you want workspaces to automatically go to a monitor upon connection, use the
following:
In hyprland.conf:
2022-09-24 16:03:37 +02:00
```ini
2022-08-12 20:46:36 +02:00
exec-once=handle_monitor_connect.sh
```
where `handle_monitor_connect.sh` is: (example)
2023-04-23 22:20:55 +02:00
```sh
2022-08-12 20:46:36 +02:00
#!/bin/sh
2023-04-23 22:20:55 +02:00
handle() {
case $1 in monitoradded*)
2022-08-12 20:46:36 +02:00
hyprctl dispatch moveworkspacetomonitor "1 1"
hyprctl dispatch moveworkspacetomonitor "2 1"
hyprctl dispatch moveworkspacetomonitor "4 1"
hyprctl dispatch moveworkspacetomonitor "5 1"
2023-04-23 22:20:55 +02:00
esac
2022-08-12 20:46:36 +02:00
}
2023-06-22 13:15:52 +02:00
socat - "UNIX-CONNECT:/tmp/hypr/${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock" | while read -r line; do handle "$line"; done
2022-08-12 20:46:36 +02:00
```
if you want workspaces 1 2 4 5 to go to monitor 1 when connecting it.
Please note this requires `socat` to be installed.
2022-10-23 16:37:31 +02:00
# My tablet no worky??
2022-08-12 20:46:36 +02:00
Use [Open Tablet Driver ](https://github.com/OpenTabletDriver/OpenTabletDriver )
to configure your tablet. In the future it will be supported in the config.
2022-10-23 16:37:31 +02:00
Until then, OTD is the way to go.
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# Some of my apps take a really long time to open...?
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
_~/.config/hypr/hyprland.conf_
2022-08-12 20:46:36 +02:00
2022-09-24 16:03:37 +02:00
```ini
2022-09-12 15:17:26 +02:00
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
```
2022-10-23 16:37:31 +02:00
Make sure that your portals launch _after_ this gets executed. For some people,
2022-10-02 14:44:10 +02:00
they might launch before that has happened.
In such cases, a script like this:
2022-10-23 16:37:31 +02:00
```bash
2022-10-02 14:44:10 +02:00
#!/bin/bash
sleep 4
2023-06-04 10:47:08 +02:00
killall -e xdg-desktop-portal-wlr
2022-10-02 14:44:10 +02:00
killall xdg-desktop-portal
/usr/lib/xdg-desktop-portal-wlr &
sleep 4
/usr/lib/xdg-desktop-portal &
```
2022-10-23 16:37:31 +02:00
launched with `exec-once` should fix all issues. Adjust the sleep durations to taste.
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
# How do I export envvars for Hyprland?
2022-08-12 20:46:36 +02:00
2023-05-26 22:36:24 +02:00
See [Environment Variables ](../Configuring/Environment-variables )
2022-08-12 20:46:36 +02:00
2023-05-26 20:33:55 +02:00
The `env` keyword is used for this purpose. For example:
```ini
env = XDG_CURRENT_DESKTOP,Hyprland
2022-08-12 20:46:36 +02:00
```
2023-01-27 11:32:59 +01:00
# How to disable middle-click paste?
2023-02-23 21:57:36 +01:00
The middle-click paste action pastes from a separate buffer (primary buffer) than what the regular clipboard uses (clipboard buffer). Since the primary buffer is unrelated to the clipboard buffer, it's easy to simply keep the primary buffer empty, allowing the middle-click action to retain the rest of its functionality without having anything to paste. Run the following command (in your config with `exec-once` , for example) to achieve this:
2023-01-27 11:32:59 +01:00
2023-02-23 21:57:36 +01:00
`wl-paste -p --watch wl-copy -pc` (`wl-paste -p --watch` watches for changes to the primary buffer, `wl-copy -pc` clears the primary buffer)
Alternatively, you can simply intercept the middle-click action all together, via hyprland binds for example. The drawbacks to this solution are that 1. it disables the rest of the functionality of the middle-click action, such as auto scroll, closing browser tabs, etc., and 2. many applications (such as kitty) manually intercept the middle-click events and bind them to paste from the primary buffer themselves, bypassing the solution altogether. For this solution, add this bind to your config:
`bind = , mouse:274, exec, ;` . Note that the exact bindcode may vary, so you may want to check it with `wev` first.
2023-02-11 11:24:50 +01:00
2022-10-23 16:37:31 +02:00
# How do I make Hyprland draw as little power as possible on my laptop?
2022-08-12 20:46:36 +02:00
2023-01-27 11:49:08 +01:00
I assume you already have `damage_tracking` on full. If you don't, change it.
It's heavily advised to use `full` regardless of anything.
2022-10-23 16:37:31 +02:00
**_Useful Optimizations_**:
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
* `decoration:blur_new_optimizations = true` , to use new optimizations for
blurring.
2022-08-12 20:46:36 +02:00
2022-10-23 16:37:31 +02:00
* `decoration:blur = false` and `decoration:drop_shadow = false` to disable
fancy but battery hungry effects.
2022-08-12 20:46:36 +02:00
2023-02-14 18:16:36 +01:00
* `misc:vfr = true` , since it'll lower the amount of sent frames when nothing is happening on-screen.
2022-09-10 17:30:19 +02:00
2022-10-23 16:37:31 +02:00
# How to fix games with window dancing?
2022-10-21 02:31:35 +02:00
Read [this trick ](../Configuring/Uncommon-tips--tricks/#window-dancing ).
2023-02-17 00:56:49 +01:00
# My apps take a long time to start / can't screenshare
See [The XDPH Page ](../Useful-Utilities/Hyprland-desktop-portal ).
2023-02-23 11:15:05 +01:00
You most likely have multiple portal impls / an impl is failing to launch.
2023-06-19 18:16:13 +02:00
# My screenshot utilities won't work with multiple screens
Some programs like flameshot (currently) has limited wayland support so on most Wayland compositors, you will have to do few tweaks.
For Hyprland, you can add these window rules to your config to make said programs work with both of your screens.
```windowrulev2=float,title:^(flameshot)
windowrulev2=move 0 0,title:^(flameshot)
windowrulev2=nofullscreenrequest,title:^(flameshot)
```