mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2025-12-19 19:20:02 +01:00
Convert Hugo callouts to GFM alerts
This commit is contained in:
parent
5f6f2203cb
commit
c4dfbc2808
43 changed files with 681 additions and 1047 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
> ```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||

|
||||
|
||||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
| --- | --- | --- | --- |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
| --- | --- | --- | --- |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue