Convert Hugo callouts to GFM alerts

This commit is contained in:
Bugg4 2025-10-29 20:52:11 +01:00 committed by Mihai Fufezan
parent 5f6f2203cb
commit c4dfbc2808
43 changed files with 681 additions and 1047 deletions

View file

@ -67,12 +67,9 @@ global
↳ monitorAdded - monitor added zoom animation
```
{{< callout type=warning >}}
Using the `loop` style for `borderangle` requires Hyprland to _constantly_ render new frames at a frequency equal to your screen's refresh rate (e.g. 60 times per second for a 60hz monitor), which might stress your CPU/GPU and will impact battery life. <br>
This will apply even if animations are disabled or borders are not visible.
{{</ callout >}}
> [!WARNING]
> Using the `loop` style for `borderangle` requires Hyprland to _constantly_ render new frames at a frequency equal to your screen's refresh rate (e.g. 60 times per second for a 60hz monitor), which might stress your CPU/GPU and will impact battery life. <br>
> This will apply even if animations are disabled or borders are not visible.
## Curves

View file

@ -17,15 +17,12 @@ bind = SUPER_SHIFT, Q, exec, firefox
will bind opening Firefox to <key>SUPER</key> + <key>SHIFT</key> + <key>Q</key>
{{< callout type=info >}}
For binding keys without a modkey, leave it empty:
```ini
bind = , Print, exec, grim
```
{{< /callout >}}
> [!NOTE]
> For binding keys without a modkey, leave it empty:
>
> ```ini
> bind = , Print, exec, grim
> ```
_For a complete mod list, see [Variables](../Variables/#variable-types)._
@ -47,11 +44,8 @@ bind = SUPER, code:28, exec, amongus
This will bind <key>SUPER</key> + <key>t</key> since <key>t</key> is keycode 28.
{{< callout type=info >}}
If you are unsure of what your key's name or keycode is, you can use [`wev`](https://github.com/jwrdegoede/wev) to find out.
{{< /callout >}}
> [!NOTE]
> If you are unsure of what your key's name or keycode is, you can use [`wev`](https://github.com/jwrdegoede/wev) to find out.
## Misc
@ -60,11 +54,8 @@ If you are unsure of what your key's name or keycode is, you can use [`wev`](htt
Keys used for keybinds need to be accessible without any modifiers in your layout.
For instance, the [French AZERTY](https://en.wikipedia.org/wiki/AZERTY) layout uses <key>SHIFT</key> + _`unmodified key`_ to write `0-9` numbers. As such, the workspace keybinds for this layout need to use the names of the _`unmodified keys`_ , and will not work when using the `0-9` numbers.
{{< callout type=info >}}
To get the correct name for an `unmodified_key`, refer to [the section on uncommon syms](#uncommon-syms--binding-with-a-keycode)
{{< /callout >}}
> [!NOTE]
> To get the correct name for an `unmodified_key`, refer to [the section on uncommon syms](#uncommon-syms--binding-with-a-keycode)
```ini
# On a French layout, instead of:
@ -90,16 +81,14 @@ This may be useful for dynamic keybindings with `hyprctl`, e.g.:
hyprctl keyword unbind SUPER, O
```
{{< callout type=info >}}
In `unbind`, key is case-sensitive It must exactly match the case of the `bind` you are unbinding.
```ini
bind = SUPER, TAB, workspace, e+1
unbind = SUPER, Tab # this will NOT unbind
unbind = SUPER, TAB # this will unbind
```
{{< /callout >}}
> [!NOTE]
> In `unbind`, key is case-sensitive It must exactly match the case of the `bind` you are unbinding.
>
> ```ini
> bind = SUPER, TAB, workspace, e+1
> unbind = SUPER, Tab # this will NOT unbind
> unbind = SUPER, TAB # this will unbind
> ```
## Bind flags
@ -186,12 +175,9 @@ binds = Control_R&Super_R&Alt_L, J&K&L, exec, kitty
binds = Escape&Apostrophe&F7, T&O&A&D, exec, battletoads 2: retoaded
```
{{< callout type=info >}}
Please note that this is only valid for keysyms and it makes all mods keysyms.
If you don't know what a keysym is use `wev` and press the key you want to use.
{{< /callout >}}
> [!NOTE]
> Please note that this is only valid for keysyms and it makes all mods keysyms.
> If you don't know what a keysym is use `wev` and press the key you want to use.
### Mouse wheel
@ -202,11 +188,8 @@ You can also bind mouse wheel events with `mouse_up` and `mouse_down` (or
bind = SUPER, mouse_down, workspace, e-1
```
{{< callout type=info >}}
You can control the reset time with `binds:scroll_event_delay`.
{{< /callout >}}
> [!NOTE]
> You can control the reset time with `binds:scroll_event_delay`.
### Switches
@ -221,17 +204,11 @@ bindl = , switch:on:[switch name], exec, hyprctl keyword monitor "eDP-1, disable
bindl = , switch:off:[switch name], exec, hyprctl keyword monitor "eDP-1, 2560x1600, 0x0, 1"
```
{{< callout type=warning >}}
> [!WARNING]
> Systemd `HandleLidSwitch` settings in `logind.conf` may conflict with Hyprland's laptop lid switch configurations.
Systemd `HandleLidSwitch` settings in `logind.conf` may conflict with Hyprland's laptop lid switch configurations.
{{< /callout >}}
{{< callout type=info >}}
You can view your switches with `hyprctl devices`.
{{< /callout >}}
> [!NOTE]
> You can view your switches with `hyprctl devices`.
### Multiple binds to one key
@ -243,11 +220,8 @@ bind = SUPER, Tab, cyclenext # Change focus to another window
bind = SUPER, Tab, bringactivetotop # Bring it to the top
```
{{< callout type=warning >}}
The keybinds will be executed top to bottom, in the order they were written in.
{{< /callout >}}
> [!WARNING]
> The keybinds will be executed top to bottom, in the order they were written in.
### Description
@ -295,13 +269,10 @@ RMB -> 273
MMB -> 274
```
{{< callout type=info >}}
Mouse binds, despite their name, behave like normal binds.
You are free to use whatever keys / mods you please. When held, the mouse function will be
activated.
{{< /callout >}}
> [!NOTE]
> Mouse binds, despite their name, behave like normal binds.
> You are free to use whatever keys / mods you please. When held, the mouse function will be
> activated.
### Touchpad
@ -346,12 +317,9 @@ You may also add shortcuts, where other keys are passed to the window.
bind = SUPER, F10, sendshortcut, SUPER, F4, class:^(com\.obsproject\.Studio)$ # Send SUPER + F4 to OBS when SUPER + F10 is pressed.
```
{{< callout type=warning >}}
This works flawlessly with all native Wayland applications, however, XWayland is a bit wonky.
Make sure that what you're passing is a "global Xorg keybind", otherwise passing from a different XWayland app may not work.
{{< /callout >}}
> [!WARNING]
> This works flawlessly with all native Wayland applications, however, XWayland is a bit wonky.
> Make sure that what you're passing is a "global Xorg keybind", otherwise passing from a different XWayland app may not work.
### DBus Global Shortcuts
@ -369,12 +337,9 @@ whatever you want with the `global` dispatcher:
bind = SUPERSHIFT, A, global, coolApp:myToggle
```
{{< callout type=info >}}
Please note that this function will _only_ work with
[XDPH](../../Hypr-Ecosystem/xdg-desktop-portal-hyprland).
{{</ callout >}}
> [!NOTE]
> Please note that this function will _only_ work with
> [XDPH](../../Hypr-Ecosystem/xdg-desktop-portal-hyprland).
## Submaps
@ -404,14 +369,11 @@ submap = reset
# Keybinds further down will be global again...
```
{{< callout type=warning >}}
Do not forget a keybind (`escape`, in this case) to reset the keymap while inside it!
If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to go back.
If you do not have a terminal open, tough luck buddy. You have been warned.
{{< /callout >}}
> [!WARNING]
> Do not forget a keybind (`escape`, in this case) to reset the keymap while inside it!
>
> If you get stuck inside a keymap, you can use `hyprctl dispatch submap reset` to go back.
> If you do not have a terminal open, tough luck buddy. You have been warned.
You can also set the same keybind to perform multiple actions, such as resize
and close the submap, like so:

View file

@ -90,24 +90,18 @@ layout pages (See the sidebar).
| setprop | Sets a window property | `window property value` |
| toggleswallow | If a window is swallowed by the focused window, unswallows it. Execute again to swallow it back | none |
{{< callout type=warning >}}
> [!WARNING]
> [uwsm](../../Useful-Utilities/Systemd-start) users should avoid using `exit` dispatcher, or terminating Hyprland process directly, as exiting Hyprland this way removes it from under its clients and interferes with ordered shutdown sequence. Use `exec, uwsm stop` (or [other variants](https://github.com/Vladimir-csp/uwsm#how-to-stop)) which will gracefully bring down graphical session (and login session bound to it, if any). If you experience problems with units entering inconsistent states, affecting subsequent sessions, use `exec, loginctl terminate-user ""` instead (terminates all units of the user).
>
> It's also strongly advised to replace the `exit` dispatcher inside `hyprland.conf` keybinds section accordingly.
[uwsm](../../Useful-Utilities/Systemd-start) users should avoid using `exit` dispatcher, or terminating Hyprland process directly, as exiting Hyprland this way removes it from under its clients and interferes with ordered shutdown sequence. Use `exec, uwsm stop` (or [other variants](https://github.com/Vladimir-csp/uwsm#how-to-stop)) which will gracefully bring down graphical session (and login session bound to it, if any). If you experience problems with units entering inconsistent states, affecting subsequent sessions, use `exec, loginctl terminate-user ""` instead (terminates all units of the user).
It's also strongly advised to replace the `exit` dispatcher inside `hyprland.conf` keybinds section accordingly.
{{< /callout >}}
{{< callout type=warning >}}
It is NOT recommended to set DPMS or forceidle with a keybind directly, as it
might cause undefined behavior. Instead, consider something like
```ini
bind = MOD, KEY, exec, sleep 1 && hyprctl dispatch dpms off
```
{{< /callout >}}
> [!WARNING]
> It is NOT recommended to set DPMS or forceidle with a keybind directly, as it
> might cause undefined behavior. Instead, consider something like
>
> ```ini
> bind = MOD, KEY, exec, sleep 1 && hyprctl dispatch dpms off
> ```
### Grouped (tabbed) windows
@ -158,33 +152,24 @@ You have nine choices:
- Special Workspace: `special` or `special:name` for named special workspaces.
{{< callout type=warning >}}
> [!WARNING]
> `special` is supported ONLY on `movetoworkspace` and `movetoworkspacesilent`.
> Any other dispatcher will result in undocumented behavior.
`special` is supported ONLY on `movetoworkspace` and `movetoworkspacesilent`.
Any other dispatcher will result in undocumented behavior.
{{< /callout >}}
{{< callout >}}
Numerical workspaces (e.g. `1`, `2`, `13371337`) are allowed **ONLY** between 1
and 2147483647 (inclusive)
Neither `0` nor negative numbers are allowed.
{{< /callout >}}
> [!WARNING]
> Numerical workspaces (e.g. `1`, `2`, `13371337`) are allowed **ONLY** between 1
> and 2147483647 (inclusive)
>
> Neither `0` nor negative numbers are allowed.
## Special Workspace
A special workspace is what is called a "scratchpad" in some other places. A
workspace that you can toggle on/off on any monitor.
{{< callout type=info >}}
You can define multiple named special workspaces, but the amount of those is
limited to 97 at a time.
{{< /callout >}}
> [!NOTE]
> You can define multiple named special workspaces, but the amount of those is
> limited to 97 at a time.
For example, to move a window/application to a special workspace you can use the
following syntax:

View file

@ -3,19 +3,16 @@ weight: 18
title: Environment variables
---
{{< callout type=info >}}
[uwsm](../../Useful-Utilities/Systemd-start) users should avoid placing environment variables in the `hyprland.conf` file.
Instead, use `~/.config/uwsm/env` for theming, xcursor, Nvidia and toolkit variables, and `~/.config/uwsm/env-hyprland` for `HYPR*` and `AQ_*` variables.
The format is `export KEY=VAL`.
```plain
export XCURSOR_SIZE=24
```
See [uwsm readme](https://github.com/Vladimir-csp/uwsm?tab=readme-ov-file#4-environments-and-shell-profile) for additional information.
{{< /callout >}}
> [!NOTE]
> [uwsm](../../Useful-Utilities/Systemd-start) users should avoid placing environment variables in the `hyprland.conf` file.
> Instead, use `~/.config/uwsm/env` for theming, xcursor, Nvidia and toolkit variables, and `~/.config/uwsm/env-hyprland` for `HYPR*` and `AQ_*` variables.
> The format is `export KEY=VAL`.
>
> ```plain
> export XCURSOR_SIZE=24
> ```
>
> See [uwsm readme](https://github.com/Vladimir-csp/uwsm?tab=readme-ov-file#4-environments-and-shell-profile) for additional information.
You can use the `env` keyword to set environment variables prior to the
initialization of the Display Server, e.g.:
@ -24,41 +21,35 @@ initialization of the Display Server, e.g.:
env = GTK_THEME,Nord
```
{{< callout type=warning >}}
Note that when using the `env` keyword, Hyprland reads the value of the variable as a **raw string** and puts it into the environment _as is_.
You should **NOT** add quotes `""` around the values.
Some examples with differently formatted values:
✗ DON'T:
```py
env = QT_AUTO_SCREEN_SCALE_FACTOR,"1"
env = QT_QPA_PLATFORM,"wayland"
env = QT_QPA_PLATFORM,"wayland;xcb"
env = AQ_DRM_DEVICES=,"/dev/dri/card1:/dev/dri/card0"
```
✓ Instead, DO:
```py
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORM,wayland;xcb
env = AQ_DRM_DEVICES=,/dev/dri/card1:/dev/dri/card0
```
{{< /callout >}}
> [!WARNING]
> Note that when using the `env` keyword, Hyprland reads the value of the variable as a **raw string** and puts it into the environment _as is_.
> You should **NOT** add quotes `""` around the values.
>
> Some examples with differently formatted values:
>
> ✗ DON'T:
>
> ```py
> env = QT_AUTO_SCREEN_SCALE_FACTOR,"1"
> env = QT_QPA_PLATFORM,"wayland"
> env = QT_QPA_PLATFORM,"wayland;xcb"
> env = AQ_DRM_DEVICES=,"/dev/dri/card1:/dev/dri/card0"
> ```
>
> ✓ Instead, DO:
>
> ```py
> env = QT_AUTO_SCREEN_SCALE_FACTOR,1
> env = QT_QPA_PLATFORM,wayland
> env = QT_QPA_PLATFORM,wayland;xcb
> env = AQ_DRM_DEVICES=,/dev/dri/card1:/dev/dri/card0
> ```
{{< callout type=warning >}}
Please avoid putting those environment variables in `/etc/environment`.
That will cause all sessions (including Xorg ones) to pick up your Wayland-specific
environment on traditional Linux distros.
{{< /callout >}}
> [!WARNING]
> Please avoid putting those environment variables in `/etc/environment`.
> That will cause all sessions (including Xorg ones) to pick up your Wayland-specific
> environment on traditional Linux distros.
## Hyprland Environment Variables
@ -100,11 +91,10 @@ them explicitly.
If your [desktop portal](https://wiki.archlinux.org/title/XDG_Desktop_Portal) is malfunctioning for seemingly
no reason (no errors), it's likely your XDG env isn't set correctly.
{{< callout type=info >}}
[uwsm](../../Useful-Utilities/Systemd-start) users don't need to explicitly set XDG environment variables, as uwsm sets them automatically.
{{< /callout >}}
> [!NOTE]
> [uwsm](../../Useful-Utilities/Systemd-start) users don't need to explicitly set XDG environment variables, as uwsm sets them automatically.
>
>
## Qt Variables

View file

@ -7,12 +7,9 @@ This page houses links to a few repositories with beautiful Hyprland
configurations for you to get inspired from or learn how to configure Hyprland
from a more tangible example.
{{< callout >}}
These configurations are popular and have many people using them. PRs that add
more configurations will not be merged.
{{< /callout >}}
> [!WARNING]
> These configurations are popular and have many people using them. PRs that add
> more configurations will not be merged.
### end_4 (illogical-impulse)

View file

@ -9,20 +9,17 @@ this page, you will be presented with some that do not deserve their own page.
See the sidebar for more keywords to control binds, animations, monitors, et
cetera.
{{< callout >}}
Please remember, that for ALL arguments separated by a comma, if you want to
leave one of them empty, you cannot reduce the number of commas, _unless told
otherwise in a specific section_:
```ini
three_param_keyword = A, B, C # OK
three_param_keyword = A, C # NOT OK
three_param_keyword = A, , C # OK
three_param_keyword = A, B, # OK
```
{{< /callout >}}
> [!WARNING]
> Please remember, that for ALL arguments separated by a comma, if you want to
> leave one of them empty, you cannot reduce the number of commas, _unless told
> otherwise in a specific section_:
>
> ```ini
> three_param_keyword = A, B, C # OK
> three_param_keyword = A, C # NOT OK
> three_param_keyword = A, , C # OK
> three_param_keyword = A, B, # OK
> ```
## Executing
@ -124,16 +121,13 @@ Example modifying per-device config values using `hyprctl`:
hyprctl -r -- keyword device[my-device]:sensitivity -1
```
{{< callout type=info >}}
Per-device layouts will by default not alter the keybind keymap, so for example
with a global keymap of `us` and a per-device one of `fr`, the keybinds will
still act as if you were on `us`.
You can change this behavior by setting `resolve_binds_by_sym = 1`. In that case
you'll need to type the symbol specified in the bind to activate it.
{{< /callout >}}
> [!NOTE]
> Per-device layouts will by default not alter the keybind keymap, so for example
> with a global keymap of `us` and a per-device one of `fr`, the keybinds will
> still act as if you were on `us`.
>
> You can change this behavior by setting `resolve_binds_by_sym = 1`. In that case
> you'll need to type the symbol specified in the bind to activate it.
## Wallpapers
@ -175,12 +169,9 @@ layerrule = unset, NAMESPACE
## Setting the environment
{{< callout type=info >}}
A new environment cannot be passed to already running processes. If you change / add / remove an `env = ` entry
when Hyprland is running, only newly spawned apps will pick up the changes.
{{< /callout >}}
> [!NOTE]
> A new environment cannot be passed to already running processes. If you change / add / remove an `env = ` entry
> when Hyprland is running, only newly spawned apps will pick up the changes.
You can use the `env` keyword to set environment variables,
e.g:
@ -196,21 +187,18 @@ You can also add a `d` flag if you want the env var to be exported to D-Bus
envd = XCURSOR_SIZE,24
```
{{< callout >}}
Hyprland puts the raw string to the env var. You should _not_ add quotes around
the values.
e.g.:
```ini
env = QT_QPA_PLATFORM,wayland
```
and _**NOT**_
```ini
env = QT_QPA_PLATFORM,"wayland"
```
{{< /callout >}}
> [!WARNING]
> Hyprland puts the raw string to the env var. You should _not_ add quotes around
> the values.
>
> e.g.:
>
> ```ini
> env = QT_QPA_PLATFORM,wayland
> ```
>
> and _**NOT**_
>
> ```ini
> env = QT_QPA_PLATFORM,"wayland"
> ```

View file

@ -58,17 +58,14 @@ _category name `master`_
Parameters for the commands are separated by a single space.
{{< callout type=info >}}
Example usage:
```ini
bind = MOD, KEY, layoutmsg, cyclenext
# behaves like xmonads promote feature (https://hackage.haskell.org/package/xmonad-contrib-0.17.1/docs/XMonad-Actions-Promote.html)
bind = MOD, KEY, layoutmsg, swapwithmaster master
```
{{< /callout >}}
> [!NOTE]
> Example usage:
>
> ```ini
> bind = MOD, KEY, layoutmsg, cyclenext
> # behaves like xmonads promote feature (https://hackage.haskell.org/package/xmonad-contrib-0.17.1/docs/XMonad-Actions-Promote.html)
> bind = MOD, KEY, layoutmsg, swapwithmaster master
> ```
## Workspace Rules

View file

@ -72,21 +72,15 @@ monitor = DP-2, 1920x1080, 0x1080, 1
will tell Hyprland to put DP-2 _below_.
{{< callout type=info >}}
> [!NOTE]
> The position is calculated with the scaled (and transformed) resolution, meaning
> if you want your 4K monitor with scale 2 to the left of your 1080p one, you'd
> use the position `1920x0` for the second screen (3840 / 2). If the monitor is
> also rotated 90 degrees (vertical), you'd use `1080x0`.
The position is calculated with the scaled (and transformed) resolution, meaning
if you want your 4K monitor with scale 2 to the left of your 1080p one, you'd
use the position `1920x0` for the second screen (3840 / 2). If the monitor is
also rotated 90 degrees (vertical), you'd use `1080x0`.
{{</ callout >}}
{{< callout type=warning >}}
No monitors can overlap. This means that if your set positions make any monitors
overlap, you will get a warning.
{{</ callout >}}
> [!WARNING]
> No monitors can overlap. This means that if your set positions make any monitors
> overlap, you will get a warning.
Leaving the name empty will define a fallback rule to use when no other rules
match.
@ -164,14 +158,11 @@ To disable a monitor, use
monitor = name, disable
```
{{< callout >}}
Disabling a monitor will literally remove it from the layout, moving all windows
and workspaces to any remaining ones. If you want to disable your monitor in a
screensaver style (just turn off the monitor) use the `dpms`
[dispatcher](../Dispatchers).
{{</ callout >}}
> [!WARNING]
> Disabling a monitor will literally remove it from the layout, moving all windows
> and workspaces to any remaining ones. If you want to disable your monitor in a
> screensaver style (just turn off the monitor) use the `dpms`
> [dispatcher](../Dispatchers).
## Custom reserved area
@ -220,14 +211,11 @@ the end of the monitor rule, e.g:
monitor = eDP-1, 2880x1800@90, 0x0, 1, bitdepth, 10
```
{{< callout >}}
Colors registered in Hyprland (e.g. the border color) do _not_ support
10 bit.
Some applications do _not_ support screen capture with 10 bit enabled.
{{< /callout >}}
> [!WARNING]
> Colors registered in Hyprland (e.g. the border color) do _not_ support
> 10 bit.
>
> Some applications do _not_ support screen capture with 10 bit enabled.
### Color management presets

View file

@ -47,15 +47,12 @@ boot and is subject to frequent change, making it unsuitable as a marker for GPU
After determining which "card" belongs to which GPU, we can now tell
Hyprland which GPUs to use by setting the `AQ_DRM_DEVICES` environment variable.
{{< callout type=info >}}
It is generally a good idea for laptops to use the integrated GPU as the primary
renderer as this preserves battery life and is practically indistinguishable
from using the dedicated GPU on modern systems in most cases. Hyprland can be
run on integrated GPUs just fine. The same principle applies for desktop setups
with lower and higher power rating GPUs respectively.
{{< /callout >}}
> [!NOTE]
> It is generally a good idea for laptops to use the integrated GPU as the primary
> renderer as this preserves battery life and is practically indistinguishable
> from using the dedicated GPU on modern systems in most cases. Hyprland can be
> run on integrated GPUs just fine. The same principle applies for desktop setups
> with lower and higher power rating GPUs respectively.
If you would like to use another GPU, or the wrong GPU is picked by default,
set `AQ_DRM_DEVICES` to a `:`-separated list of card paths, e.g.
@ -75,16 +72,13 @@ it doesn't have to be the primary renderer.
You should now be able to use an integrated GPU for lighter GPU loads,
including Hyprland, or default to your dGPU if you prefer.
{{< callout type=info >}}
[uwsm](../../Useful-Utilities/Systemd-start) users are advised to export the `AQ_DRM_DEVICES` variable inside `~/.config/uwsm/env-hyprland`, instead.
This method ensures that the variable is properly exported to the systemd environment without conflicting with other compositors or desktop environments.
```plain
export AQ_DRM_DEVICES="/dev/dri/card0:/dev/dri/card1"
```
{{< /callout >}}
> [!NOTE]
> [uwsm](../../Useful-Utilities/Systemd-start) users are advised to export the `AQ_DRM_DEVICES` variable inside `~/.config/uwsm/env-hyprland`, instead.
> This method ensures that the variable is properly exported to the systemd environment without conflicting with other compositors or desktop environments.
>
> ```plain
> export AQ_DRM_DEVICES="/dev/dri/card0:/dev/dri/card1"
> ```
## Creating consistent device paths for specific cards

View file

@ -14,22 +14,16 @@ Permissions work a bit like Android ones. If an app tries to do something sensit
the compositor (Hyprland), Hyprland will pop up a notification asking you if you
want to let it do that.
{{< callout type=info >}}
Before setting up permissions, make sure you enable them by setting
`ecosystem:enforce_permissions = true`, as it's disabled by default.
{{</ callout >}}
> [!NOTE]
> Before setting up permissions, make sure you enable them by setting
> `ecosystem:enforce_permissions = true`, as it's disabled by default.
### Configuring permissions
{{< callout type=important >}}
Permissions set up in the config are **not** reloaded on-the-fly and require a Hyprland
restart for security reasons.
{{</ callout >}}
> [!IMPORTANT]
> Permissions set up in the config are **not** reloaded on-the-fly and require a Hyprland
> restart for security reasons.
Configuring them is simple:

View file

@ -21,16 +21,13 @@ The config is reloaded the moment you save it. However, you can use
Start a section with `name {` and end in `}` **_in separate lines!_**
{{< callout >}}
The default config is not complete and does not list all the options / features
of Hyprland. Please refer to this wiki page and the pages linked further down
here for full configuration instructions.
**Make sure to read the [Variables](../Variables) page as well**. It covers all
the toggleable / numerical options.
{{< /callout >}}
> [!WARNING]
> The default config is not complete and does not list all the options / features
> of Hyprland. Please refer to this wiki page and the pages linked further down
> here for full configuration instructions.
>
> **Make sure to read the [Variables](../Variables) page as well**. It covers all
> the toggleable / numerical options.
## Language style and syntax

View file

@ -13,12 +13,9 @@ To enable tearing:
- Add an `immediate` windowrule to your game of choice. This makes sure that
Hyprland will tear it.
{{< callout >}}
Please note that tearing will only be in effect when the game is in fullscreen
and the only thing visible on the screen.
{{< /callout >}}
> [!WARNING]
> Please note that tearing will only be in effect when the game is in fullscreen
> and the only thing visible on the screen.
Example snippet:
@ -30,14 +27,11 @@ general {
windowrule = immediate, class:^(cs2)$
```
{{< callout type=warning >}}
If you experience graphical issues, you may be out of luck. Tearing support is
experimental.
See the likely culprits below.
{{< /callout >}}
> [!WARNING]
> If you experience graphical issues, you may be out of luck. Tearing support is
> experimental.
>
> See the likely culprits below.
## Common issues

View file

@ -18,23 +18,20 @@ input {
Variants are set per layout.
{{< callout >}}
The first layout defined in the input section will be the one used for binds by
default.
For example: `us,ua` -> config binds would be e.g. `SUPER, A`, while on `ua,us`
-> `SUPER, Cyrillic_ef`
You can change this behavior globally or per-device by setting
`resolve_binds_by_sym = 1`. In that case, binds will activate when the symbol
typed matches the symbol specified in the bind.
For example: if your layouts are `us,fr` and have a bind for `SUPER, A` you'd
need to press the first letter on the second row while the `us` layout is active
and the first letter on the first row while the `fr` layout is active.
{{< /callout >}}
> [!WARNING]
> The first layout defined in the input section will be the one used for binds by
> default.
>
> For example: `us,ua` -> config binds would be e.g. `SUPER, A`, while on `ua,us`
> -> `SUPER, Cyrillic_ef`
>
> You can change this behavior globally or per-device by setting
> `resolve_binds_by_sym = 1`. In that case, binds will activate when the symbol
> typed matches the symbol specified in the bind.
>
> For example: if your layouts are `us,fr` and have a bind for `SUPER, A` you'd
> need to press the first letter on the second row while the `us` layout is active
> and the first letter on the first row while the `fr` layout is active.
You can also bind a key to execute `hyprctl switchxkblayout` for more keybind
freedom. See [Using hyprctl](../Using-hyprctl).
@ -102,10 +99,9 @@ issues in many programs. One example is OBS Studio, which does not detect the XF
keysyms as usable keybindings, making you unable to use them for binds. This option
simply maps them back to the expected F13-F24 values, which are bindable as normal.
{{< callout >}}
This option was only added recently to `xkeyboard-config`. Please ensure you are on version
2.43 or greater for this option to do anything.
{{< /callout >}}
> [!WARNING]
> This option was only added recently to `xkeyboard-config`. Please ensure you are on version
> 2.43 or greater for this option to do anything.
```ini
input {
@ -208,12 +204,9 @@ windowrule = noshadow, class:com-group_finity-mascot-Main
windowrule = noborder, class:com-group_finity-mascot-Main
```
{{< callout type=info >}}
The app indicator probably won't show, so you'll have to `killall -9 java` to
kill them.
{{< /callout >}}
> [!NOTE]
> The app indicator probably won't show, so you'll have to `killall -9 java` to
> kill them.
![Demo GIF of Spamton Shimeji](https://github.com/hyprwm/hyprland-wiki/assets/36706276/261afd03-bf41-4513-b72b-3483d43d418c)
@ -262,9 +255,8 @@ The hotkey toggle will be WIN+F1, but you can change this to whatever you want.
## Zoom
To zoom using Hyprland's built-in zoom utility
{{< callout >}}
If mouse wheel bindings work only for the first time, you should probably reduce reset time with `binds:scroll_event_delay`
{{< /callout >}}
> [!WARNING]
> If mouse wheel bindings work only for the first time, you should probably reduce reset time with `binds:scroll_event_delay`
```ini
bind = $mod, mouse_down, exec, hyprctl -q keyword cursor:zoom_factor $(hyprctl getoption cursor:zoom_factor -j | jq '.float * 1.1')

View file

@ -6,15 +6,12 @@ title: Using hyprctl
`hyprctl` is a utility for controlling some parts of the compositor from a CLI
or a script. It should automatically be installed along with Hyprland.
{{< callout type=warning >}}
_hyprctl_ calls will be dispatched by the compositor _synchronously_, meaning
any spam of the utility will cause slowdowns. It's recommended to use `--batch`
for many control calls, and limiting the amount of info calls.
For live event handling, see the [socket2](../../IPC/).
{{< /callout >}}
> [!WARNING]
> _hyprctl_ calls will be dispatched by the compositor _synchronously_, meaning
> any spam of the utility will cause slowdowns. It's recommended to use `--batch`
> for many control calls, and limiting the amount of info calls.
>
> For live event handling, see the [socket2](../../IPC/).
## Commands
@ -106,11 +103,8 @@ Where `[backend]` is the name of the backend and `(name)` is an optional name
for the output. If `(name)` is not specified, the default naming scheme will be
used (`HEADLESS-2`, `WL-1`, etc.)
{{< callout type=info >}}
`create` and `remove` can also be `add` or `destroy`, respectively.
{{< /callout >}}
> [!NOTE]
> `create` and `remove` can also be `add` or `destroy`, respectively.
Available backends:
@ -164,22 +158,19 @@ Example command for a typical keyboard:
hyprctl switchxkblayout at-translated-set-2-keyboard next
```
{{< callout type=info >}}
If you want a single variant i.e. pl/dvorak on one layout but us/qwerty on the
other, xkb parameters can still be blank, however the amount of comma-separated
parameters have to match. Alternatively, a single parameter can be specified for
it to apply to all three.
```ini
input {
kb_layout = pl,us,ru
kb_variant = dvorak,,
kb_options = caps:ctrl_modifier
}
```
{{< /callout >}}
> [!NOTE]
> If you want a single variant i.e. pl/dvorak on one layout but us/qwerty on the
> other, xkb parameters can still be blank, however the amount of comma-separated
> parameters have to match. Alternatively, a single parameter can be specified for
> it to apply to all three.
>
> ```ini
> input {
> kb_layout = pl,us,ru
> kb_variant = dvorak,,
> kb_options = caps:ctrl_modifier
> }
> ```
### seterror

View file

@ -26,31 +26,25 @@ the layout pages and not here. (See the Sidebar for Dwindle and Master layouts)
| gradient | a gradient, in the form of `color color ... [angle]` where `color` is a color (see above) and angle is an angle in degrees, in the format of `123deg` e.g. `45deg` (e.g. `rgba(11ee11ff) rgba(1111eeff) 45deg`) Angle is optional and will default to `0deg` |
| font_weight | an integer between 100 and 1000, or one of the following presets: `thin` `ultralight` `light` `semilight` `book` `normal` `medium` `semibold` `bold` `ultrabold` `heavy` `ultraheavy` |
{{< callout type=info >}}
> [!NOTE]
> **_Colors:_**
>
> You have 3 options:
>
> rgba(), e.g. `rgba(b3ff1aee)`, or the decimal equivalent `rgba(179,255,26,0.933)`
>
> (decimal rgba/rgb values should have no spaces between numbers)
>
> rgb(), e.g. `rgb(b3ff1a)`, or the decimal equivalent `rgb(179,255,26)`
>
> legacy, e.g. `0xeeb3ff1a` -> ARGB order
**_Colors:_**
You have 3 options:
rgba(), e.g. `rgba(b3ff1aee)`, or the decimal equivalent `rgba(179,255,26,0.933)`
(decimal rgba/rgb values should have no spaces between numbers)
rgb(), e.g. `rgb(b3ff1a)`, or the decimal equivalent `rgb(179,255,26)`
legacy, e.g. `0xeeb3ff1a` -> ARGB order
{{< /callout >}}
{{< callout type=info >}}
**_Mod list:_**
```ini
SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
```
{{< /callout >}}
> [!NOTE]
> **_Mod list:_**
>
> ```ini
> SHIFT CAPS CTRL/CONTROL ALT MOD2 MOD3 SUPER/WIN/LOGO/MOD4 MOD5
> ```
## Sections
@ -88,25 +82,22 @@ _Subcategory `general:snap:`_
| border_overlap | if true, windows snap such that only one border's worth of space is between them | bool | false |
| respect_gaps | if true, snapping will respect gaps between windows(set in general:gaps_in) | bool | false |
{{< callout type=important >}}
A subcategory is a nested category:
```ini
general {
# ...
# ...
snap {
# ...
# ...
}
}
```
Doing `general:snap {` is **invalid**!
{{< /callout >}}
> [!IMPORTANT]
> A subcategory is a nested category:
>
> ```ini
> general {
> # ...
> # ...
>
> snap {
> # ...
> # ...
> }
> }
> ```
>
> Doing `general:snap {` is **invalid**!
### Decoration
@ -148,15 +139,12 @@ _Subcategory `decoration:blur:`_
| input_methods | whether to blur input methods (e.g. fcitx5) | bool | false |
| input_methods_ignorealpha | works like ignorealpha in layer rules. If pixel opacity is below set value, will not blur. [0.0 - 1.0] | float | 0.2 |
{{< callout type=info >}}
`blur:size` and `blur:passes` have to be at least 1.
Increasing `blur:passes` is necessary to prevent blur looking wrong on higher
`blur:size` values, but remember that higher `blur:passes` will require more
strain on the GPU.
{{< /callout >}}
> [!NOTE]
> `blur:size` and `blur:passes` have to be at least 1.
>
> Increasing `blur:passes` is necessary to prevent blur looking wrong on higher
> `blur:size` values, but remember that higher `blur:passes` will require more
> strain on the GPU.
#### Shadow
@ -181,11 +169,8 @@ _Subcategory `decoration:shadow:`_
| enabled | enable animations | bool | true |
| workspace_wraparound | enable workspace wraparound, causing directional workspace animations to animate as if the first and last workspaces were adjacent | bool | false |
{{< callout type=info >}}
_[More about Animations](../Animations)._
{{< /callout >}}
> [!NOTE]
> _[More about Animations](../Animations)._
### Input
@ -221,55 +206,49 @@ _[More about Animations](../Animations)._
| off_window_axis_events | Handles axis events around (gaps/border for tiled, dragarea/border for floated) a focused window. `0` ignores axis events `1` sends out-of-bound coordinates `2` fakes pointer coordinates to the closest point inside the window `3` warps the cursor to the closest point inside the window | int | 1 |
| emulate_discrete_scroll | Emulates discrete scrolling from high resolution scrolling events. `0` disables it, `1` enables handling of non-standard events only, and `2` force enables all scroll wheel events to be handled | int | 1 |
{{< callout type=info >}}
> [!NOTE]
> ### XKB Settings
>
> You can find a list of models, layouts, variants and options in
> [`/usr/share/X11/xkb/rules/base.lst`](file:///usr/share/X11/xkb/rules/base.lst).
> Alternatively, you can use the `localectl` command to discover what is available
> on your system.
>
> For switchable keyboard configurations, take a look at
> [the uncommon tips & tricks page entry](../Uncommon-tips--tricks/#switchable-keyboard-layouts).
### XKB Settings
You can find a list of models, layouts, variants and options in
[`/usr/share/X11/xkb/rules/base.lst`](file:///usr/share/X11/xkb/rules/base.lst).
Alternatively, you can use the `localectl` command to discover what is available
on your system.
For switchable keyboard configurations, take a look at
[the uncommon tips & tricks page entry](../Uncommon-tips--tricks/#switchable-keyboard-layouts).
{{< /callout >}}
{{< callout type=info >}}
### Follow Mouse Cursor
- 0 - Cursor movement will not change focus.
- 1 - Cursor movement will always change focus to the window under the cursor.
- 2 - Cursor focus will be detached from keyboard focus. Clicking on a window
will move keyboard focus to that window.
- 3 - Cursor focus will be completely separate from keyboard focus. Clicking on
a window will not change keyboard focus.
### Custom accel profiles
#### `accel_profile`
`custom <step> <points...>`
Example: `custom 200 0.0 0.5`
#### `scroll_points`
NOTE: Only works when `accel_profile` is set to `custom`.
`<step> <points...>`
Example: `0.2 0.0 0.5 1 1.2 1.5`
To mimic the Windows acceleration curves, take a look at
[this script](https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9).
See
[the libinput doc](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html)
for more insights on how it works.
{{< /callout >}}
> [!NOTE]
> ### Follow Mouse Cursor
>
> - 0 - Cursor movement will not change focus.
> - 1 - Cursor movement will always change focus to the window under the cursor.
> - 2 - Cursor focus will be detached from keyboard focus. Clicking on a window
> will move keyboard focus to that window.
> - 3 - Cursor focus will be completely separate from keyboard focus. Clicking on
> a window will not change keyboard focus.
>
> ### Custom accel profiles
>
> #### `accel_profile`
>
> `custom <step> <points...>`
>
> Example: `custom 200 0.0 0.5`
>
> #### `scroll_points`
>
> NOTE: Only works when `accel_profile` is set to `custom`.
>
> `<step> <points...>`
>
> Example: `0.2 0.0 0.5 1 1.2 1.5`
>
> To mimic the Windows acceleration curves, take a look at
> [this script](https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9).
>
> See
> [the libinput doc](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html)
> for more insights on how it works.
#### Touchpad
@ -348,17 +327,14 @@ _Subcategory `gestures:`_
| workspace_swipe_use_r | if enabled, swiping will use the `r` prefix instead of the `m` prefix for finding workspaces. | bool | false |
| close_max_timeout | the timeout for a window to close when using a 1:1 gesture, in ms | int | 1000 |
{{< callout type=info >}}
`workspace_swipe`, `workspace_swipe_fingers` and `workspace_swipe_min_fingers` were removed in favor of the new gestures system.
You can add this gesture config to replicate the swiping functionality with 3 fingers. See the [gestures](../Gestures) page for more info.
```ini
gesture = 3, horizontal, workspace
```
{{< /callout >}}
> [!NOTE]
> `workspace_swipe`, `workspace_swipe_fingers` and `workspace_swipe_min_fingers` were removed in favor of the new gestures system.
>
> You can add this gesture config to replicate the swiping functionality with 3 fingers. See the [gestures](../Gestures) page for more info.
>
> ```ini
> gesture = 3, horizontal, workspace
> ```
### Group
@ -589,11 +565,8 @@ Video:
_Subcategory `debug:`_
{{< callout type=warning >}}
Only for developers.
{{< /callout >}}
> [!WARNING]
> Only for developers.
| name | description | type | default |
| --- | --- | --- | --- |

View file

@ -3,26 +3,20 @@ weight: 7
title: Window Rules
---
{{< callout type=warning >}}
> [!WARNING]
> Window rules are **case sensitive**. (e.g. `firefox`
> `Firefox`)
>
> As of Hyprland v0.46.0, RegExes need to fully match the window values. For
> example, in the case of `kitty`:
>
> - `kitty`/`(kitty)`/`^(kitty)$`: Matches.
> - `tty`: Used to match, now won't. Use `.*tty.*` to make it act like before, or
> consider using a more specific RegEx.
Window rules are **case sensitive**. (e.g. `firefox`
`Firefox`)
As of Hyprland v0.46.0, RegExes need to fully match the window values. For
example, in the case of `kitty`:
- `kitty`/`(kitty)`/`^(kitty)$`: Matches.
- `tty`: Used to match, now won't. Use `.*tty.*` to make it act like before, or
consider using a more specific RegEx.
{{< /callout >}}
{{< callout type=warning >}}
Rules are evaluated top to bottom, so the order they're written in does matter!
More info in [Notes](#notes)
{{< /callout >}}
> [!WARNING]
> Rules are evaluated top to bottom, so the order they're written in does matter!
> More info in [Notes](#notes)
## Window Rules
@ -51,22 +45,19 @@ windowrule = float, pin, size 400 400, move 0 0, class:kitty, initialTitle:kitty
```
Where float pin size and move are `RULES` and class and initialTitle are `PARAMETERS`.
{{< callout type=info >}}
In the case of dynamic window titles such as browser windows, keep in mind how
powerful RegEx is.
For example, a window rule of:
`windowrule = opacity 0.3 override 0.3 override,title:(.*)(- Youtube)` will match
_any_ window that contains a string of "- Youtube" after any other text. This
could be multiple browser windows or other applications that contain the string
for any reason.
For the `windowrule = float,class:kitty,title:kitty` example, the
`class:(kitty)` `WINDOW` field is what keeps the window rule specific to kitty
terminals.
{{< /callout >}}
> [!NOTE]
> In the case of dynamic window titles such as browser windows, keep in mind how
> powerful RegEx is.
>
> For example, a window rule of:
> `windowrule = opacity 0.3 override 0.3 override,title:(.*)(- Youtube)` will match
> _any_ window that contains a string of "- Youtube" after any other text. This
> could be multiple browser windows or other applications that contain the string
> for any reason.
>
> For the `windowrule = float,class:kitty,title:kitty` example, the
> `class:(kitty)` `WINDOW` field is what keeps the window rule specific to kitty
> terminals.
The supported fields for parameters are:
@ -92,21 +83,15 @@ The supported fields for parameters are:
Keep in mind that you _have_ to declare at least one field, but not all.
{{< callout type=info >}}
To get more information about a window's class, title, XWayland status or its
size, you can use `hyprctl clients`.
{{< /callout >}}
> [!NOTE]
> To get more information about a window's class, title, XWayland status or its
> size, you can use `hyprctl clients`.
{{< callout type=info >}}
In the output of the `hyprctl clients` command:
`fullscreen` refers to `fullscreenstate.internal` and
`fullscreenClient` refers to `fullscreenstate.client`
{{< /callout >}}
> [!NOTE]
> In the output of the `hyprctl clients` command:
> `fullscreen` refers to `fullscreenstate.internal` and
> `fullscreenClient` refers to `fullscreenstate.client`
### RegEx writing
@ -121,11 +106,8 @@ If you want to _negate_ a ReGex, as in pass only when the RegEx _fails_, you can
Static rules are evaluated once when the window is opened and never again. This essentially means that it is always the `initialTitle` and `initialClass` which will be found when matching on `title` and `class`, respectively.
{{< callout type=warning >}}
It is not possible to `float` (or any other static rule) a window based on a change in the `title` after the window has been created. This applies to all static rules listed here.
{{< /callout >}}
> [!WARNING]
> It is not possible to `float` (or any other static rule) a window based on a change in the `title` after the window has been created. This applies to all static rules listed here.
| Rule | Description |
| ---- | ----------- |
@ -199,17 +181,14 @@ The following rules can also be set with [`setprop`](../Dispatchers#setprop):
| noscreenshare \[on\] | Hides the window and its popups from screen sharing by drawing black rectangles in their place. The rectangles are drawn even if other windows are above. |
| novrr \[on\] | Disables VRR for the window. Only works when [`misc:vrr`](../Variables/#Misc) is set to `2` or `3`. |
{{< callout type=info >}}
When using window rules, \[on\] can be set to `0` for _disabled_, `1` for _enabled_, or left blank to use the default value.
When using `setprop`, \[on\] can be set to `0` for _disabled_, `1` for _enabled_,
`toggle` to toggle the state or `unset` to unset previous values.
When using `setprop`, \[int\] can also be `unset` to unset previous
values.
{{< /callout >}}
> [!NOTE]
> When using window rules, \[on\] can be set to `0` for _disabled_, `1` for _enabled_, or left blank to use the default value.
>
> When using `setprop`, \[on\] can be set to `0` for _disabled_, `1` for _enabled_,
> `toggle` to toggle the state or `unset` to unset previous values.
>
> When using `setprop`, \[int\] can also be `unset` to unset previous
> values.
### `group` window rule options
@ -223,14 +202,11 @@ values.
- `override` \[other options\] - Override other `group` rules, e.g. You can make all windows in a particular workspace open as a group, and use `group override barred` to make windows with specific titles open as normal windows.
- `unset` - Clear all `group` rules.
{{< callout type=info >}}
The `group` rule without options is a shorthand for `group set`.
By default, `set` and `lock` only affect new windows once. The `always`
qualifier makes them always effective.
{{< /callout >}}
> [!NOTE]
> The `group` rule without options is a shorthand for `group set`.
>
> By default, `set` and `lock` only affect new windows once. The `always`
> qualifier makes them always effective.
### Tags
@ -318,24 +294,21 @@ windowrule = opacity 0.8 0.8,class:kitty
Here, all kitty windows will have `opacity 0.8`, even if they are floating.
The rest of the floating windows will have `opacity 0.5`.
{{< callout type=info >}}
Opacity is a PRODUCT of all opacities by default. For example, setting
`activeopacity` to `0.5` and `opacity` to `0.5` will result in a total opacity of
`0.25`. <br>
You are allowed to set opacities over `1.0`, but any opacity product over `1.0`
will cause graphical glitches. <br>
For example, using `0.5 * 2 = 1` is fine, but `0.5 * 4 = 2` will cause graphical glitches. <br>
You can put `override` after an opacity value to override it to an exact value
rather than a multiplier.
For example, to set active and inactive opacity to 0.8, and make fullscreen windows
fully opaque regardless of other opacity rules:
```ini
windowrule = opacity 0.8 override 0.8 override 1.0 override, class:kitty
```
{{< /callout >}}
> [!NOTE]
> Opacity is a PRODUCT of all opacities by default. For example, setting
> `activeopacity` to `0.5` and `opacity` to `0.5` will result in a total opacity of
> `0.25`. <br>
> You are allowed to set opacities over `1.0`, but any opacity product over `1.0`
> will cause graphical glitches. <br>
> For example, using `0.5 * 2 = 1` is fine, but `0.5 * 4 = 2` will cause graphical glitches. <br>
> You can put `override` after an opacity value to override it to an exact value
> rather than a multiplier.
> For example, to set active and inactive opacity to 0.8, and make fullscreen windows
> fully opaque regardless of other opacity rules:
>
> ```ini
> windowrule = opacity 0.8 override 0.8 override 1.0 override, class:kitty
> ```
## Layer Rules

View file

@ -34,11 +34,8 @@ env = XCURSOR_SIZE,32
The GDK_SCALE variable won't conflict with Wayland-native GTK programs.
{{< callout >}}
XWayland HiDPI patches are no longer supported. Do not use them.
{{</ callout >}}
> [!WARNING]
> XWayland HiDPI patches are no longer supported. Do not use them.
## Abstract Unix domain socket

View file

@ -7,17 +7,14 @@ we prefer to begin possible bug reports or feature requests as *discussions*,
and elevate them to issues if they can be confirmed by a member to be relevant,
and once enough information about the problem has been gathered.
{{< callout type=info >}}
### Why?
We are volunteers, doing this in our free time. Out of respect, please read this document
_fully_ before posting an issue _or_ discussion. If you can spend a few minutes reading this,
it saves us, the developers, much more time overall, so we can deliver fixes and features faster.
Thank you!
{{< /callout >}}
> [!NOTE]
> ### Why?
>
> We are volunteers, doing this in our free time. Out of respect, please read this document
> _fully_ before posting an issue _or_ discussion. If you can spend a few minutes reading this,
> it saves us, the developers, much more time overall, so we can deliver fixes and features faster.
>
> Thank you!
## Issue Guidelines
@ -38,9 +35,8 @@ For bugs:
- If a discussion is a Hyprland problem, but cannot be tied to Hyprland in a clear way, or is not reproducible, it stays a discussion until that changes.
- If a discussion is reproducible, a member of Hyprland promotes the discussion to an issue by opening an issue with the key information and links the original discussion.
{{< callout type=info >}}
To get logs for your bug please see [Crashes and Bugs](https://wiki.hypr.land/Crashes-and-Bugs/)
{{< /callout >}}
> [!NOTE]
> To get logs for your bug please see [Crashes and Bugs](https://wiki.hypr.land/Crashes-and-Bugs/)
For feature requests:
- If a discussion describes a feature that is already possible (via scripts, features, or official tools), invalid, or not applicable, it gets closed.

View file

@ -153,11 +153,8 @@ we can render to) and put it on your screen (via the gpu) instead of a window.
Freezes, glitches, and others, can be caused by issues with Hyprland's communication with DRM, the driver
or kernel. In those cases, a DRM log is helpful.
{{< callout >}}
Please note, these logs are EXTREMELY verbose. Please reproduce your bug(s) ASAP to avoid getting a 1GB log.
{{< /callout >}}
> [!WARNING]
> Please note, these logs are EXTREMELY verbose. Please reproduce your bug(s) ASAP to avoid getting a 1GB log.
```sh
echo 0x19F | sudo tee /sys/module/drm/parameters/debug # enables verbose drm logging

View file

@ -487,11 +487,8 @@ You most likely have `env = ELECTRON_OZONE_PLATFORM_HINT, wayland` in your confi
Try running Discord like this `ELECTRON_OZONE_PLATFORM_HINT= discord`.
{{< callout >}}
Keep in mind that this will run Discord under XWayland.
{{< /callout >}}
> [!WARNING]
> Keep in mind that this will run Discord under XWayland.
If it works, navigate to the Discord desktop entry (usually located in `/usr/share/applications/`). Duplicate it and replace `Exec=/usr/bin/discord` with `Exec=env ELECTRON_OZONE_PLATFORM_HINT= /usr/bin/discord`. You can also give it a new name, e.g. `Name=DiscordX`, to avoid confusion as to which is which.

View file

@ -3,24 +3,18 @@ weight: 1
title: Installation
---
{{< callout type=warning >}}
> [!WARNING]
> Hyprland is not meant to be a full and user-friendly Desktop Environment. In a nutshell, it's a set of
> tools to allow you to create your own Desktop Environment.
>
> Apps, integrations, shells, etc, are **your** responsibility to pick, install and configure.
>
> This wiki is _very_ verbose. It's highly recommended to scour and read the wiki first before
> assuming something is not working or not available.
Hyprland is not meant to be a full and user-friendly Desktop Environment. In a nutshell, it's a set of
tools to allow you to create your own Desktop Environment.
Apps, integrations, shells, etc, are **your** responsibility to pick, install and configure.
This wiki is _very_ verbose. It's highly recommended to scour and read the wiki first before
assuming something is not working or not available.
{{< /callout >}}
{{< callout type=info >}}
NVIDIA GPUs are often not usable out-of-the-box, follow the [Nvidia page](../../Nvidia) after installing
Hyprland if you plan to use one. Blame NVIDIA for this.
{{< /callout >}}
> [!NOTE]
> NVIDIA GPUs are often not usable out-of-the-box, follow the [Nvidia page](../../Nvidia) after installing
> Hyprland if you plan to use one. Blame NVIDIA for this.
## Distros
@ -33,19 +27,16 @@ will have **major** issues running Hyprland. Rolling release distros like Fedora
Installing Hyprland is very easy. Simply install it with your package manager.
{{< callout type=warning >}}
It is **heavily** recommended you use **what the distro packages for you**, and **not** compiling manually
or using `-git` packages.
Hyprland's ecosystem and dependencies are vast and intertwined, and compiling manually will only potentially expose you to outdated,
or incompatible versions of these dependencies.
If you get `.so` file mismatch / missing errors, it's _entirely your fault_ for doing this!
However, if you are an experienced user and want to beta-test new features, you're more than welcome to run the latest
git head. Please don't come asking about ".so file missing" errors though!
{{< /callout >}}
> [!WARNING]
> It is **heavily** recommended you use **what the distro packages for you**, and **not** compiling manually
> or using `-git` packages.
> Hyprland's ecosystem and dependencies are vast and intertwined, and compiling manually will only potentially expose you to outdated,
> or incompatible versions of these dependencies.
>
> If you get `.so` file mismatch / missing errors, it's _entirely your fault_ for doing this!
>
> However, if you are an experienced user and want to beta-test new features, you're more than welcome to run the latest
> git head. Please don't come asking about ".so file missing" errors though!
### Packages
@ -72,18 +63,16 @@ Alternatively, install the `hyprland-meta` package to automatically fetch and co
yay -S hyprland-meta-git
```
{{<callout type=warning >}}
With `-git` everytime a direct dependency like `hyprutils` has an ABI breaking update you need to recompile Hyprland and all other dependent tools.
Otherwise you get a ".so not found" error.
{{</callout>}}
> [!WARNING]
> With `-git` everytime a direct dependency like `hyprutils` has an ABI breaking update you need to recompile Hyprland and all other dependent tools.
> Otherwise you get a ".so not found" error.
If you decide to use the `git` version from the AUR, you can use the [Chaotic Aur](https://aur.chaotic.cx/) to get pre-built binaries.
Be aware that updating dependencies like `hyprutils` might still require you to recompile everything yourself as the Chaotic Aur does not do that automatically.
{{<callout type=info >}}
You can downgrade easily with [downgrade](https://github.com/archlinux-downgrade/downgrade) to get to a previous -git version.
{{</callout>}}
> [!NOTE]
> You can downgrade easily with [downgrade](https://github.com/archlinux-downgrade/downgrade) to get to a previous -git version.
{{% /details %}}
@ -146,11 +135,8 @@ following the instructions
{{% /details %}}
{{% details title="Debian*" closed="true" %}}
{{< callout type=warning >}}
Debian's Hyprland is **extremely** outdated. I do not recommend using the packaged versions at all. Build the entire stack manually instead.
{{< /callout >}}
> [!WARNING]
> Debian's Hyprland is **extremely** outdated. I do not recommend using the packaged versions at all. Build the entire stack manually instead.
Hyprland recently made it into the SID repository and can be installed with
@ -161,11 +147,8 @@ sudo apt install hyprland
Alternatively, you can also follow the instructions under
["Manual (Manual Build)"](#manual-manual-build) to build Hyprland yourself.
{{< callout type=info >}}
Hyprland is not available for Bookworm as its packages are too old.
{{< /callout >}}
> [!NOTE]
> Hyprland is not available for Bookworm as its packages are too old.
{{% /details %}}
@ -214,11 +197,8 @@ Hyprland and related are in the default repository:
{{% details title="Ubuntu*" closed="true" %}}
{{< callout type=warning >}}
Debian and Ubuntu's Hyprland is **extremely** outdated. I do not recommend using the packaged versions at all. Build the entire stack manually instead.
{{< /callout >}}
> [!WARNING]
> Debian and Ubuntu's Hyprland is **extremely** outdated. I do not recommend using the packaged versions at all. Build the entire stack manually instead.
Hyprland made it into the Ubuntu 24.10 Oracular Oriole universe repo and can be installed with
@ -226,11 +206,8 @@ Hyprland made it into the Ubuntu 24.10 Oracular Oriole universe repo and can be
sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install -y hyprland
```
{{< callout type=info >}}
NOTE: Above is for Ubuntu 24.10 (Unreleased) version
{{< /callout >}}
> [!NOTE]
> NOTE: Above is for Ubuntu 24.10 (Unreleased) version
For installing Hyprland from Source, install first the dependencies below:
@ -255,24 +232,20 @@ See
[Ubuntu Guide For Installing And Building Hyprland Gist](https://gist.github.com/Vertecedoc4545/3b077301299c20c5b9b4db00f4ca6000)
for more information.
{{< callout type=warning >}}
> [!WARNING]
> Please note that since Ubuntu is generally behind with dependencies, it's not
> guaranteed that the build process will work at all. Even if it is, it's likely
> that it will break at some point in the future.
Please note that since Ubuntu is generally behind with dependencies, it's not
guaranteed that the build process will work at all. Even if it is, it's likely
that it will break at some point in the future.
{{< /callout >}}
{{< callout >}}
Always use the latest version of Ubuntu for the most up to date dependencies.
Note: Your mileage may vary, as GDM has some bugs with Hyprland. Check the [Master Tutorial](../Master-Tutorial) for more info.
Refer to the gist if anything fails.
<!-- For some reason uncommenting the line below creates an unwanted <pre><div></pre> in the page. -->
<!-- {{< /callout >}} -->
> [!WARNING]
> Always use the latest version of Ubuntu for the most up to date dependencies.
>
> Note: Your mileage may vary, as GDM has some bugs with Hyprland. Check the [Master Tutorial](../Master-Tutorial) for more info.
>
> Refer to the gist if anything fails.
>
> <!-- For some reason uncommenting the line below creates an unwanted <pre><div></pre> in the page. -->
> <!-- -->
{{% /details %}}
@ -373,12 +346,9 @@ community-driven, and no guarantee is provided for their validity.**_
Dependencies:
{{< callout type=info >}}
Please note that Hyprland uses the C++26 standard, so both your compiler and your
C++ standard library has to support that (`gcc>=15` or `clang>=19`).
{{< /callout >}}
> [!NOTE]
> Please note that Hyprland uses the C++26 standard, so both your compiler and your
> C++ standard library has to support that (`gcc>=15` or `clang>=19`).
{{% details title="Arch" closed="true" %}}
@ -418,19 +388,16 @@ refer to the Ubuntu tab above
{{% /details %}}
{{< callout type=warning >}}
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
- hyprutils
- hyprgraphics
- hyprwayland-scanner (build-only)
{{< /callout >}}
> [!WARNING]
> 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
> - hyprutils
> - hyprgraphics
> - hyprwayland-scanner (build-only)
### CMake (recommended)
@ -558,14 +525,11 @@ virt-install \
Connect with `virt-viewer`, this will open a `virt-viewer` graphical session on
the tty. The default login is 'arch' for user and 'arch' for password.
{{< callout >}}
Make sure the --attach flag is used, enabling virgl makes it so that
we had to disable listen. This means that we can't make a direct TCP/UNIX
socket connection to the remote display. --attach asks libvirt to provide a
pre-connected socket to the display.\*
{{</ callout >}}
> [!WARNING]
> Make sure the --attach flag is used, enabling virgl makes it so that
> we had to disable listen. This means that we can't make a direct TCP/UNIX
> socket connection to the remote display. --attach asks libvirt to provide a
> pre-connected socket to the display.\*
```sh
virt-viewer --attach hypr-vm
@ -574,9 +538,6 @@ virt-viewer --attach hypr-vm
Finally on the guest follow the instructions above for either
[installing hyprland-git from the aur](#installation) or
[building manually](#manual-manual-build).
{{< callout >}}
Make sure you install `mesa` as the OpenGL driver. The virgl drivers are
included in `mesa`.
{{</ callout >}}
> [!WARNING]
> Make sure you install `mesa` as the OpenGL driver. The virgl drivers are
> included in `mesa`.

View file

@ -19,22 +19,16 @@ repositories.
## Nvidia?
{{< callout type=info >}}
If not using an Nvidia card, skip this step.
{{< /callout >}}
> [!NOTE]
> If not using an Nvidia card, skip this step.
Please take a look at [The Nvidia page](../../Nvidia) before launching. It has
information regarding the needed environment and tweaks.
## VM?
{{< callout type=info >}}
If not using a VM, skip this step.
{{< /callout >}}
> [!NOTE]
> If not using a VM, skip this step.
In a VM, make sure you have 3D acceleration enabled in your `virtio` config (or
`virt-manager`) otherwise Hyprland _**will not work**_.
@ -51,11 +45,8 @@ If you are adventurous and on systemd, you can also try uwsm. Please note uwsm h
Uwsm provides additional features such as [xdg-autostart](https://www.freedesktop.org/software/systemd/man/latest/systemd-xdg-autostart-generator.html) support, launching any application as a systemd-unit with `uwsm app` helper, and the ability to enable services for programs that rely on a graphical session and provide such services (e.g waybar). See [uwsm](../../Useful-Utilities/Systemd-start) page for further instructions.
{{< callout type=warning >}}
Do **not** launch Hyprland with `root` permissions (don't `sudo`)
{{< /callout >}}
> [!WARNING]
> Do **not** launch Hyprland with `root` permissions (don't `sudo`)
You can see some launch flags by doing `Hyprland -h`, these include setting the
config path, ignoring a check for the above, etc.

View file

@ -5,11 +5,8 @@ title: Hypr Ecosystem
This wiki section hosts docs for various hypr* projects. See a list here:
{{< callout type=info >}}
These docs always target latest -git branch of respective apps.
{{< /callout >}}
> [!NOTE]
> These docs always target latest -git branch of respective apps.
## Wiki pages

View file

@ -13,12 +13,9 @@ You will need to obtain those yourself. If you are on the Discord server, see
Put your theme(s) in `~/.local/share/icons` or `~/.icons`
{{< callout type=warning >}}
It's not recommended to put cursor themes in system-wide `/usr/share/icons` due
to potential permission issues.
{{< /callout >}}
> [!WARNING]
> It's not recommended to put cursor themes in system-wide `/usr/share/icons` due
> to potential permission issues.
You can set your theme with envvars, or with `hyprctl setcursor`.

View file

@ -28,17 +28,14 @@ Variables in the `general` category:
| ignore_wayland_inhibit | whether to ignore Wayland protocol idle inhibitors | bool | false |
| inhibit_sleep | sleep inhibition mode, 0 - disable, 1 - normal, 2 - auto, 3 - lock notify | int | 2 |
{{< callout type=info >}}
The `general:inhibit_sleep` option is used to make sure hypridle can do certain tasks before the system goes to sleep.
Options:
- `3` makes your system wait until the session gets locked by a lock screen app. This works with all wayland session-lock apps.
- `2` (auto) selects either 3 or 1 depending on whether hypridle detects if you want to launch hyprlock before sleep.
- `1` makes the system wait until hypridle launched `general:before_sleep_cmd`.
- `0` disables sleep inhibition.
{{< /callout >}}
> [!NOTE]
> The `general:inhibit_sleep` option is used to make sure hypridle can do certain tasks before the system goes to sleep.
>
> Options:
> - `3` makes your system wait until the session gets locked by a lock screen app. This works with all wayland session-lock apps.
> - `2` (auto) selects either 3 or 1 depending on whether hypridle detects if you want to launch hyprlock before sleep.
> - `1` makes the system wait until hypridle launched `general:before_sleep_cmd`.
> - `0` disables sleep inhibition.
### Listeners

View file

@ -6,15 +6,12 @@ title: hyprlock
hyprlock is a simple, yet fast, multi-threaded and GPU-accelerated screen lock
for Hyprland.
{{< callout type=warning >}}
Hyprlock does not automatically create a config, and without one, hyprlock will _not render anything_.
But even without a config, your session will get locked and thus Hyprland will cover your session with a black screen.
You can unlock normally by typing your password followed by hitting Enter, but you won't have any visual feedback.
You can use the example config for a quick start, which can be found [here](https://github.com/hyprwm/hyprlock/blob/main/assets/example.conf).
{{< /callout >}}
> [!WARNING]
> Hyprlock does not automatically create a config, and without one, hyprlock will _not render anything_.
> But even without a config, your session will get locked and thus Hyprland will cover your session with a black screen.
> You can unlock normally by typing your password followed by hitting Enter, but you won't have any visual feedback.
>
> You can use the example config for a quick start, which can be found [here](https://github.com/hyprwm/hyprlock/blob/main/assets/example.conf).
## Commandline arguments
@ -71,11 +68,8 @@ Variables in the `auth` category:
| fingerprint:present_message | sets the message that will be displayed when a finger is placed on the scanner. | str | Scanning fingerprint |
| fingerprint:retry_delay | sets the delay in ms after an unrecognized finger is scanned before another finger can be scanned. | int | 250 |
{{< callout type=info >}}
At least one enabled authentication method is required.
{{< /callout >}}
> [!NOTE]
> At least one enabled authentication method is required.
### Animations
@ -228,12 +222,9 @@ If `path` is `screenshot`, a screenshot of your desktop at launch will be used.
| crossfade_time | cross-fade time in seconds between old and new background on reload. A negative value means no cross-fade. | float | -1.0 |
| zindex | z-index of the widget | int | -1 |
{{< callout type=info >}}
Blur options are taken from hyprland.
See [Variables/#blur](../../Configuring/Variables/#blur).
{{< /callout >}}
> [!NOTE]
> Blur options are taken from hyprland.
> See [Variables/#blur](../../Configuring/Variables/#blur).
{{% details title="Example background" closed="true" %}}
@ -371,19 +362,16 @@ Draws a password input field.
| valign | vertical alignment | str | center |
| zindex | z-index of the widget | int | 0 |
{{< callout type=info >}}
#### Colors information
When `outline_thickness` set to `0`, the color of the inner box will be changed instead of the outer.
Behaviour of `swap_font_color` is as follows:
- `outline_thickness` is `0`: if set, font color will be swapped with inner one on color change events (e.g. Caps-lock on or password check).
- `outline_thickness` is not `0`: if set, font and inner colors will be swapped on password check and authentication failure.
- `swap_font_color` will narrow the accent colors from a gradient to a single color by using the first specified color.
{{< /callout >}}
> [!NOTE]
> #### Colors information
>
> When `outline_thickness` set to `0`, the color of the inner box will be changed instead of the outer.
>
> Behaviour of `swap_font_color` is as follows:
>
> - `outline_thickness` is `0`: if set, font color will be swapped with inner one on color change events (e.g. Caps-lock on or password check).
> - `outline_thickness` is not `0`: if set, font and inner colors will be swapped on password check and authentication failure.
> - `swap_font_color` will narrow the accent colors from a gradient to a single color by using the first specified color.
`placeholder_text` and `fail_text` both support [variable substitution](#variable-substitution).

View file

@ -104,11 +104,8 @@ required.
Configuration is done using `preload`, which _loads_ an image into memory.
{{< callout type=warning >}}
Note that all image paths must be absolute (or start with `~`).
{{< /callout >}}
> [!WARNING]
> Note that all image paths must be absolute (or start with `~`).
The `wallpaper` keyword is then used to apply the preloaded image to your monitor(s):
@ -117,11 +114,8 @@ preload = /home/me/amongus.png
wallpaper = monitor, /home/me/amongus.png
```
{{< callout type=info >}}
You can check names and other info for your monitors using `hyprctl monitors`.
{{< /callout >}}
> [!NOTE]
> You can check names and other info for your monitors using `hyprctl monitors`.
The `monitor` argument can be left empty to set a wallpaper for all monitors that don't already have one set.
@ -156,13 +150,10 @@ Running this command again with a new wallpaper would effectively swap
the wallpaper with the new one, automating the whole preload, set,
unload old sequence.
{{< callout type=warning >}}
`Monitor Specificity`
Once a monitor has a wallpaper set specifically (e.g., `hyprctl hyprpaper reload "DP-1,~/amogus.png"`),
it won't be affected by the wildcard (`hyprctl hyprpaper reload ,"~/amogus.png"`).
{{< /callout >}}
> [!WARNING]
> `Monitor Specificity`
> Once a monitor has a wallpaper set specifically (e.g., `hyprctl hyprpaper reload "DP-1,~/amogus.png"`),
> it won't be affected by the wildcard (`hyprctl hyprpaper reload ,"~/amogus.png"`).
#### Using `reload` to Randomize Your Wallpaper
@ -221,9 +212,8 @@ hyprpaper supports IPC via `hyprctl`. Every dispatcher mentioned in the
[List of Dispatchers](#list-of-dispatchers) can be called with
`hyprctl hyprpaper <dispatcher> <arg(s)>`.
{{< callout type=info >}}
Make sure to use valid [hyprlang](./hyprlang.md) syntax when passing arguments to the dispatchers.
{{< /callout >}}
> [!NOTE]
> Make sure to use valid [hyprlang](./hyprlang.md) syntax when passing arguments to the dispatchers.
Additionally, you can get some info about the current state of hyprpaper with
`listloaded` and `listactive`.

View file

@ -13,11 +13,8 @@ adjust perceived display brightness on monitors that do not
support software control, or to reduce perceived brightness
below the monitor's minimum.
{{< callout type=warning >}}
`hyprsunset` is supported since Hyprland 0.45.0.
{{< /callout >}}
> [!WARNING]
> `hyprsunset` is supported since Hyprland 0.45.0.
## Installation
@ -96,11 +93,8 @@ hyprctl hyprsunset reset identity
hyprctl hyprsunset profile
```
{{< callout type=warning >}}
`hyprsunset` is supported since Hyprland 0.45.0.
{{< /callout >}}
> [!WARNING]
> `hyprsunset` is supported since Hyprland 0.45.0.
This can be used by other software to change the temperature throughout the day, or to adjust perceieved
monitor brightness, such as with the following Hyprland keybinds:
@ -109,8 +103,5 @@ bindel = ,XF86MonBrightnessDown, exec, hyprctl hyprsunset gamma -10
bindel = ,XF86MonBrightnessUp, exec, hyprctl hyprsunset gamma +10
```
{{< callout type=warning >}}
Using the gamma control will degrade color accuracy. If your monitor does support software control, it is highly recommended to use that instead.
{{< /callout >}}
> [!WARNING]
> Using the gamma control will degrade color accuracy. If your monitor does support software control, it is highly recommended to use that instead.

View file

@ -20,12 +20,9 @@ XDPH.
{{< /callout >}}
{{< callout >}}
XDPH doesn't implement a file picker. For that, it is recommended to install
`xdg-desktop-portal-gtk` alongside XDPH.
{{< /callout >}}
> [!WARNING]
> XDPH doesn't implement a file picker. For that, it is recommended to install
> `xdg-desktop-portal-gtk` alongside XDPH.
## Installing

View file

@ -75,13 +75,10 @@ e.g.: `workspace>>2`
| minimized | emitted when an external taskbar-like app requests a window to be minimized | `WINDOWADDRESS,0/1` |
| bell | emitted when an app requests to ring the system bell via `xdg-system-bell-v1`. Window address parameter may be empty. | `WINDOWADDRESS` |
{{< callout type=warning >}}
A fullscreen event is not guaranteed to fire on/off once in succession. Some windows
may fire multiple requests to be fullscreened, resulting in multiple
fullscreen events.
{{< /callout >}}
> [!WARNING]
> A fullscreen event is not guaranteed to fire on/off once in succession. Some windows
> may fire multiple requests to be fullscreened, resulting in multiple
> fullscreen events.
## How to use socket2 with bash

View file

@ -3,12 +3,9 @@ title: Cachix
weight: 3
---
{{< callout type=info >}}
This page only applies to the flake package.
You can safely skip this if you use the Nixpkgs package.
{{< /callout >}}
> [!NOTE]
> This page only applies to the flake package.
> You can safely skip this if you use the Nixpkgs package.
The Hyprland flake is not built by Hydra, so it is not cached in
[cache.nixos.org], like the rest of Nixpkgs.
@ -20,12 +17,9 @@ your Nix configuration.
The [Hyprland Cachix](https://app.cachix.org/cache/hyprland) exists to cache the
`hyprland` packages and any dependencies not found in [cache.nixos.org].
{{< callout type=warning >}}
In order for Nix to take advantage of the cache, it has to be enabled **before**
using the Hyprland flake package.
{{< /callout >}}
> [!WARNING]
> In order for Nix to take advantage of the cache, it has to be enabled **before**
> using the Hyprland flake package.
```nix {filename="configuration.nix"}
{
@ -37,9 +31,10 @@ using the Hyprland flake package.
}
```
{{< callout type=warning >}} Do **not** override Hyprland's `nixpkgs` input
unless you know what you are doing.
Doing so will render the cache useless, since you're building from a different
Nixpkgs commit. {{< /callout >}}
> [!WARNING]
> Do **not** override Hyprland's `nixpkgs` input
> unless you know what you are doing.
> Doing so will render the cache useless, since you're building from a different
> Nixpkgs commit.
[cache.nixos.org]: https://cache.nixos.org

View file

@ -25,12 +25,9 @@ Follow the
[Bisecting an issue](https://wiki.hypr.land/Crashes-and-Bugs/#bisecting-an-issue)
guide. To build, run `nix build`.
{{< callout >}}
To build with Tracy support, modify `nix/default.nix` to enable the flag, then run
`nix build '.?submodules=1'`.
{{< /callout >}}
> [!WARNING]
> To build with Tracy support, modify `nix/default.nix` to enable the flag, then run
> `nix build '.?submodules=1'`.
To view logs, pass the `--print-build-logs` (`-L`) flag.

View file

@ -6,21 +6,18 @@ weight: 2
For a list of available options, check the
[Home Manager options](https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.enable).
{{< callout type=warning >}}
**Required:**
- **NixOS Module:** enables critical components needed to run Hyprland properly.
Without this, you may have issues with missing session files in your
Display Manager.
**Optional**:
- **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
- Configures Hyprland and adds it to your user's `$PATH`, but
does not make certain system-level changes such as adding a desktop session
file for your display manager.
This is handled by the NixOS module, once you enable it.
{{< /callout >}}
> [!WARNING]
> **Required:**
> - **NixOS Module:** enables critical components needed to run Hyprland properly.
> Without this, you may have issues with missing session files in your
> Display Manager.
>
> **Optional**:
> - **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
> - Configures Hyprland and adds it to your user's `$PATH`, but
> does not make certain system-level changes such as adding a desktop session
> file for your display manager.
> This is handled by the NixOS module, once you enable it.
## Installation
@ -85,13 +82,10 @@ Don't forget to replace `user@hostname` with your username and hostname!
{{< tab "Nix stable (with flake-compat)" >}}
{{< callout >}}
The flake module is merely an extension to the Home Manager downstream module.
It is mainly used as a staging area for new options, so unless you're a tester
you should use the downstream Home Manager module.
{{< /callout >}}
> [!WARNING]
> The flake module is merely an extension to the Home Manager downstream module.
> It is mainly used as a staging area for new options, so unless you're a tester
> you should use the downstream Home Manager module.
The following snippet of code tries to show how to bring the Hyprland flake from
the flake input and use the package in the Home Manager option. Feel free to

View file

@ -12,21 +12,18 @@ your Display Manager.
Make sure to check out the options of the
[NixOS module](https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=hyprland).
{{< callout type=warning >}}
**Required:**
- **NixOS Module:** enables critical components needed to run Hyprland properly.
Without this, you may have issues with missing session files in your
Display Manager.
**Optional**:
- **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
- Configures Hyprland and adds it to your user's `$PATH`, but
does not make certain system-level changes such as adding a desktop session
file for your display manager.
This is handled by the NixOS module, once you enable it.
{{< /callout >}}
> [!WARNING]
> **Required:**
> - **NixOS Module:** enables critical components needed to run Hyprland properly.
> Without this, you may have issues with missing session files in your
> Display Manager.
>
> **Optional**:
> - **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
> - Configures Hyprland and adds it to your user's `$PATH`, but
> does not make certain system-level changes such as adding a desktop session
> file for your display manager.
> This is handled by the NixOS module, once you enable it.
{{< tabs items="Nixpkgs,Flakes,Nix stable (flake-compat)" >}}
@ -52,11 +49,8 @@ This will use the Hyprland version included in the Nixpkgs release you're using.
{{< tab >}}
{{< callout type=info >}}
If you don't want to compile Hyprland yourself, make sure to enable [Cachix](../Cachix).
{{< /callout >}}
> [!NOTE]
> If you don't want to compile Hyprland yourself, make sure to enable [Cachix](../Cachix).
In case you want to use the _development_ version of Hyprland, you can add it like
this:
@ -118,11 +112,8 @@ For more details, see
{{< tab "Nix stable" >}}
{{< callout type=info >}}
If you don't want to compile Hyprland yourself, make sure to enable [Cachix](../Cachix).
{{< /callout >}}
> [!NOTE]
> If you don't want to compile Hyprland yourself, make sure to enable [Cachix](../Cachix).
```nix {filename="configuration.nix"}
{pkgs, ...}: let

View file

@ -25,11 +25,8 @@ nix profile install nixpkgs#hyprland
{{< tab "From the Flake" >}}
{{< callout type=info >}}
Make sure to enable [Cachix](../Cachix) first.
{{< /callout >}}
> [!NOTE]
> Make sure to enable [Cachix](../Cachix) first.
```sh
nix profile install github:hyprwm/Hyprland

View file

@ -7,13 +7,10 @@ Hyprland plugins are managed differently on Nix than on other distros.
The most notable change is that `hyprpm` is unsupported, but we have our own way of
building and managing plugins.
{{< callout type=warning >}}
Using plugins using the syntax below requires you to be using Hyprland through
the [Home Manager module](../Hyprland-on-Home-Manager) or the
[upstream NixOS module](../Hyprland-on-NixOS#upstream-module).
{{< /callout >}}
> [!WARNING]
> Using plugins using the syntax below requires you to be using Hyprland through
> the [Home Manager module](../Hyprland-on-Home-Manager) or the
> [upstream NixOS module](../Hyprland-on-NixOS#upstream-module).
## Using plugins from Nixpkgs

View file

@ -5,21 +5,18 @@ title: Nix
To install Hyprland on NixOS, we provide a NixOS and a Home Manager module.
{{< callout type=warning >}}
**Required:**
- **NixOS Module:** enables critical components needed to run Hyprland properly.
Without this, you may have issues with missing session files in your
Display Manager.
**Optional**:
- **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
- Configures Hyprland and adds it to your user's `$PATH`, but
does not make certain system-level changes such as adding a desktop session
file for your display manager.
This is handled by the NixOS module, once you enable it.
{{< /callout >}}
> [!WARNING]
> **Required:**
> - **NixOS Module:** enables critical components needed to run Hyprland properly.
> Without this, you may have issues with missing session files in your
> Display Manager.
>
> **Optional**:
> - **Home Manager module:** lets you configure Hyprland declaratively through Home Manager.
> - Configures Hyprland and adds it to your user's `$PATH`, but
> does not make certain system-level changes such as adding a desktop session
> file for your display manager.
> This is handled by the NixOS module, once you enable it.
## NixOS module

View file

@ -23,13 +23,10 @@ For maximum performance and support with newer cards, running either of the
first two setups is recommended as it contains some vital optimisations and
power management support for newer GPUs.
{{< callout >}}
For those on the Nvidia 50xx series of graphics cards (5090, 5080, etc) or
newer, the open source kernel modules are **REQUIRED** when using the
proprietary Nvidia drivers.
{{< /callout >}}
> [!WARNING]
> For those on the Nvidia 50xx series of graphics cards (5090, 5080, etc) or
> newer, the open source kernel modules are **REQUIRED** when using the
> proprietary Nvidia drivers.
According to
[Nvidia](https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/),
@ -99,17 +96,14 @@ names:
MODULES=(... nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)
```
{{< callout >}}
Electron or Chromium-based apps can stall for up to a minute after boot on hybrid graphics systems with an Intel iGPU and an Nvidia dGPU.
This can be fixed by loading the `i915` module **before** the Nvidia ones in `/etc/mkinitcpio.conf`. Just edit the `MODULES` line like this:
```conf {filename="/etc/mkinitcpio.conf"}
MODULES=(i915 nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)
```
{{< /callout >}}
> [!WARNING]
> Electron or Chromium-based apps can stall for up to a minute after boot on hybrid graphics systems with an Intel iGPU and an Nvidia dGPU.
>
> This can be fixed by loading the `i915` module **before** the Nvidia ones in `/etc/mkinitcpio.conf`. Just edit the `MODULES` line like this:
>
> ```conf {filename="/etc/mkinitcpio.conf"}
> MODULES=(i915 nvidia nvidia_modeset nvidia_uvm nvidia_drm ...)
> ```
You can then rebuild the initramfs with `sudo mkinitcpio -P`, and reboot.
@ -276,13 +270,10 @@ For Nix users, the equivalent of the above is
}
```
{{< callout >}}
According to Nvidia, suspend/wakeup issues should be solved on the Nvidia open
driver. If it still doesn't work and you're using the open driver, it may be
worth trying the fully proprietary one.
{{< /callout >}}
> [!WARNING]
> According to Nvidia, suspend/wakeup issues should be solved on the Nvidia open
> driver. If it still doesn't work and you're using the open driver, it may be
> worth trying the fully proprietary one.
## Still having issues?

View file

@ -20,12 +20,9 @@ If you need access to a private member of a Hyprland class, you can surround inc
## Using Function Hooks
{{< callout >}}
Function hooks are only available on `AMD64` (`x86_64`). Attempting to hook on
any other arch will make Hyprland simply ignore your hooking attempt.
{{</ callout >}}
> [!WARNING]
> Function hooks are only available on `AMD64` (`x86_64`). Attempting to hook on
> any other arch will make Hyprland simply ignore your hooking attempt.
Function hooks are intimidating at first, but when used properly can be
_extremely_ powerful.
@ -101,13 +98,10 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
}
```
{{< callout type=warning >}}
Please note method lookups are slow and should not be used often. The entries
_will not_ change during runtime, so it's a good idea to make the lookups
`static`.
{{</ callout >}}
> [!WARNING]
> Please note method lookups are slow and should not be used often. The entries
> _will not_ change during runtime, so it's a good idea to make the lookups
> `static`.
### Why use findFunctionsByName?

View file

@ -7,11 +7,8 @@ These are all the events that can be listened to using Event Hooks.
## Complete list
{{< callout type=info >}}
`M:` means `std::unordered_map<std::string, std::any>` following props are members.
{{</ callout >}}
> [!NOTE]
> `M:` means `std::unordered_map<std::string, std::any>` following props are members.
| name | description | argument(s) | cancellable |
| --- | --- | --- | --- |

View file

@ -7,18 +7,15 @@ This page will tell you how to use plugins.
## Disclaimers
{{< callout type=warning >}}
Plugins are written in C++ and will run as a part of Hyprland.
Make sure to _always_ read the source code of the plugins you are going to use
and to trust the source.
Writing a plugin to wipe your computer is easy.
_**Never**_ trust random `.so` files you receive from other people.
{{< /callout >}}
> [!WARNING]
> Plugins are written in C++ and will run as a part of Hyprland.
>
> Make sure to _always_ read the source code of the plugins you are going to use
> and to trust the source.
>
> Writing a plugin to wipe your computer is easy.
>
> _**Never**_ trust random `.so` files you receive from other people.
## Getting plugins
@ -34,18 +31,15 @@ manual instructions, see [here](#manual).
### hyprpm
{{< callout type=info >}}
If you are using [permission management](../../Configuring/Permissions),
you should allow hyprpm to load plugins by adding this to your config:
```ini
permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
```
otherwise you'll get a popup asking for permission every time hyprpm tries to load a plugin.
{{< /callout >}}
> [!NOTE]
> If you are using [permission management](../../Configuring/Permissions),
> you should allow hyprpm to load plugins by adding this to your config:
>
> ```ini
> permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
> ```
>
> otherwise you'll get a popup asking for permission every time hyprpm tries to load a plugin.
Make sure you have the required dependencies: `cpio`, `cmake`, `git`, `meson` and `gcc`.
You might also need `-dev` packages of Hyprland's dependencies if your distro splits
@ -87,11 +81,8 @@ To load plugins manually, use `hyprctl plugin load path`.
You can unload plugins with `hyprctl plugin unload path`.
{{< callout >}}
Path has to be absolute!
{{< /callout >}}
> [!WARNING]
> Path has to be absolute!
## FAQ About Plugins

View file

@ -154,13 +154,10 @@ There are a few examples listed in the [Readme](https://github.com/elkowar/eww).
It's also highly recommended to read through the
[Configuration options](https://elkowar.github.io/eww/configuration.html).
{{< callout >}}
Read
[the Wayland section](https://elkowar.github.io/eww/configuration.html#wayland)
carefully, otherwise Eww won't work on Hyprland.
{{< /callout >}}
> [!WARNING]
> Read
> [the Wayland section](https://elkowar.github.io/eww/configuration.html#wayland)
> carefully, otherwise Eww won't work on Hyprland.
Here are some example widgets that might be useful for Hyprland:

View file

@ -33,33 +33,24 @@ The above option generates a new desktop entry, `hyprland-uwsm.desktop`, which w
For more info, read the [option](https://search.nixos.org/options?channel=unstable&show=programs.uwsm.enable&from=0&size=50&sort=relevance&type=packages&query=uwsm).
{{< callout >}}
If you use the [Home Manager module](../../Nix/Hyprland-on-Home-Manager), make sure to disable the systemd integration, as it conflicts with uwsm.
```nix
{
wayland.windowManager.hyprland.systemd.enable = false;
}
```
{{< /callout >}}
> [!WARNING]
> If you use the [Home Manager module](../../Nix/Hyprland-on-Home-Manager), make sure to disable the systemd integration, as it conflicts with uwsm.
>
> ```nix
> {
> wayland.windowManager.hyprland.systemd.enable = false;
> }
> ```
{{% /details %}}
{{< callout type=info >}}
For instructions for other distros and manual building, see [building and installing](https://github.com/Vladimir-csp/uwsm?tab=readme-ov-file#installation) section on the project's page.
{{< /callout >}}
> [!NOTE]
> For instructions for other distros and manual building, see [building and installing](https://github.com/Vladimir-csp/uwsm?tab=readme-ov-file#installation) section on the project's page.
## Launching Hyprland with uwsm
{{< callout type=info >}}
Pay attention to the warnings in [Environment variables](../../Configuring/Environment-variables), [Multi-GPU](../../Configuring/Multi-GPU) and [Dispatchers](../../Configuring/Dispatchers) sections.
{{< /callout >}}
> [!NOTE]
> Pay attention to the warnings in [Environment variables](../../Configuring/Environment-variables), [Multi-GPU](../../Configuring/Multi-GPU) and [Dispatchers](../../Configuring/Dispatchers) sections.
### In tty