treewide: run linter

This commit is contained in:
Mihai Fufezan 2024-11-06 20:34:37 +02:00
parent 1b2ba381c7
commit 95697479fd
Signed by: fufexan
SSH key fingerprint: SHA256:SdnKmEpJrDu1+2UO1QpB/Eg4HKcdDi6n+xSRqFNJVpg
32 changed files with 212 additions and 171 deletions

View file

@ -53,7 +53,7 @@ can also use `xev` or `wev` to find keycodes.
## Misc ## Misc
### Workspace bindings on non-qwerty layouts ### Workspace bindings on non-qwerty layouts
Keys used for keybinds need to be accessible without any modifiers in your layout. For instance, the `French Azerty` layout uses `SHIFT+unmodified_key` to write `0-9` numbers. As such, the workspace keybinds for this layout need to use the names of the `unmodified_key`s, and will not work when using the `0-9` numbers. Keys used for keybinds need to be accessible without any modifiers in your layout. For instance, the `French Azerty` layout uses `SHIFT+unmodified_key` to write `0-9` numbers. As such, the workspace keybinds for this layout need to use the names of the `unmodified_key`s, and will not work when using the `0-9` numbers.
@ -200,7 +200,7 @@ bindrl = MOD, KEY, exec, amongus
Flags: Flags:
``` ```plain
l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active. l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
r -> release, will trigger on release of a key. r -> release, will trigger on release of a key.
e -> repeat, will repeat when held. e -> repeat, will repeat when held.
@ -359,7 +359,7 @@ Please note that this function will _only_ work with
## Submaps ## Submaps
Keybind submaps, also known as _modes_ or _groups_, allow you to activate a Keybind submaps, also known as _modes_ or _groups_, allow you to activate a
separate set of keybinds. For example, if you want to enter a "resize" mode separate set of keybinds. For example, if you want to enter a "resize" mode
which allows you to resize windows with the arrow keys, you can do it like this: which allows you to resize windows with the arrow keys, you can do it like this:
```ini ```ini

View file

@ -138,7 +138,7 @@ You have nine choices:
- Previous workspace: `previous`, or `previous_per_monitor` - Previous workspace: `previous`, or `previous_per_monitor`
- First available empty workspace: `empty`, suffix with `m` to only search - First available empty workspace: `empty`, suffix with `m` to only search
on monitor. and/or `n` to make it the *next* available empty workspace. e.g. on monitor. and/or `n` to make it the _next_ available empty workspace. e.g.
`emptynm` `emptynm`
- Special Workspace: `special` or `special:name` for named special workspaces. - Special Workspace: `special` or `special:name` for named special workspaces.
@ -227,4 +227,3 @@ address:0x13371337 nomaxsize 0
address:0x13371337 opaque toggle address:0x13371337 opaque toggle
address:0x13371337 immediate unset address:0x13371337 immediate unset
``` ```

View file

@ -9,48 +9,48 @@ from a more tangible example.
### end_4 ### end_4
![](https://github.com/end-4/dots-hyprland/assets/97237370/5e081770-0f1e-45c4-ad9c-3d19f488cd85) ![end-4/dots-hyprland screenshot](https://github.com/end-4/dots-hyprland/assets/97237370/5e081770-0f1e-45c4-ad9c-3d19f488cd85)
[https://github.com/end-4/dots-hyprland](https://github.com/end-4/dots-hyprland) [https://github.com/end-4/dots-hyprland](https://github.com/end-4/dots-hyprland)
### Stephan Raabe (ML4W) ### Stephan Raabe (ML4W)
![](https://i.ibb.co/6ydHNt9/screenshot-29-1.png) ![mylinuxforwork/dotfiles screenshot](https://i.ibb.co/6ydHNt9/screenshot-29-1.png)
[https://github.com/mylinuxforwork/dotfiles](https://github.com/mylinuxforwork/dotfiles) [https://github.com/mylinuxforwork/dotfiles](https://github.com/mylinuxforwork/dotfiles)
### fufexan ### fufexan
![](https://user-images.githubusercontent.com/36706276/192147190-cf9cf4df-94cb-4a3b-b9d8-137ed0c2538f.png) ![fufexan/dotfiles screenshot](https://user-images.githubusercontent.com/36706276/192147190-cf9cf4df-94cb-4a3b-b9d8-137ed0c2538f.png)
[https://github.com/fufexan/dotfiles](https://github.com/fufexan/dotfiles) [https://github.com/fufexan/dotfiles](https://github.com/fufexan/dotfiles)
### linuxmobile ### linuxmobile
![](https://i.ibb.co/kGrhpKd/68747470733a2f2f692e696d6775722e636f6d2f553173336a69372e706e67.png) ![linuxmobile/hyprland-dots screenshot](https://i.ibb.co/kGrhpKd/68747470733a2f2f692e696d6775722e636f6d2f553173336a69372e706e67.png)
[https://github.com/linuxmobile/hyprland-dots](https://github.com/linuxmobile/hyprland-dots) [https://github.com/linuxmobile/hyprland-dots](https://github.com/linuxmobile/hyprland-dots)
### flick0 ### flick0
![](https://raw.githubusercontent.com/flick0/dotfiles/aurora/assets/fetch.png) ![flick0/dotfiles screenshot](https://raw.githubusercontent.com/flick0/dotfiles/aurora/assets/fetch.png)
[https://github.com/flick0/dotfiles](https://github.com/flick0/dotfiles) [https://github.com/flick0/dotfiles](https://github.com/flick0/dotfiles)
### iamverysimp1e ### iamverysimp1e
![](https://github.com/iamverysimp1e/dots/raw/main/ScreenShots/HyprLand/Rice1.png) ![iamverysimp1e/dots screenshot](https://github.com/iamverysimp1e/dots/raw/main/ScreenShots/HyprLand/Rice1.png)
[https://github.com/iamverysimp1e/dots](https://github.com/iamverysimp1e/dots) [https://github.com/iamverysimp1e/dots](https://github.com/iamverysimp1e/dots)
### notusknot ### notusknot
![](https://github.com/notusknot/dotfiles-nix/raw/main/pics/screenshot.png) ![notusknot/dotfiles-nix screenshot](https://github.com/notusknot/dotfiles-nix/raw/main/pics/screenshot.png)
[https://github.com/notusknot/dotfiles-nix](https://github.com/notusknot/dotfiles-nix) [https://github.com/notusknot/dotfiles-nix](https://github.com/notusknot/dotfiles-nix)
### coffebar ### coffebar
![](https://github.com/coffebar/dotfiles/raw/6a5d595c594f108cd10219df08d338e98e1d2d7d/screenshot.png) ![coffebar/dotfiles screenshot](https://github.com/coffebar/dotfiles/raw/6a5d595c594f108cd10219df08d338e98e1d2d7d/screenshot.png)
[https://github.com/coffebar/dotfiles](https://github.com/coffebar/dotfiles) [https://github.com/coffebar/dotfiles](https://github.com/coffebar/dotfiles)

View file

@ -27,6 +27,7 @@ three_param_keyword = A, B, # OK
## Executing ## Executing
You can execute a shell script on: You can execute a shell script on:
- startup of the compositor - startup of the compositor
- every time the config is reloaded. - every time the config is reloaded.
- shutdown of the compositor - shutdown of the compositor
@ -96,8 +97,8 @@ Remember to use the name of the `Tablet` and not `Tablet Pad` or `Tablet tool`.
Additional properties only present in per-device configs: Additional properties only present in per-device configs:
- `enabled` -> (only for mice / touchpads / touchdevices / keyboards) - `enabled` -> (only for mice / touchpads / touchdevices / keyboards)
- enables / disables the device (connects / disconnects from the on-screen cursor) - enables / disables the device (connects / disconnects from the on-screen cursor)
- default: Enabled - default: Enabled
Example config section: Example config section:

View file

@ -85,15 +85,17 @@ Leaving the name empty will define a fallback rule to use when no other rules
match. match.
There are a few special values for the resolutions: There are a few special values for the resolutions:
- `preferred` - use the display's preferred size and refresh rate. - `preferred` - use the display's preferred size and refresh rate.
- `highres` - use the highest supported resolution. - `highres` - use the highest supported resolution.
- `highrr` - use the highest supported refresh rate. - `highrr` - use the highest supported refresh rate.
Position also has a few special values: Position also has a few special values:
- `auto` - let Hyprland decide on a position. By default, it places each new monitor to the right of existing ones. - `auto` - let Hyprland decide on a position. By default, it places each new monitor to the right of existing ones.
- `auto-right/left/up/down` - place the monitor to the right/left, above or below other monitors. - `auto-right/left/up/down` - place the monitor to the right/left, above or below other monitors.
***Please Note:*** While specifying a monitor direction for your first monitor is allowed, this does nothing and it will _**Please Note:**_ While specifying a monitor direction for your first monitor is allowed, this does nothing and it will
be positioned at (0,0). Also the direction is always from the center out, so you can specify `auto-up` then `auto-left`, be positioned at (0,0). Also the direction is always from the center out, so you can specify `auto-up` then `auto-left`,
but the left monitors will just be left of the origin and above the origin. You can also specify duplicate directions and but the left monitors will just be left of the origin and above the origin. You can also specify duplicate directions and
monitors will continue to go in that direction. monitors will continue to go in that direction.
@ -231,15 +233,15 @@ monitor = eDP-1, 2880x1800@90, 0x0, 1, transform, 1
Transform list: Transform list:
``` ```plain
0 -> normal (no transforms) 0 -> normal (no transforms)
1 -> 90 degrees 1 -> 90 degrees
2 -> 180 degrees 2 -> 180 degrees
3 -> 270 degrees 3 -> 270 degrees
4 -> flipped 4 -> flipped
5 -> flipped + 90 degrees 5 -> flipped + 90 degrees
6 -> flipped + 180 degrees 6 -> flipped + 180 degrees
7 -> flipped + 270 degrees 7 -> flipped + 270 degrees
``` ```
## Default workspace ## Default workspace

View file

@ -19,7 +19,7 @@ For this case, the writer is taking the example of their laptop.
Upon running `lspci | grep -E 'VGA|3D'`, One can list all the video devices Upon running `lspci | grep -E 'VGA|3D'`, One can list all the video devices
available. available.
``` ```plain
01:00.0 VGA compatible controller: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] (rev a1) 01:00.0 VGA compatible controller: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] (rev a1)
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] (rev c6) 06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] (rev c6)
``` ```
@ -29,7 +29,7 @@ Here it is clear that 2 GPUs are available, the dedicated NVIDIA GTX 1650 Mobile
Now, run `ls -l /dev/dri/by-path` Now, run `ls -l /dev/dri/by-path`
``` ```plain
total 0 total 0
lrwxrwxrwx 1 root root 8 Jul 14 15:45 pci-0000:01:00.0-card -> ../card0 lrwxrwxrwx 1 root root 8 Jul 14 15:45 pci-0000:01:00.0-card -> ../card0
lrwxrwxrwx 1 root root 13 Jul 14 15:45 pci-0000:01:00.0-render -> ../renderD128 lrwxrwxrwx 1 root root 13 Jul 14 15:45 pci-0000:01:00.0-render -> ../renderD128
@ -64,7 +64,7 @@ required.
If instead you would like to use another GPU, or the wrong GPU is picked by default, If instead 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. set `AQ_DRM_DEVICES` to a `:`-separated list of card paths, e.g.
``` ```plain
env = AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1 env = AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1
``` ```

View file

@ -8,7 +8,7 @@ title: Uncommon tips & tricks
The easiest way to accomplish this is to set this using XKB settings, for The easiest way to accomplish this is to set this using XKB settings, for
example: example:
``` ```ini
input { input {
kb_layout = us,cz kb_layout = us,cz
kb_variant = ,qwerty kb_variant = ,qwerty
@ -69,7 +69,7 @@ submap = reset
## Remap Caps-Lock to Ctrl ## Remap Caps-Lock to Ctrl
``` ```ini
input { input {
kb_options = ctrl:nocaps kb_options = ctrl:nocaps
} }
@ -77,13 +77,14 @@ input {
## Swap Caps-Lock and Escape ## Swap Caps-Lock and Escape
``` ```ini
input { input {
kb_options = caps:swapescape kb_options = caps:swapescape
} }
``` ```
## Set F13-F24 as usual function keys ## Set F13-F24 as usual function keys
By default, F13-F24 are mapped by xkb as various "XF86" keysyms. These cause binding By default, F13-F24 are mapped by xkb as various "XF86" keysyms. These cause binding
issues in many programs. One example is OBS Studio, which does not detect the XF86 issues in many programs. One example is OBS Studio, which does not detect the XF86
keysyms as usable keybindings, making you unable to use them for binds. This option keysyms as usable keybindings, making you unable to use them for binds. This option
@ -94,15 +95,17 @@ This option was only added recently to `xkeyboard-config`. Please ensure you are
2.43 or greater for this option to do anything. 2.43 or greater for this option to do anything.
{{< /callout >}} {{< /callout >}}
``` ```ini
input { input {
kb_options = fkeys:basic_13-24 kb_options = fkeys:basic_13-24
} }
``` ```
## Minimize windows using special workspaces ## Minimize windows using special workspaces
This approach uses special workspaces to mimic the "minimize window" function, by using a single keybind to toggle the minimized state. This approach uses special workspaces to mimic the "minimize window" function, by using a single keybind to toggle the minimized state.
Note that one keybind can only handle one window. Note that one keybind can only handle one window.
```ini ```ini
bind = $mod, S, togglespecialworkspace, magic bind = $mod, S, togglespecialworkspace, magic
bind = $mod, S, movetoworkspace, +0 bind = $mod, S, movetoworkspace, +0

View file

@ -194,6 +194,7 @@ To disable:
```sh ```sh
hyprctl seterror disable hyprctl seterror disable
``` ```
### notify ### notify
Sends a notification using the built-in Hyprland notification system. Sends a notification using the built-in Hyprland notification system.

View file

@ -347,7 +347,7 @@ _Subcategory `group:groupbar:`_
| name | description | type | default | | name | description | type | default |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| enabled | enables groupbars | bool | true | | enabled | enables groupbars | bool | true |
| font_family | font used to display groupbar titles, use `misc:font_family` if not specified | string | [[Empty]] | | font_family | font used to display groupbar titles, use `misc:font_family` if not specified | string | [\[Empty]] |
| font_size | font size of groupbar title | int | 8 | | font_size | font size of groupbar title | int | 8 |
| gradients | enables gradients | bool | true | | gradients | enables gradients | bool | true |
| height | height of the groupbar | int | 14 | | height | height of the groupbar | int | 14 |
@ -369,7 +369,7 @@ _Subcategory `group:groupbar:`_
| disable_splash_rendering | disables the Hyprland splash rendering. (requires a monitor reload to take effect) | bool | false | | disable_splash_rendering | disables the Hyprland splash rendering. (requires a monitor reload to take effect) | bool | false |
| col.splash | Changes the color of the splash text (requires a monitor reload to take effect). | color | 0xffffffff | | col.splash | Changes the color of the splash text (requires a monitor reload to take effect). | color | 0xffffffff |
| font_family | Set the global default font to render the text including debug fps/notification, config error messages and etc., selected from system fonts. | string | Sans | | font_family | Set the global default font to render the text including debug fps/notification, config error messages and etc., selected from system fonts. | string | Sans |
| splash_font_family | Changes the font used to render the splash text, selected from system fonts (requires a monitor reload to take effect). | string | [[Empty]] | | splash_font_family | Changes the font used to render the splash text, selected from system fonts (requires a monitor reload to take effect). | string | [\[Empty]] |
| force_default_wallpaper | Enforce any of the 3 default wallpapers. Setting this to `0` or `1` disables the anime background. `-1` means "random". [-1/0/1/2] | int | -1 | | force_default_wallpaper | Enforce any of the 3 default wallpapers. Setting this to `0` or `1` disables the anime background. `-1` means "random". [-1/0/1/2] | int | -1 |
| vfr | controls the VFR status of Hyprland. Heavily recommended to leave enabled to conserve resources. | bool | true | | vfr | controls the VFR status of Hyprland. Heavily recommended to leave enabled to conserve resources. | bool | true |
| vrr | controls the VRR (Adaptive Sync) of your monitors. 0 - off, 1 - on, 2 - fullscreen only [0/1/2] | int | 0 | | vrr | controls the VRR (Adaptive Sync) of your monitors. 0 - off, 1 - on, 2 - fullscreen only [0/1/2] | int | 0 |
@ -381,8 +381,8 @@ _Subcategory `group:groupbar:`_
| animate_mouse_windowdragging | If true, will animate windows being dragged by mouse, note that this can cause weird behavior on some curves | bool | false | | animate_mouse_windowdragging | If true, will animate windows being dragged by mouse, note that this can cause weird behavior on some curves | bool | false |
| disable_autoreload | If true, the config will not reload automatically on save, and instead needs to be reloaded with `hyprctl reload`. Might save on battery. | bool | false | | disable_autoreload | If true, the config will not reload automatically on save, and instead needs to be reloaded with `hyprctl reload`. Might save on battery. | bool | false |
| enable_swallow | Enable window swallowing | bool | false | | enable_swallow | Enable window swallowing | bool | false |
| swallow_regex | The *class* regex to be used for windows that should be swallowed (usually, a terminal). To know more about the list of regex which can be used [use this cheatsheet](https://github.com/ziishaned/learn-regex/blob/master/README.md). | str | \[\[Empty\]\] | | swallow_regex | The _class_ regex to be used for windows that should be swallowed (usually, a terminal). To know more about the list of regex which can be used [use this cheatsheet](https://github.com/ziishaned/learn-regex/blob/master/README.md). | str | \[\[Empty\]\] |
| swallow_exception_regex | The *title* regex to be used for windows that should *not* be swallowed by the windows specified in swallow_regex (e.g. wev). The regex is matched against the parent (e.g. Kitty) window's title on the assumption that it changes to whatever process it's running. | str | \[\[Empty\]\] | | swallow_exception_regex | The _title_ regex to be used for windows that should _not_ be swallowed by the windows specified in swallow_regex (e.g. wev). The regex is matched against the parent (e.g. Kitty) window's title on the assumption that it changes to whatever process it's running. | str | \[\[Empty\]\] |
| focus_on_activate | Whether Hyprland should focus an app that requests to be focused (an `activate` request) | bool | false | | focus_on_activate | Whether Hyprland should focus an app that requests to be focused (an `activate` request) | bool | false |
| mouse_move_focuses_monitor | Whether mouse moving into a different monitor should focus it | bool | true | | mouse_move_focuses_monitor | Whether mouse moving into a different monitor should focus it | bool | true |
| render_ahead_of_time | [Warning: buggy] starts rendering _before_ your monitor displays a frame in order to lower latency | bool | false | | render_ahead_of_time | [Warning: buggy] starts rendering _before_ your monitor displays a frame in order to lower latency | bool | false |

View file

@ -118,7 +118,7 @@ It is not possible to `float` (or any other of the static rules) a window based
| monitor \[id\] | sets the monitor on which a window should open. `id` can be either id or name (either e.g. `1` or e.g. `DP-1`) | | monitor \[id\] | sets the monitor on which a window should open. `id` can be either id or name (either e.g. `1` or e.g. `DP-1`) |
| workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. | | workspace \[w\] | sets the workspace on which a window should open (for workspace syntax, see [dispatchers->workspaces](../Dispatchers#workspaces)). You can also make \[w\] to `unset`, will unset all previous workspace rules applied to this window. You can also add `silent` after the workspace to make the window open silently. |
| noinitialfocus | disables the initial focus to the window | | noinitialfocus | disables the initial focus to the window |
| pin | pins the window (i.e. show it on all workspaces) *note: floating only* | | pin | pins the window (i.e. show it on all workspaces) _note: floating only_ |
| unset | removes all previously set rules for the given parameters. Please note it has to match EXACTLY. | | unset | removes all previously set rules for the given parameters. Please note it has to match EXACTLY. |
| nomaxsize | removes max size limitations. Especially useful with windows that report invalid max sizes (e.g. winecfg) | | nomaxsize | removes max size limitations. Especially useful with windows that report invalid max sizes (e.g. winecfg) |
| stayfocused | forces focus on the window as long as it's visible | | stayfocused | forces focus on the window as long as it's visible |

View file

@ -19,19 +19,20 @@ Selectors have props separated by a space. No spaces are allowed inside props
themselves. themselves.
Props: Props:
- `r[A-B]` - ID range from A to B inclusive
- `s[bool]` - Whether the workspace is special or not - `r[A-B]` - ID range from A to B inclusive
- `n[bool]`, `n[s:string]`, `n[e:string]` - named actions. `n[bool]` -> - `s[bool]` - Whether the workspace is special or not
whether a workspace is a named workspace, `s` and `e` are starts and ends - `n[bool]`, `n[s:string]`, `n[e:string]` - named actions. `n[bool]` ->
with respectively whether a workspace is a named workspace, `s` and `e` are starts and ends
- `m[monitor]` - Monitor selector with respectively
- `w[(flags)A-B]`, `w[(flags)X]` - Prop for window counts on the workspace. - `m[monitor]` - Monitor selector
A-B is an inclusive range, X is a specific number. Flags can be omitted. - `w[(flags)A-B]`, `w[(flags)X]` - Prop for window counts on the workspace.
It can be `t` for tiled-only, `f` for floating-only, `g` to count groups A-B is an inclusive range, X is a specific number. Flags can be omitted.
instead of windows, and `v` to count only visible windows. It can be `t` for tiled-only, `f` for floating-only, `g` to count groups
- `f[-1]`, `f[0]`, `f[1]`, `f[2]` - fullscreen state of the workspace. `-1`: no instead of windows, and `v` to count only visible windows.
fullscreen, `0`: fullscreen, `1`: maximized, `2`, fullscreen without - `f[-1]`, `f[0]`, `f[1]`, `f[2]` - fullscreen state of the workspace. `-1`: no
fullscreen state sent to the window. fullscreen, `0`: fullscreen, `1`: maximized, `2`, fullscreen without
fullscreen state sent to the window.
### Syntax ### Syntax

View file

@ -9,13 +9,11 @@ These are the links to official Hyprland-related spaces or profiles:
Twitter: [twitter.com/hyprwm](https://twitter.com/hyprwm) Twitter: [twitter.com/hyprwm](https://twitter.com/hyprwm)
## Spaces ## Spaces
Discord: [discord.gg/hQ9XvMUjjr](https://discord.gg/hQ9XvMUjjr)<br/> Discord: [discord.gg/hQ9XvMUjjr](https://discord.gg/hQ9XvMUjjr)<br/>
Matrix: `#hyprland:matrix.vaxry.net` Matrix: `#hyprland:matrix.vaxry.net`
## Other ## Other
hyprland.org git instance: [code.hyprland.org](https://code.hyprland.org/)<br/> hyprland.org git instance: [code.hyprland.org](https://code.hyprland.org/)<br/>

View file

@ -27,7 +27,7 @@ that you can copy to your .vscode/ folder in the repo root.
With that, you can build in debug, go to the debugging tab and hit With that, you can build in debug, go to the debugging tab and hit
`(gdb) Launch`. `(gdb) Launch`.
*note:* You probably want to set `watchdog_timeout = 0` in the debug {} section _note:_ You probably want to set `watchdog_timeout = 0` in the debug {} section
of your config. Otherwise Hyprland will notice its hanging when you hit a of your config. Otherwise Hyprland will notice its hanging when you hit a
breakpoint and it will crash after you continue out of it. breakpoint and it will crash after you continue out of it.
@ -78,7 +78,7 @@ If you want proper LSP support in an editor that doesn't automatically set it
up, use clangd. You'll probably notice there will be a bunch of warnings up, use clangd. You'll probably notice there will be a bunch of warnings
because we haven't generated compile commands, to do this run: because we haven't generated compile commands, to do this run:
``` ```sh
cmake -S . -B build/ -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON cmake -S . -B build/ -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
``` ```

View file

@ -53,10 +53,10 @@ Report an issue on GitHub or on the Discord server.
1. Build Hyprland in debug (`make debug`). 1. Build Hyprland in debug (`make debug`).
2. Start Hyprland and get it to crash. 2. Start Hyprland and get it to crash.
3. In a tty or terminal, do `coredumpctl debug Hyprland`. 3. In a tty or terminal, do `coredumpctl debug Hyprland`.
- If gdb asks you for symbols, say `y`. - If gdb asks you for symbols, say `y`.
- If it asks about paging, say `c`. - If it asks about paging, say `c`.
4. Once you get to `(gdb)`, start file logging with `set logging on`. 4. Once you get to `(gdb)`, start file logging with `set logging on`.
- For a specific file, use `set logging file output.log`. - For a specific file, use `set logging file output.log`.
5. Run `bt -full`, then `exit` once finished, and attach the output. 5. Run `bt -full`, then `exit` once finished, and attach the output.
## Obtaining a trace log ## Obtaining a trace log
@ -152,7 +152,11 @@ 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 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. or kernel. In those cases, a DRM log is helpful.
_Please note, these logs are EXTREMELY verbose. Please reproduce your bug(s) ASAP to avoid getting a 1GB log_ {{< callout >}}
Please note, these logs are EXTREMELY verbose. Please reproduce your bug(s) ASAP to avoid getting a 1GB log.
{{< /callout >}}
```sh ```sh
echo 0x19F | sudo tee /sys/module/drm/parameters/debug # cnables verbose drm logging echo 0x19F | sudo tee /sys/module/drm/parameters/debug # cnables verbose drm logging

View file

@ -35,10 +35,10 @@ _[wiki page](../Crashes-and-Bugs)_
For Nvidia graphics - This issue appears to be resolved when using Nvidia For Nvidia graphics - This issue appears to be resolved when using Nvidia
Drivers 525.60.11 or later, but it may persist with older drivers. Drivers 525.60.11 or later, but it may persist with older drivers.
For systems with limited hardware (Ex. iGPU, USB-C, USB Hubs) - Set `env = AQ_NO_MODIFIERS,1` in your config \ For systems with limited hardware (Ex. iGPU, USB-C, USB Hubs) - Set `env = AQ_NO_MODIFIERS,1` in your config.
To diagnose if you have the exact problem above you can get a [DRM log](https://wiki.hyprland.org/Crashes-and-Bugs/#debugging-drm-issues) and look for To diagnose if you have the exact problem above you can get a [DRM log](https://wiki.hyprland.org/Crashes-and-Bugs/#debugging-drm-issues) and look for
``` ```plain
Requested display configuration exceeds system DDB limitations Requested display configuration exceeds system DDB limitations
``` ```
@ -78,7 +78,6 @@ utility, try our own screenshotting utility:
**Option 2:** You can also use hyprshot, more info [here](https://github.com/Gustash/Hyprshot). **Option 2:** You can also use hyprshot, more info [here](https://github.com/Gustash/Hyprshot).
**Option 3:** Install `flameshot`. **Option 3:** Install `flameshot`.
Flameshot has many built-in features like allowing you to draw with a paintbrush, Flameshot has many built-in features like allowing you to draw with a paintbrush,
@ -90,7 +89,7 @@ The options above are smoother and more native to Wayland. If you still want to
use Flameshot, here are some configuration recommendations by users who've found use Flameshot, here are some configuration recommendations by users who've found
workarounds. workarounds.
``` ```ini
# noanim isn't necessary but animations with these rules might look bad. use at your own discretion. # noanim isn't necessary but animations with these rules might look bad. use at your own discretion.
windowrulev2 = noanim, class:^(flameshot)$ windowrulev2 = noanim, class:^(flameshot)$
windowrulev2 = float, class:^(flameshot)$ windowrulev2 = float, class:^(flameshot)$
@ -158,6 +157,7 @@ Be aware that they will not prevent tty-changing using Ctrl-Alt-F1...F7.
### How do I change me mouse cursor? ### How do I change me mouse cursor?
See [hyprcursor](../Hypr-Ecosystem/hyprcursor) See [hyprcursor](../Hypr-Ecosystem/hyprcursor)
1. Set the GTK cursor using [nwg-look](https://github.com/nwg-piotr/nwg-look). 1. Set the GTK cursor using [nwg-look](https://github.com/nwg-piotr/nwg-look).
2. Add `exec-once=hyprctl setcursor [THEME] [SIZE]` to your config and restart Hyprland. 2. Add `exec-once=hyprctl setcursor [THEME] [SIZE]` to your config and restart Hyprland.
@ -351,10 +351,10 @@ pop-up. It should look something like this:
```bash ```bash
Window 55d794495400 -> : Window 55d794495400 -> :
... ...
class: [CLASS here] class: [CLASS here]
title: [TITLE here] title: [TITLE here]
... ...
``` ```
If the pop-up disappears as you hover over it, you can add to your config: If the pop-up disappears as you hover over it, you can add to your config:
@ -414,7 +414,7 @@ monitor = Unknown-1,disabled
If you are using a -git package, this is a common occurrence when ABI-breaking updates are done. If you are using a -git package, this is a common occurrence when ABI-breaking updates are done.
***Do not*** symlink different .so versions, this will cause crashes!!! _**Do not**_ symlink different .so versions, this will cause crashes!!!
Instead, find all hypr* packages with `-git` you have installed, remove them (possibly remove dependencies of them, too) Instead, find all hypr* packages with `-git` you have installed, remove them (possibly remove dependencies of them, too)
and simply install them again. and simply install them again.

View file

@ -341,6 +341,7 @@ epmi hypridle
epmi hyprpaper epmi hyprpaper
epmi hyprpicker epmi hyprpicker
``` ```
{{% /details %}} {{% /details %}}
{{% details title="Solus*" closed="true" %}} {{% details title="Solus*" closed="true" %}}

View file

@ -19,14 +19,22 @@ repositories.
## Nvidia? ## Nvidia?
_If not using an Nvidia card, skip this step_ {{< callout type=info >}}
If not using an Nvidia card, skip this step.
{{< /callout >}}
Please take a look at [The Nvidia page](../../Nvidia) before launching. It has Please take a look at [The Nvidia page](../../Nvidia) before launching. It has
information regarding the needed environment and tweaks. information regarding the needed environment and tweaks.
## VM? ## VM?
_If not using a VM, skip this step_ {{< callout type=info >}}
If not using a VM, skip this step.
{{< /callout >}}
In a VM, make sure you have 3D acceleration enabled in your `virtio` config (or In a VM, make sure you have 3D acceleration enabled in your `virtio` config (or
`virt-manager`) otherwise Hyprland _**will not work**_. `virt-manager`) otherwise Hyprland _**will not work**_.
@ -37,7 +45,7 @@ Please bear in mind 3D acceleration in VMs may be pretty slow.
## Launching Hyprland ## Launching Hyprland
Hyprland can be executed by typing `Hyprland` in your tty. Hyprland can be executed by typing `Hyprland` in your tty.
Systemd users can also start Hyprland, by typing `systemctl --user start hyprland-session.service` in tty. This method provides additional features, such as [xdg-autostart](https://www.freedesktop.org/software/systemd/man/latest/systemd-xdg-autostart-generator.html) support and ability to enable services for programs that rely on a graphical session and provide such services (e.g waybar). Systemd users can also start Hyprland, by typing `systemctl --user start hyprland-session.service` in tty. This method provides additional features, such as [xdg-autostart](https://www.freedesktop.org/software/systemd/man/latest/systemd-xdg-autostart-generator.html) support and ability to enable services for programs that rely on a graphical session and provide such services (e.g waybar).

View file

@ -14,19 +14,20 @@ These docs always target latest -git branch of respective apps.
## Wiki pages ## Wiki pages
### Apps/utilities for the user ### Apps/utilities for the user
- **[hyprpaper](./hyprpaper)**
- **[hyprpicker](./hyprpicker)** - **[hyprpaper](./hyprpaper)**
- **[hypridle](./hypridle)** - **[hyprpicker](./hyprpicker)**
- **[hyprlock](./hyprlock)** - **[hypridle](./hypridle)**
- **[xdg-desktop-portal-hyprland](./xdg-desktop-portal-hyprland)** - **[hyprlock](./hyprlock)**
- **[hyprsysteminfo](./hyprsysteminfo)** - **[xdg-desktop-portal-hyprland](./xdg-desktop-portal-hyprland)**
- **[hyprsunset](./hyprsunset)** - **[hyprsysteminfo](./hyprsysteminfo)**
- **[hyprpolkitagent](./hyprpolkitagent)** - **[hyprsunset](./hyprsunset)**
- **[hyprpolkitagent](./hyprpolkitagent)**
### Libraries and other utilities ### Libraries and other utilities
- **[hyprcursor](./hyprcursor)**
- **[hyprutils](./hyprutils)** - **[hyprcursor](./hyprcursor)**
- **[hyprlang](./hyprlang)** - **[hyprutils](./hyprutils)**
- **[hyprwayland-scanner](./hyprwayland-scanner)** - **[hyprlang](./hyprlang)**
- **[aquamarine](./aquamarine)** - **[hyprwayland-scanner](./hyprwayland-scanner)**
- **[aquamarine](./aquamarine)**

View file

@ -24,4 +24,3 @@ Configuration options are passed via environment variables starting with `AQ_` t
## Documentation ## Documentation
Documentation will come soon. Documentation will come soon.

View file

@ -2,6 +2,7 @@
weight: 101 weight: 101
title: hyprcursor title: hyprcursor
--- ---
hyprcursor is a new cursor theme format that has many advantages hyprcursor is a new cursor theme format that has many advantages
over the widely used xcursor. over the widely used xcursor.
@ -22,8 +23,9 @@ to potential permission issues.
You can set your theme with envvars, or with `hyprctl setcursor`. You can set your theme with envvars, or with `hyprctl setcursor`.
Env: Env:
- `HYPRCURSOR_THEME` controls the theme.
- `HYPRCURSOR_SIZE` controls the cursor size. - `HYPRCURSOR_THEME` controls the theme.
- `HYPRCURSOR_SIZE` controls the cursor size.
example snippet of `hyprland.conf`: example snippet of `hyprland.conf`:

View file

@ -30,6 +30,7 @@ there only for legibility.
Categories can be regular, and "special". Categories can be regular, and "special".
Both are specified the same: Both are specified the same:
```ini ```ini
category { category {
variable = value variable = value
@ -37,6 +38,7 @@ category {
``` ```
Special categories can have other properties, like for example containing a key: Special categories can have other properties, like for example containing a key:
```ini ```ini
special { special {
key = A key = A
@ -54,11 +56,13 @@ example uses those for per-device configs.
### Defining variables ### Defining variables
Variables can be defined like so: Variables can be defined like so:
```ini ```ini
$VAR = myData $VAR = myData
``` ```
Later on, you can use them like so: Later on, you can use them like so:
```ini ```ini
$SUFFIX = -san $SUFFIX = -san
$NAME = Jeremy $NAME = Jeremy
@ -91,11 +95,13 @@ someoption = blah
### Inline options ### Inline options
If you want to specify an option inline, without opening and closing a category, the separator is `:`: If you want to specify an option inline, without opening and closing a category, the separator is `:`:
```ini ```ini
category:variable = value category:variable = value
``` ```
If the category is special and requires a key, you can do: If the category is special and requires a key, you can do:
```ini ```ini
category[keyvalue]:variable = value category[keyvalue]:variable = value
``` ```
@ -105,4 +111,3 @@ This is the syntax used by `hyprctl keyword`, for example.
## Developer documentation ## Developer documentation
See the documentation at [hyprland.org/hyprlang](https://hyprland.org/hyprlang/). See the documentation at [hyprland.org/hyprlang](https://hyprland.org/hyprlang/).

View file

@ -14,6 +14,7 @@ is not required, but recommended. Without it, locking shows the current screen.
### General ### General
Variables in the `general` category: Variables in the `general` category:
| variable | description | type | default | | variable | description | type | default |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| disable_loading_bar | disables the loading bar on the bottom of the screen while hyprlock is booting up. | bool | false | | disable_loading_bar | disables the loading bar on the bottom of the screen while hyprlock is booting up. | bool | false |
@ -32,13 +33,14 @@ Variables in the `general` category:
{{< callout type=warning >}} {{< callout type=warning >}}
If you are not on hyprland, or your `XDG_CURRENT_DESKTOP` is not Hyprland, the fade out will be disabled and the value of your `no_fade_out` variable will be ignored. If you are not on hyprland, or your `XDG_CURRENT_DESKTOP` is not Hyprland, the fade out will be disabled and the value of your `no_fade_out` variable will be ignored.
{{< /callout >}} {{< /callout >}}
## Keyboard Shortcuts and Actions ## Keyboard Shortcuts and Actions
The following keys and key-combinations describe hyprlock's default behaviour: The following keys and key-combinations describe hyprlock's default behaviour:
| input | description | | input | description |
| -- | -- | | -- | -- |
| ESC | Clear password buffer | | ESC | Clear password buffer |
@ -80,6 +82,7 @@ widget_name {
### Shadowable ### Shadowable
Some widgets are shadowable, meaning they can have a shadow. For those widgets, you get: Some widgets are shadowable, meaning they can have a shadow. For those widgets, you get:
| variable | description | type | default | | variable | description | type | default |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| shadow_passes | passes for shadow, 0 to disable | int | 0 | | shadow_passes | passes for shadow, 0 to disable | int | 0 |
@ -212,17 +215,20 @@ input-field {
When `outline_thickness` set to `0`, the color of the inner box will be changed instead of the outer. 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: 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. - `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.
{{< /callout >}} {{< /callout >}}
Available variables for `placeholder_text`: Available variables for `placeholder_text`:
- `$PROMPT` - prompt text provided by pam. Usually this will be "Password: ", but it depends on your pam configuration.
- `$PROMPT` - prompt text provided by pam. Usually this will be "Password: ", but it depends on your pam configuration.
Available variables for `fail_text`: Available variables for `fail_text`:
- `$FAIL` - pam fail reason
- `$ATTEMPTS` - number of failed authentication attempts - `$FAIL` - pam fail reason
- `$ATTEMPTS` - number of failed authentication attempts
### Label ### Label
@ -247,15 +253,16 @@ label {
``` ```
Available variables for `text`: Available variables for `text`:
- `$USER` - username (e.g. linux-user)
- `$DESC` - user description (e.g. Linux User) - `$USER` - username (e.g. linux-user)
- `$TIME` - current time in 24-hour format (e.g. `13:37`) - `$DESC` - user description (e.g. Linux User)
- `$TIME12` - current time in 12-hour format (e.g. `1:37 PM`) - `$TIME` - current time in 24-hour format (e.g. `13:37`)
- `$PROMPT` - last pam prompt - `$TIME12` - current time in 12-hour format (e.g. `1:37 PM`)
- `$FAIL` - last pam fail reason - `$PROMPT` - last pam prompt
- `$ATTEMPTS` - failed attempts - `$FAIL` - last pam fail reason
- `$LAYOUT` - current keyboard layout - `$ATTEMPTS` - failed attempts
- `$FPRINTMESSAGE` - last message from fingerprint matching - `$LAYOUT` - current keyboard layout
- `$FPRINTMESSAGE` - last message from fingerprint matching
`text` also supports launching commands, for example: `text` also supports launching commands, for example:
@ -264,12 +271,13 @@ text = cmd[update:1000] echo "<span foreground='##ff2222'>$(date)</span>"
``` ```
Worth noting: Worth noting:
- `update:` - time is in ms.
- label can be forcefully updated by specifying `update:<time>:1` or `update:<time>:true` and sending `SIGUSR2` to hyprlock. `<time>` can be `0` in this case. - `update:` - time is in ms.
- `$ATTEMPTS[<string>]` format can be used to show `<string>` when there are no failed attempts. You can use pango-markup here. `<string>` can be empty to hide. - label can be forcefully updated by specifying `update:<time>:1` or `update:<time>:true` and sending `SIGUSR2` to hyprlock. `<time>` can be `0` in this case.
- `$LAYOUT[<str0>,<str1>,...]` format is available to replace indexed layouts. You can use settings from `hyprland.conf`, e.g. `$LAYOUT[en,ru,de]`. Also, single `!` character will hide layout. E.g. `$LAYOUT[!]` will hide default (0 indexed) and show others. - `$ATTEMPTS[<string>]` format can be used to show `<string>` when there are no failed attempts. You can use pango-markup here. `<string>` can be empty to hide.
- Variables seen above are parsed _before_ the command is ran. - `$LAYOUT[<str0>,<str1>,...]` format is available to replace indexed layouts. You can use settings from `hyprland.conf`, e.g. `$LAYOUT[en,ru,de]`. Also, single `!` character will hide layout. E.g. `$LAYOUT[!]` will hide default (0 indexed) and show others.
- **do not** run commands that never exit. This will hang the AsyncResourceGatherer and you won't have a good time. - Variables seen above are parsed _before_ the command is ran.
- **do not** run commands that never exit. This will hang the AsyncResourceGatherer and you won't have a good time.
## User Signals ## User Signals

View file

@ -31,12 +31,12 @@ sudo dnf install hyprpaper
{{% /details %}} {{% /details %}}
{{% details title="Manual" closed="true" %}} {{% details title="Manual" closed="true" %}}
### Dependencies ### Dependencies
The development files of these packages need to be installed on the system for `hyprpaper` to build correctly. The development files of these packages need to be installed on the system for `hyprpaper` to build correctly.
(Development packages are usually suffixed with `-dev` or `-devel` in most distros' repos). (Development packages are usually suffixed with `-dev` or `-devel` in most distros' repos).
- wayland - wayland
- wayland-protocols - wayland-protocols
- pango - pango
@ -51,17 +51,20 @@ The development files of these packages need to be installed on the system for `
- hyprwayland-scanner - hyprwayland-scanner
To install all of these in Fedora, run this command: To install all of these in Fedora, run this command:
```
```sh
sudo dnf install wayland-devel wayland-protocols-devel hyprlang-devel pango-devel cairo-devel file-devel libglvnd-devel libglvnd-core-devel libjpeg-turbo-devel libwebp-devel gcc-c++ hyprutils-devel hyprwayland-scanner sudo dnf install wayland-devel wayland-protocols-devel hyprlang-devel pango-devel cairo-devel file-devel libglvnd-devel libglvnd-core-devel libjpeg-turbo-devel libwebp-devel gcc-c++ hyprutils-devel hyprwayland-scanner
``` ```
On Arch: On Arch:
```
```sh
sudo pacman -S ninja gcc wayland-protocols libjpeg-turbo libwebp pango cairo pkgconf cmake libglvnd wayland hyprutils hyprwayland-scanner hyprlang sudo pacman -S ninja gcc wayland-protocols libjpeg-turbo libwebp pango cairo pkgconf cmake libglvnd wayland hyprutils hyprwayland-scanner hyprlang
``` ```
On OpenSUSE: On OpenSUSE:
```
```sh
sudo zypper install ninja gcc-c++ wayland-protocols-devel Mesa-libGLESv3-devel file-devel hyprutils-devel hyprwayland-scanner sudo zypper install ninja gcc-c++ wayland-protocols-devel Mesa-libGLESv3-devel file-devel hyprutils-devel hyprwayland-scanner
``` ```
@ -101,9 +104,9 @@ wallpaper = monitor, /home/me/amongus.png
wallpaper = , /home/me/amongus.png wallpaper = , /home/me/amongus.png
``` ```
Monitor names can be checked with `hyprctl monitors` Monitor names can be checked with `hyprctl monitors`.
Also can be used with `desc:` followed by the monitor's description without the (PORT) at the end Also can be used with `desc:` followed by the monitor's description without the (PORT) at the end.
You may add `contain:` or `tile:` before the file path in `wallpaper =` to set the mode to either contain or tile, respectively, instead of cover: You may add `contain:` or `tile:` before the file path in `wallpaper =` to set the mode to either contain or tile, respectively, instead of cover:

View file

@ -7,4 +7,3 @@ hyprwayland-scanner, also called hw-s, is a utility to generate sources and head
for wayland protocol specifications. for wayland protocol specifications.
It is similar to wayland-scanner, but instead of C, it generates neat and safe C++ implementations. It is similar to wayland-scanner, but instead of C, it generates neat and safe C++ implementations.

View file

@ -173,7 +173,7 @@ logs.
If you see a crash, it's likely you are missing either `qt6-wayland` or If you see a crash, it's likely you are missing either `qt6-wayland` or
`qt5-wayland`. `qt5-wayland`.
If the portal does not autostart, does not function when manually started, If the portal does not autostart, does not function when manually started,
and does not produce any error logs, it's very likely your [XDG env variables](../../Configuring/Environment-variables/#xdg-specifications) and does not produce any error logs, it's very likely your [XDG env variables](../../Configuring/Environment-variables/#xdg-specifications)
are messed up are messed up

View file

@ -52,15 +52,15 @@ in the `nix develop` shell.
For CMake: For CMake:
```bash ```bash
$ cmakeConfigurePhase # to run the CMake configure phase cmakeConfigurePhase # to run the CMake configure phase
$ ninjaBuildPhase # to run the Ninja build phase (or buildPhase when ninja is not available) ninjaBuildPhase # to run the Ninja build phase (or buildPhase when ninja is not available)
$ ninjaInstallPhase # to run the Ninja install phase (or installPhase when ninja is not available) ninjaInstallPhase # to run the Ninja install phase (or installPhase when ninja is not available)
``` ```
For Meson: For Meson:
```bash ```bash
$ mesonConfigurePhase # to run the Meson configure phase mesonConfigurePhase # to run the Meson configure phase
$ ninjaBuildPhase # to run the Ninja build phase ninjaBuildPhase # to run the Ninja build phase
$ mesonInstallPhase # to run the Meson install phase mesonInstallPhase # to run the Meson install phase
``` ```

View file

@ -19,7 +19,7 @@ currently an alpha stage attempt to open source a part of their closed source
driver for newer cards. driver for newer cards.
If the proprietary drivers support your graphics card, it's generally recommended If the proprietary drivers support your graphics card, it's generally recommended
to use them instead, as it has significantly improved performance to use them instead, as it has significantly improved performance
and power management for newer GPUs. and power management for newer GPUs.
However, keep in mind that if the proprietary Nvidia drivers do not work However, keep in mind that if the proprietary Nvidia drivers do not work
@ -39,18 +39,18 @@ One issue is with [suspend](https://github.com/NVIDIA/open-gpu-kernel-modules/is
You can choose between the `nvidia` or the `nvidia-dkms` package. There are pros and cons You can choose between the `nvidia` or the `nvidia-dkms` package. There are pros and cons
for each, but it is generally recommended to use the `dkms` package, for each, but it is generally recommended to use the `dkms` package,
as you won't have to rebuild the initramfs [manually](https://wiki.archlinux.org/title/NVIDIA#mkinitcpio) every time the kernel and drivers update, for example. as you won't have to rebuild the initramfs [manually](https://wiki.archlinux.org/title/NVIDIA#mkinitcpio) every time the kernel and drivers update, for example.
If you're using a kernel that isn't `linux` or `linux-lts`, the `dkms` package is *required*. If you're using a kernel that isn't `linux` or `linux-lts`, the `dkms` package is _required_.
## Installation ## Installation
Install the following packages: Install the following packages:
1. `nvidia` or `nvidia-dkms`: The driver itself. Optionally, the open source drivers 1. `nvidia` or `nvidia-dkms`: The driver itself. Optionally, the open source drivers
from NVIDIA can be installed as `nvidia-open` or `nvidia-open-dkms`. from NVIDIA can be installed as `nvidia-open` or `nvidia-open-dkms`.
2. `nvidia-utils`: The userspace graphics drivers. You need this for running Vulkan 2. `nvidia-utils`: The userspace graphics drivers. You need this for running Vulkan
applications. If you'd like to use apps like Steam or Wine, install `lib32-nvidia-utils` as well. applications. If you'd like to use apps like Steam or Wine, install `lib32-nvidia-utils` as well.
3. `egl-wayland` (`libnvidia-egl-wayland1` and `libnvidia-egl-gbm1` on Ubuntu): This is required 3. `egl-wayland` (`libnvidia-egl-wayland1` and `libnvidia-egl-gbm1` on Ubuntu): This is required
in order to enable compatibility between the EGL API and the Wayland protocol. in order to enable compatibility between the EGL API and the Wayland protocol.
## DRM kernel mode setting ## DRM kernel mode setting
@ -86,6 +86,7 @@ env = __GLX_VENDOR_LIBRARY_NAME,nvidia
``` ```
and set this variable: and set this variable:
```ini ```ini
cursor { cursor {
no_hardware_cursors = true no_hardware_cursors = true
@ -106,8 +107,8 @@ keep hardware cursors disabled.
## Finishing up ## Finishing up
Install a few packages to get some apps to function natively with Wayland for the Install a few packages to get some apps to function natively with Wayland for the
best compatibility and performance. best compatibility and performance.
See the [the Master Tutorial](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#force-apps-to-use-wayland). See the [the Master Tutorial](https://wiki.hyprland.org/Getting-Started/Master-Tutorial/#force-apps-to-use-wayland).
Reboot your computer. Reboot your computer.
@ -126,7 +127,7 @@ The install instructions are available in the README, however, a quick guide wil
be given here: be given here:
1. Install the package. On Arch, this is `libva-nvidia-driver` in the official 1. Install the package. On Arch, this is `libva-nvidia-driver` in the official
repos. repos.
2. Add this variable to your hyprland config: 2. Add this variable to your hyprland config:
```sh ```sh
@ -143,12 +144,12 @@ You can check the README to get it working for Firefox.
### Regarding environment variables ### Regarding environment variables
- If you encounter crashes in Firefox, remove the line - If you encounter crashes in Firefox, remove the line
`env = GBM_BACKEND,nvidia-drm`. `env = GBM_BACKEND,nvidia-drm`.
- If you face problems with Discord windows not displaying or screen sharing not - If you face problems with Discord windows not displaying or screen sharing not
working in Zoom, first try running them in Native Wayland (more details below). working in Zoom, first try running them in Native Wayland (more details below).
Otherwise, remove or comment the line Otherwise, remove or comment the line
`env = __GLX_VENDOR_LIBRARY_NAME,nvidia`. `env = __GLX_VENDOR_LIBRARY_NAME,nvidia`.
### Multi-monitor with hybrid graphics ### Multi-monitor with hybrid graphics
@ -180,7 +181,7 @@ For other apps, including CEF apps, you will need to launch them with these flag
To do this easily for Spotify, Arch Linux has a `spotify-launcher` packages To do this easily for Spotify, Arch Linux has a `spotify-launcher` packages
in their official repos. You should use that instead of the `spotify` in their official repos. You should use that instead of the `spotify`
package in the AUR. Then, enable the Wayland backend in package in the AUR. Then, enable the Wayland backend in
`/etc/spotify-launcher.conf` by uncommenting this line: `/etc/spotify-launcher.conf` by uncommenting this line:
```sh ```sh
@ -208,7 +209,7 @@ Wayland, the flickering will likely be solved in the 555 series of Nvidia driver
### Flickering in XWayland games ### Flickering in XWayland games
XWayland games may flicker or present frames out-of-order in a way which makes them unplayable. XWayland games may flicker or present frames out-of-order in a way which makes them unplayable.
This is due to the lack of implicit synchronization in the driver, and/or flaky explicit sync support This is due to the lack of implicit synchronization in the driver, and/or flaky explicit sync support
in newer ones. in newer ones.
@ -230,7 +231,7 @@ There are a few fixes:
Note that this forces performance mode to be active, resulting in Note that this forces performance mode to be active, resulting in
increased power-consumption (from 22W idle on a RTX 3070TI, to 74W). increased power-consumption (from 22W idle on a RTX 3070TI, to 74W).
This may not be needed for some users. Only apply these 'fixes' if you This may not be needed for some users. Only apply these 'fixes' if you
do notice flickering artifacts from being idle for ~5 seconds. do notice flickering artifacts from being idle for ~5 seconds.
Make a new file at `/etc/modprobe.d/nvidia.conf` and paste this in: Make a new file at `/etc/modprobe.d/nvidia.conf` and paste this in:
@ -244,9 +245,9 @@ Reboot your computer and it should be working.
If it does not, try: If it does not, try:
1. Lowering your monitor's refresh rate: This can stop the flickering 1. Lowering your monitor's refresh rate: This can stop the flickering
altogether. altogether.
2. Using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as 2. Using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as
mentioned above. mentioned above.
### Suspend/wakeup issues ### Suspend/wakeup issues

View file

@ -5,12 +5,12 @@ title: Clipboard managers
_Starting method:_ manual (`exec-once`) _Starting method:_ manual (`exec-once`)
Clipboard Managers provide a convenient way to organize and access previously Clipboard Managers provide a convenient way to organize and access previously
copied content, including both text and images. copied content, including both text and images.
Some common ones used are `cb`, `copyq`, `clipman`, `cliphist` and `clipse`. Some common ones used are `cb`, `copyq`, `clipman`, `cliphist` and `clipse`.
`cb` - Utilizes Wayland and stores text, images and files temporarily or `cb` - Utilizes Wayland and stores text, images and files temporarily or
indefinitely. Allows unlimited clipboards and history, JSON output and more. indefinitely. Allows unlimited clipboards and history, JSON output and more.
[GitHub](https://github.com/Slackadays/Clipboard) [GitHub](https://github.com/Slackadays/Clipboard)
@ -20,10 +20,10 @@ indefinitely. Allows unlimited clipboards and history, JSON output and more.
`cliphist` - Utilizes Wayland with `wl-clipboard` and can store both images and `cliphist` - Utilizes Wayland with `wl-clipboard` and can store both images and
text [GitHub](https://github.com/sentriz/cliphist) text [GitHub](https://github.com/sentriz/cliphist)
`wl-clip-persist` - When copying something on Wayland, the copied data remains `wl-clip-persist` - When copying something on Wayland, the copied data remains
in the clipboard until the application that was copied from is closed. in the clipboard until the application that was copied from is closed.
After that, the data disappears and can no longer be pasted. After that, the data disappears and can no longer be pasted.
To fix this problem, you can use `wl-clip-persist` which will preserve the data To fix this problem, you can use `wl-clip-persist` which will preserve the data
in the clipboard after the application is closed. in the clipboard after the application is closed.
[GitHub](https://github.com/Linus789/wl-clip-persist) [GitHub](https://github.com/Linus789/wl-clip-persist)
@ -34,6 +34,7 @@ image/text previews, multi-select, pinned items and more.
[GitHub](https://github.com/savedra1/clipse) [GitHub](https://github.com/savedra1/clipse)
## cb ## cb
Start by adding the following line to your `~/.config/hypr/hyprland.conf` Start by adding the following line to your `~/.config/hypr/hyprland.conf`
```ini ```ini
@ -152,12 +153,12 @@ exec-once = clipse -listen
``` ```
You can bind the TUI to a something nice like this: You can bind the TUI to a something nice like this:
```ini ```ini
windowrulev2 = float, class:(clipse) windowrulev2 = float, class:(clipse)
windowrulev2 = size 622 652, class:(clipse) windowrulev2 = size 622 652, class:(clipse)
bind = SUPER, V, exec, alacritty --class clipse -e clipse bind = SUPER, V, exec, alacritty --class clipse -e clipse
``` ```
Replace `alacritty` with the terminal environment you use if necessary. The Replace `alacritty` with the terminal environment you use if necessary. The
@ -166,4 +167,3 @@ GUI-like behavior.
For more details on `clipse`, please refer to its GitHub repo linked at the top For more details on `clipse`, please refer to its GitHub repo linked at the top
of the page. of the page.

View file

@ -7,12 +7,12 @@ title: File Managers
- [dolphin](https://github.com/KDE/dolphin): File manager by KDE. - [dolphin](https://github.com/KDE/dolphin): File manager by KDE.
- [nautilus](https://apps.gnome.org/en/Nautilus/): File manager by Gnome. - [nautilus](https://apps.gnome.org/en/Nautilus/): File manager by Gnome.
- [nautilus-admin-gtk4](https://github.com/MacTavishAO/nautilus-admin-gtk4): Open files with elevated privileges. - [nautilus-admin-gtk4](https://github.com/MacTavishAO/nautilus-admin-gtk4): Open files with elevated privileges.
- [nautilus-image-converter](https://gitlab.gnome.org/coreyberla/nautilus-image-converter): Resize and rotate images. - [nautilus-image-converter](https://gitlab.gnome.org/coreyberla/nautilus-image-converter): Resize and rotate images.
- [nautilus-open-any-terminal](https://github.com/Stunkymonkey/nautilus-open-any-terminal): Open terminals in selected directory. - [nautilus-open-any-terminal](https://github.com/Stunkymonkey/nautilus-open-any-terminal): Open terminals in selected directory.
- [nemo](https://github.com/linuxmint/nemo): File manager by Cinnamon. - [nemo](https://github.com/linuxmint/nemo): File manager by Cinnamon.
- [nemo-fileroller](https://github.com/linuxmint/nemo-extensions/tree/master/nemo-fileroller): File archiver extension. - [nemo-fileroller](https://github.com/linuxmint/nemo-extensions/tree/master/nemo-fileroller): File archiver extension.
- [nemo-terminal](https://github.com/linuxmint/nemo-extensions/tree/master/nemo-terminal): Embedded terminal window. - [nemo-terminal](https://github.com/linuxmint/nemo-extensions/tree/master/nemo-terminal): Embedded terminal window.
- [pcmanfm](https://github.com/lxde/pcmanfm): File manager by LXDE. - [pcmanfm](https://github.com/lxde/pcmanfm): File manager by LXDE.
- [thunar](https://github.com/neilbrown/thunar): File manager by XFCE. - [thunar](https://github.com/neilbrown/thunar): File manager by XFCE.
@ -21,4 +21,4 @@ title: File Managers
- [nnn](https://github.com/jarun/nnn): n³ The Unorthodox terminal file manager. - [nnn](https://github.com/jarun/nnn): n³ The Unorthodox terminal file manager.
- [ranger](https://github.com/ranger/ranger): A VIM-inspired filemanager for the console. - [ranger](https://github.com/ranger/ranger): A VIM-inspired filemanager for the console.
- [superfile](https://github.com/yorukot/superfile): Pretty fancy and modern terminal file manager. - [superfile](https://github.com/yorukot/superfile): Pretty fancy and modern terminal file manager.
- [yazi](https://yazi-rs.github.io/): Blazing fast terminal file manager written in Rust, based on async I/O. - [yazi](https://yazi-rs.github.io/): Blazing fast terminal file manager written in Rust, based on async I/O.

View file

@ -1,3 +1,7 @@
---
weight: 12
title: Hypr Ecosystem
---
The hypr ecosystem is a collection of apps developed by HyprWM, that are The hypr ecosystem is a collection of apps developed by HyprWM, that are
designed for Hyprland and to integrate with it as nicely as possible. designed for Hyprland and to integrate with it as nicely as possible.

View file

@ -29,11 +29,12 @@ for Hyprland's IPC written in Rust.
### Screen shaders/color temperature ### Screen shaders/color temperature
- [hyprshade](https://github.com/loqusion/hyprshade) by _loqusion_: Utility for - [hyprshade](https://github.com/loqusion/hyprshade) by _loqusion_: Utility for
swapping and scheduling screen shaders; also functions as an swapping and scheduling screen shaders; also functions as an
[automatic color temperature shifter](https://en.wikipedia.org/wiki/F.lux). [automatic color temperature shifter](https://en.wikipedia.org/wiki/F.lux).
- [gammastep](https://gitlab.com/chinstrap/gammastep) by _Chinstrap_: Control temperature color automatically depending on the time of the day and location. - [gammastep](https://gitlab.com/chinstrap/gammastep) by _Chinstrap_: Control temperature color automatically depending on the time of the day and location.
### Wireless settings ### Wireless settings
- [iwgtk](https://github.com/J-Lentz/iwgtk) by _Jesse Lentz_: WiFi settings frontend for `iwd` in GTK - [iwgtk](https://github.com/J-Lentz/iwgtk) by _Jesse Lentz_: WiFi settings frontend for `iwd` in GTK
- [blueberry](https://github.com/linuxmint/blueberry) by _Linux Mint_: Bluetooth settings frontend in GTK - [blueberry](https://github.com/linuxmint/blueberry) by _Linux Mint_: Bluetooth settings frontend in GTK
- [Overskride](https://github.com/kaii-lb/overskride) by _kaii-lb_: A simple yet powerful bluetooth client in GTK4 - [Overskride](https://github.com/kaii-lb/overskride) by _kaii-lb_: A simple yet powerful bluetooth client in GTK4

View file

@ -139,24 +139,24 @@ workspaces. It requires [bash](https://linux.die.net/man/1/bash),
```sh ```sh
#!/usr/bin/env bash #!/usr/bin/env bash
function clamp { function clamp {
min=$1 min=$1
max=$2 max=$2
val=$3 val=$3
python -c "print(max($min, min($val, $max)))" python -c "print(max($min, min($val, $max)))"
} }
direction=$1 direction=$1
current=$2 current=$2
if test "$direction" = "down" if test "$direction" = "down"
then then
target=$(clamp 1 10 $(($current+1))) target=$(clamp 1 10 $(($current+1)))
echo "jumping to $target" echo "jumping to $target"
hyprctl dispatch workspace $target hyprctl dispatch workspace $target
elif test "$direction" = "up" elif test "$direction" = "up"
then then
target=$(clamp 1 10 $(($current-1))) target=$(clamp 1 10 $(($current-1)))
echo "jumping to $target" echo "jumping to $target"
hyprctl dispatch workspace $target hyprctl dispatch workspace $target
fi fi
``` ```
@ -177,13 +177,13 @@ socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket
#!/usr/bin/env bash #!/usr/bin/env bash
spaces (){ spaces (){
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries') WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries')
seq 1 10 | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})' seq 1 10 | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})'
} }
spaces spaces
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
spaces spaces
done done
``` ```