treewide: fix grammar/punctuation + rewrites (#605)

This commit is contained in:
phonetic112 2024-04-21 10:35:48 -04:00 committed by GitHub
parent d4121fb7dc
commit f1dbaf0a65
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 268 additions and 317 deletions

View file

@ -8,9 +8,7 @@ title: Animations
Animations are declared with the `animation` keyword. Animations are declared with the `animation` keyword.
```ini ```ini
animation=NAME,ONOFF,SPEED,CURVE,STYLE animation=NAME,ONOFF,SPEED,CURVE[,STYLE]
or
animation=NAME,ONOFF,SPEED,CURVE
``` ```
`ONOFF` can be either 0 or 1, 0 to disable, 1 to enable. _note:_ if it's 0, you `ONOFF` can be either 0 or 1, 0 to disable, 1 to enable. _note:_ if it's 0, you

View file

@ -15,7 +15,7 @@ for example,
bind=SUPER_SHIFT,Q,exec,firefox bind=SUPER_SHIFT,Q,exec,firefox
``` ```
will bind opening firefox to <key>SUPER</key> + <key>SHIFT</key> + <key>Q</key> will bind opening Firefox to <key>SUPER</key> + <key>SHIFT</key> + <key>Q</key>
{{< callout type=info >}} {{< callout type=info >}}
@ -41,7 +41,7 @@ for all the keysyms. The name you should use is the segment after `XKB_KEY_`.
If you are unsure of what your key's name is, you can use `xev` or `wev` to find If you are unsure of what your key's name is, you can use `xev` or `wev` to find
that information. that information.
If you want to bind by a keycode, you can just input it in the KEY position with If you want to bind by a keycode, you can put it in the KEY position with
a `code:` prefix, e.g.: a `code:` prefix, e.g.:
```ini ```ini
@ -111,7 +111,7 @@ 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" bindl=,switch:off:[switch name],exec,hyprctl keyword monitor "eDP-1, 2560x1600, 0x0, 1"
``` ```
check out your switches in `hyprctl devices`. You can view your switches in `hyprctl devices`.
### Multiple binds to one key ### Multiple binds to one key
@ -143,7 +143,7 @@ bindrl=MOD,KEY,exec,amongus
Flags: Flags:
```ini ```ini
l -> locked, aka. works also 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.
n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher. n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
@ -169,14 +169,14 @@ bindr=SUPER, SUPER_L, exec, pkill wofi || wofi
## Mouse Binds ## Mouse Binds
Mouse binds are binds that heavily rely on a mouse, usually its movement. They Mouse binds are binds that rely on mouse movement. They
will have one less arg, and look for example like this: will have one less arg, and may look like this:
```ini ```ini
bindm=ALT,mouse:272,movewindow bindm=ALT,mouse:272,movewindow
``` ```
this will create a bind with <key>ALT</key> + <key>LMB</key> to move the window This will create a bind with <key>ALT</key> + <key>LMB</key> to move the window
with your mouse. with your mouse.
_Available mouse binds_: _Available mouse binds_:
@ -242,10 +242,9 @@ Will pass MOUSE5 to TeamSpeak3.
{{< callout >}} {{< callout >}}
XWayland is a bit wonky. Make sure that what you're passing is a "global Xorg This works flawlessly with all native Wayland applications. However, XWayland is a bit wonky.
keybind", otherwise passing from a different XWayland app may not work. Make sure that what you're passing is a "global Xorg keybind",
otherwise passing from a different XWayland app may not work.
It works flawlessly with all native Wayland applications though.
{{< /callout >}} {{< /callout >}}
@ -276,9 +275,9 @@ Please note that this function will _only_ work with
## Submaps ## Submaps
If you want keybind submaps, also known as _modes_ or _groups_, for example if Keybind submaps, also known as _modes_ or _groups_, allow you to activate a
you press <key>ALT</key> + <key>R</key>, you can enter a "resize" mode, resize seperate set of keybinds. For example, if you want to enter a "resize" mode
with arrow keys, and leave with escape, do it like this: which allows you to resize windows with the arrow keys, you can do it like this:
```ini ```ini
# will switch to a submap called resize # will switch to a submap called resize
@ -296,7 +295,7 @@ binde=,down,resizeactive,0 10
# use reset to go back to the global submap # use reset to go back to the global submap
bind=,escape,submap,reset bind=,escape,submap,reset
# will reset the submap, meaning end the current one and return to the global one # will reset the submap, which will return to the global submap
submap=reset submap=reset
# keybinds further down will be global again... # keybinds further down will be global again...

View file

@ -14,7 +14,7 @@ one. You can find an example config
By removing the line `autogenerated=1` you'll remove the yellow warning. By removing the line `autogenerated=1` you'll remove the yellow warning.
There is no "reload" keybind. The config is reloaded the moment you save it. The config is reloaded the moment you save it. However, you can use `hyprctl reload` to reload the config manually.
Start a section with `name {` and end in `}` **_in separate lines!_** Start a section with `name {` and end in `}` **_in separate lines!_**

View file

@ -29,7 +29,7 @@ layout pages (See the sidebar).
| closewindow | closes a specified window | window | | closewindow | closes a specified window | window |
| workspace | changes the workspace | workspace | | workspace | changes the workspace | workspace |
| movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window | | movetoworkspace | moves the focused window to a workspace | workspace OR `workspace,window` for a specific window |
| movetoworkspacesilent | same as above, but doesnt switch to the workspace | workspace OR `workspace,window` for a specific window | | movetoworkspacesilent | same as above, but doesn't switch to the workspace | workspace OR `workspace,window` for a specific window |
| togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window | | togglefloating | toggles the current window's floating state | left empty / `active` for current, or `window` for a specific window |
| setfloating | sets the current window's floating state to true | left empty / `active` for current, or `window` for a specific window | | setfloating | sets the current window's floating state to true | left empty / `active` for current, or `window` for a specific window |
| settiled | sets the current window's floating state to false | left empty / `active` for current, or `window` for a specific window | | settiled | sets the current window's floating state to false | left empty / `active` for current, or `window` for a specific window |
@ -102,13 +102,13 @@ The new groups border colors are configurable with the appropriate `col.`
settings in the `group` config section. settings in the `group` config section.
You can lock a group with the `lockactivegroup` dispatcher in order to stop new You can lock a group with the `lockactivegroup` dispatcher in order to stop new
window from entering this group. In addition, the `lockgroups` dispatcher can be windows from entering this group. In addition, the `lockgroups` dispatcher can be
used to toggle an independent global group lock that will prevent new window used to toggle an independent global group lock that will prevent new windows
from entering any groups, regardless of their local group lock stat. from entering any groups, regardless of their local group lock stat.
You can prevent a window from being added to group or becoming a group with the You can prevent a window from being added to a group or becoming a group with the
`denywindowfromgroup` dispatcher. `movewindoworgroup` will behave like `denywindowfromgroup` dispatcher. `movewindoworgroup` will behave like
`movewindow` if current active window or window in direction has this property `movewindow` if the current active window or window in direction has this property
set. set.
## Workspaces ## Workspaces
@ -173,8 +173,8 @@ bind = SUPER, C, movetoworkspace, special
## Executing with rules ## Executing with rules
The `exec` dispatcher supports adding rules. Please note some windows might work The `exec` dispatcher supports adding rules. Please note some windows might work
better, some worse. It records the PID of the spawned process and uses that. If better, some worse. It records the PID of the spawned process and uses that. For example, if
your process e.g. forks and then the fork opens a window, this will not work. your process forks and then the fork opens a window, this will not work.
The syntax is: The syntax is:

View file

@ -44,7 +44,7 @@ Dispatcher `layoutmsg` params:
| --- | --- | --- | | --- | --- | --- |
| togglesplit | toggles the split (top/side) of the current window. `preserve_split` must be enabled for toggling to work. | none | | togglesplit | toggles the split (top/side) of the current window. `preserve_split` must be enabled for toggling to work. | none |
| swapsplit | swaps the two halves of the split of the current window. | none | | swapsplit | swaps the two halves of the split of the current window. | none |
| preselect | A onetime override for the split direction. (valid for the next window to be opened, only works on tiled windows) | direction | | preselect | A one-time override for the split direction. (valid for the next window to be opened, only works on tiled windows) | direction |
e.g.: e.g.:

View file

@ -29,8 +29,8 @@ three_param_keyword = A, B, # OK
## Executing ## Executing
you can execute a shell script on startup of the compositor or on each time it's You can execute a shell script on startup of the compositor or every time
reloaded. the config is reloaded.
`exec-once=command` will execute only on launch `exec-once=command` will execute only on launch
@ -38,25 +38,25 @@ reloaded.
## Defining variables ## Defining variables
You can define your own custom variables like this: You can define your own custom variables using a dollar sign (`$`):
```ini ```ini
$VAR = value $VAR = value
``` ```
for example: For example:
```ini ```ini
$MyFavoriteGame = Among Us $MyFavoriteGame = Among Us
``` ```
then, to use them, simply use them. For example: Then you can reference them in the rest of the config. For example:
```ini ```ini
col.active_border=$MyColor col.active_border=$MyColor
``` ```
You ARE allowed to do this: You are allowed to combine variables in-place with other strings, like this:
```ini ```ini
col.active_border=ff$MyRedValue1111 col.active_border=ff$MyRedValue1111
@ -145,7 +145,7 @@ In that case you'll need to type the symbol specified in the bind to activate it
## Wallpapers ## Wallpapers
The hyprland background you see when you first start Hyprland is **NOT A The "Hyprland" background you see when you first start Hyprland is **NOT A
WALLPAPER**, it's the default image rendered at the bottom of the render stack. WALLPAPER**, it's the default image rendered at the bottom of the render stack.
To set a wallpaper, use a wallpaper utility like To set a wallpaper, use a wallpaper utility like
@ -167,7 +167,7 @@ layerrule = blur,NAMESPACE
layerrule = blur,address:0x<ADDRESS> layerrule = blur,address:0x<ADDRESS>
``` ```
you can get the namespace / address from `hyprctl layers`. You can get the namespace / address from `hyprctl layers`.
To remove a layer rule (useful in dynamic situations) use: To remove a layer rule (useful in dynamic situations) use:

View file

@ -5,7 +5,7 @@ title: Master Layout
The master layout makes one (or more) window(s) be the "master", taking (by The master layout makes one (or more) window(s) be the "master", taking (by
default) the left part of the screen, and tiles the rest on the right. You can default) the left part of the screen, and tiles the rest on the right. You can
change the orientation on per-workspace basis if you want to use anything other change the orientation on a per-workspace basis if you want to use anything other
than the default left/right split. than the default left/right split.
![master1](https://user-images.githubusercontent.com/43317083/179357849-321f042c-f536-44b3-9e6f-371df5321836.gif) ![master1](https://user-images.githubusercontent.com/43317083/179357849-321f042c-f536-44b3-9e6f-371df5321836.gif)
@ -54,11 +54,11 @@ _category name `master`_
| rollnext | rotate the next window in stack to be the master, while keeping the focus on master | none | | rollnext | rotate the next window in stack to be the master, while keeping the focus on master | none |
| rollprev | rotate the previous window in stack to be the master, while keeping the focus on master | none | | rollprev | rotate the previous window in stack to be the master, while keeping the focus on master | none |
params for the commands are separated by a single space Parameters for the commands are separated by a single space.
{{< callout type=info >}} {{< callout type=info >}}
example usage: Example usage:
```ini ```ini
bind=MOD,KEY,layoutmsg,cyclenext bind=MOD,KEY,layoutmsg,cyclenext

View file

@ -5,7 +5,7 @@ title: Monitors
## General ## General
The general config of a monitor looks like this The general config of a monitor looks like this:
```ini ```ini
monitor=name,resolution,position,scale monitor=name,resolution,position,scale
@ -17,7 +17,7 @@ A common example:
monitor=DP-1,1920x1080@144,0x0,1 monitor=DP-1,1920x1080@144,0x0,1
``` ```
will tell Hyprland to make the monitor on `DP-1` a `1920x1080` display, at This will make the monitor on `DP-1` a `1920x1080` display, at
144Hz, `0x0` off from the top left corner, with a scale of 1 (unscaled). 144Hz, `0x0` off from the top left corner, with a scale of 1 (unscaled).
To list all available monitors (active and inactive): To list all available monitors (active and inactive):
@ -57,7 +57,7 @@ monitor=DP-2, 1920x1080, -1920x0, 1
The position is calculated with the scaled (and transformed) resolution, meaning 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 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 use the position `1920x0` for the second screen (3840 / 2). If the monitor is
also rotated 90 degrees (vertical), you'd use `1080x0`. also rotated 90 degrees (vertical), you'd use `1080x0`.
{{</ callout >}} {{</ callout >}}
@ -65,8 +65,10 @@ also rotated 90 degrees (vertical), you'd use `1080x0`.
Leaving the name empty will define a fallback rule to use when no other rules Leaving the name empty will define a fallback rule to use when no other rules
match. match.
You can use `preferred` as a resolution to use the display's preferred size and You can use `preferred` as a resolution to use the display's preferred size,
`auto` as a position to let Hyprland decide on a position for you. or you can use `highres` or `highrr` to get the best possible resolution or refresh rate for your monitor.
You can use `auto` as a position to let Hyprland decide on a position for you.
You can also use `auto` as a scale to let Hyprland decide on a scale for you. You can also use `auto` as a scale to let Hyprland decide on a scale for you.
These depend on the PPI of the monitor. These depend on the PPI of the monitor.
@ -80,21 +82,6 @@ monitor=,preferred,auto,1
Will make any monitor that was not specified with an explicit rule automatically Will make any monitor that was not specified with an explicit rule automatically
placed on the right of the other(s) with its preferred resolution. placed on the right of the other(s) with its preferred resolution.
Alternatively, you can use the `highres` or `highrr` rules in order to get the
best possible resolution or refreshrate mix.
for a focus on refreshrate use this:
```ini
monitor=,highrr,auto,1
```
for a focus on resolution this:
```ini
monitor=,highres,auto,1
```
For more specific rules, you can also use the output's description (see For more specific rules, you can also use the output's description (see
`hyprctl monitors` for more details). If the output of `hyprctl monitors` looks `hyprctl monitors` for more details). If the output of `hyprctl monitors` looks
like the following: like the following:
@ -145,14 +132,15 @@ screensaver style (just turn off the monitor) use the `dpms`
## Custom reserved area ## Custom reserved area
If your workflow requires custom reserved area, you can add it with A reserved area is an area that remains unoccupied by tiled windows.
If your workflow requires a custom reserved area, you can add it with:
```ini ```ini
monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT
``` ```
Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers in pixels of the reserved area
to add. This does stack on top of the calculated one, (e.g. bars) but you may to add. This does stack on top of the calculated one (e.g. bars), but you may
only use one of these rules per monitor in the config. only use one of these rules per monitor in the config.
## Extra args ## Extra args
@ -163,7 +151,7 @@ You can combine extra arguments at the end of the monitor rule, examples:
monitor=eDP-1,2880x1800@90,0x0,1,transform,1,mirror,DP-2,bitdepth,10 monitor=eDP-1,2880x1800@90,0x0,1,transform,1,mirror,DP-2,bitdepth,10
``` ```
See bellow for more detail about each argument. See below for more detail about each argument.
### Mirrored displays ### Mirrored displays
@ -221,24 +209,6 @@ flipped + 180 degrees -> 6
flipped + 270 degrees -> 7 flipped + 270 degrees -> 7
``` ```
{{< callout type=info >}}
If you're using a touchscreen, you'll also have to rotate its digitizer to
match:
```ini
input {
touchdevice {
transform = 1
}
}
```
This will be done automatically when
[#3544](https://github.com/hyprwm/Hyprland/pull/3544) lands.
{{< /callout >}}
## Default workspace ## Default workspace
See [Workspace Rules](../Workspace-Rules). See [Workspace Rules](../Workspace-Rules).

View file

@ -5,7 +5,7 @@ title: Multi-GPU
## General ## General
If your host machine uses multiple GPUs, you may want to primarily use one GPU If your host machine uses multiple GPUs, you may want to use one GPU
for rendering all the elements for Hyprland including windows, animations, and for rendering all the elements for Hyprland including windows, animations, and
another for hardware acceleration for certain applications, etc. another for hardware acceleration for certain applications, etc.
@ -54,7 +54,7 @@ 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 renderer as this preserves battery life and is practically indistinguishable
from using the dedicated GPU on modern systems in most cases. Hyprland can be 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 run on integrated GPUs just fine. The same principle applies for desktop setups
with a lower and higher power rating GPUs respectively. with lower and higher power rating GPUs respectively.
{{< /callout >}} {{< /callout >}}

View file

@ -10,8 +10,8 @@ you stumble upon problems or you do not care that much about animations.
Wayland fractional scaling is a lot better than before, but it is not perfect. Wayland fractional scaling is a lot better than before, but it is not perfect.
Some applications do not support it yet or the support is experimental at best. Some applications do not support it yet or the support is experimental at best.
If you have problems with your graphics card having high usage and hyprland If you have problems with your graphics card having high usage or Hyprland
feeling laggy then try setting the scaling to integer numbers such as `1` or `2` feeling laggy, try setting the scaling to integer numbers such as `1` or `2`
like in this example `monitor=,preferred,auto,2`. like in this example `monitor=,preferred,auto,2`.
## Low FPS/stutter/FPS drops on Intel iGPU with TLP (mainly laptops) ## Low FPS/stutter/FPS drops on Intel iGPU with TLP (mainly laptops)

View file

@ -58,7 +58,7 @@ See the likely culprits below.
### No tearing at all ### No tearing at all
Make sure your windowrules are matching and you have the master toggle enabled. Make sure your window rules are matching and you have the master toggle enabled.
Also make sure nothing except for your game is showing on your monitor. No Also make sure nothing except for your game is showing on your monitor. No
notifications, overlays, lockscreens, bars, other windows, etc. (on a different notifications, overlays, lockscreens, bars, other windows, etc. (on a different
@ -78,13 +78,7 @@ Likely issue with your graphics driver.
Please _do not_ report issues if this is the culprit. Unfortunately, it's most Please _do not_ report issues if this is the culprit. Unfortunately, it's most
likely your GPU driver's fault. likely your GPU driver's fault.
Could be the below as well ### Other graphical issues/Hyprland instantly crashes on launch
### Other graphical issues
or
### Hyprland instantly crashes on launch
Likely issue with `WLR_DRM_NO_ATOMIC`. Likely issue with `WLR_DRM_NO_ATOMIC`.

View file

@ -25,9 +25,9 @@ For live event handling, see the [socket2](../../IPC/).
## Commands ## Commands
### Dispatch ### dispatch
issue a `dispatch` to call a keybind dispatcher with an arg. Issue a `dispatch` to call a keybind dispatcher with an arg.
An arg has to be present, for dispatchers without parameters it can be anything. An arg has to be present, for dispatchers without parameters it can be anything.
@ -49,7 +49,7 @@ Returns: `ok` on success, an error message on fail.
See [Dispatchers](../Dispatchers) for a list of dispatchers. See [Dispatchers](../Dispatchers) for a list of dispatchers.
### Keyword ### keyword
issue a `keyword` to call a config keyword dynamically. issue a `keyword` to call a config keyword dynamically.
@ -65,13 +65,13 @@ hyprctl keyword monitor DP-3,1920x1080@144,0x0,1
Returns: `ok` on success, an error message on fail. Returns: `ok` on success, an error message on fail.
### Reload ### reload
issue a `reload` to force reload the config. Issue a `reload` to force reload the config.
### kill ### kill
issue a `kill` to get into a kill mode, where you can kill an app by clicking on Issue a `kill` to get into a kill mode, where you can kill an app by clicking on
it. You can exit it with ESCAPE. it. You can exit it with ESCAPE.
Kind of like xkill. Kind of like xkill.
@ -142,7 +142,7 @@ where `CMD` is either `next` for next, `prev` for previous, or `ID` for a
specific one (in the above case, `us`: 0, `pl`: 1, `de`: 2). You can find the specific one (in the above case, `us`: 0, `pl`: 1, `de`: 2). You can find the
`DEVICE` using `hyprctl devices` command. `DEVICE` using `hyprctl devices` command.
example command for a typical keyboard: Example command for a typical keyboard:
```sh ```sh
hyprctl switchxkblayout at-translated-set-2-keyboard next hyprctl switchxkblayout at-translated-set-2-keyboard next
@ -173,7 +173,7 @@ Sets the hyprctl error string. Will reset when Hyprland's config is reloaded.
hyprctl seterror 'rgba(66ee66ff)' hello world this is my problem hyprctl seterror 'rgba(66ee66ff)' hello world this is my problem
``` ```
or disable: To disable:
```sh ```sh
hyprctl seterror disable hyprctl seterror disable
@ -270,23 +270,23 @@ hyprctl dismissnotify -1 # dismiss all notifications (same as no arguments)
## Info ## Info
```plain ```plain
version - prints the hyprland version, meaning flags, commit and branch of build. version - prints the Hyprland version along with flags, commit and branch of build.
monitors - lists active outputs with their properties, 'monitors all' lists active and inactive outputs monitors - lists active outputs with their properties, 'monitors all' lists active and inactive outputs
workspaces - lists all workspaces with their properties workspaces - lists all workspaces with their properties
activeworkspace - gets the active workspace and its properties activeworkspace - gets the active workspace and its properties
workspacerules - gets the list of defined workspace rules workspacerules - gets the list of defined workspace rules
clients - lists all windows with their properties clients - lists all windows with their properties
devices - lists all connected keyboards and mice devices - lists all connected keyboards and mice
decorations [window]- lists all decorations and their info decorations [window] - lists all decorations and their info
binds - lists all registered binds binds - lists all registered binds
activewindow - gets the active window name and its properties activewindow - gets the active window name and its properties
layers - lists all the layers layers - lists all the layers
splash - prints the current random splash splash - prints the current random splash
getoption [option] - gets the config option status (values) getoption [option] - gets the config option status (values)
cursorpos - gets the current cursor pos in global layout coordinates cursorpos - gets the current cursor position in global layout coordinates
animations - gets the current config'd info about animations and beziers animations - gets the currently configured info about animations and beziers
instances - lists all running instances of hyprland with their info instances - lists all running instances of Hyprland with their info
layouts - lists all layouts available (including plugin'd ones) layouts - lists all layouts available (including from plugins)
configerrors - lists all current config parsing errors configerrors - lists all current config parsing errors
rollinglog - prints tail of the log rollinglog - prints tail of the log
``` ```
@ -301,11 +301,11 @@ hyprctl getoption general:border_size
hyprctl getoption input:touchpad:disable_while_typing hyprctl getoption input:touchpad:disable_while_typing
``` ```
See [Variables](../Variables) for section and options you can use. See [Variables](../Variables) for sections and options you can use.
## Batch ## Batch
You can also use `--batch` to specify a batch of commands to execute You can also use `--batch` to specify a batch of commands to execute.
e.g. e.g.

View file

@ -20,7 +20,7 @@ the layout pages and not here. (See the Sidebar for Dwindle and Master layouts)
| bool | boolean, `true` or `false` (`yes` or `no`, `on` or `off`, `0` or `1`) - any numerical value that is not `0` or `1` will cause undefined behavior. | | bool | boolean, `true` or `false` (`yes` or `no`, `on` or `off`, `0` or `1`) - any numerical value that is not `0` or `1` will cause undefined behavior. |
| float | floating point number | | float | floating point number |
| color | color (see hint below for color info) | | color | color (see hint below for color info) |
| vec2 | vector with 2 values (float), separated by a space (e.g. `0 0` or `-10.9 99.1`) | | vec2 | vector with 2 float values, separated by a space (e.g. `0 0` or `-10.9 99.1`) |
| MOD | a string modmask (e.g. `SUPER` or `SUPERSHIFT` or `SUPER + SHIFT` or `SUPER and SHIFT` or `CTRL_SHIFT` or empty for none. You are allowed to put any separators you please except for a `,`) | | MOD | a string modmask (e.g. `SUPER` or `SUPERSHIFT` or `SUPER + SHIFT` or `SUPER and SHIFT` or `CTRL_SHIFT` or empty for none. You are allowed to put any separators you please except for a `,`) |
| str | a string | | str | a string |
| 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` | | 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` |
@ -176,21 +176,21 @@ _[More about Animations](../Animations)._
| kb_rules | Appropriate XKB keymap parameter | str | \[\[Empty\]\] | | kb_rules | Appropriate XKB keymap parameter | str | \[\[Empty\]\] |
| kb_file | If you prefer, you can use a path to your custom .xkb file. | str | \[\[Empty\]\] | | kb_file | If you prefer, you can use a path to your custom .xkb file. | str | \[\[Empty\]\] |
| numlock_by_default | Engage numlock by default. | bool | false | | numlock_by_default | Engage numlock by default. | bool | false |
| resolve_binds_by_sym | Determines how keybinds act when multiple layouts are used. If false, keybinds will always act as if the first specified layout were active. If true, keybinds specified by symbols activate if you type the respective symbol with the current layout. | bool | false | | resolve_binds_by_sym | Determines how keybinds act when multiple layouts are used. If false, keybinds will always act as if the first specified layout is active. If true, keybinds specified by symbols are activated when you type the respective symbol with the current layout. | bool | false |
| repeat_rate | The repeat rate for held-down keys, in repeats per second. | int | 25 | | repeat_rate | The repeat rate for held-down keys, in repeats per second. | int | 25 |
| repeat_delay | Delay before a held-down key is repeated, in milliseconds. | int | 600 | | repeat_delay | Delay before a held-down key is repeated, in milliseconds. | int | 600 |
| sensitivity | Sets the mouse input sensitivity. Value will be clamped to the range -1.0 to 1.0. [libinput#pointer-acceleration](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#pointer-acceleration) | float | 0.0 | | sensitivity | Sets the mouse input sensitivity. Value is clamped to the range -1.0 to 1.0. [libinput#pointer-acceleration](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#pointer-acceleration) | float | 0.0 |
| accel_profile | Sets the cursor acceleration profile. Can be one of `adaptive`, `flat`. Can also be `custom`, see [below](#custom-accel-profiles). Leave empty to use `libinput`'s default mode for your input device. [libinput#pointer-acceleration](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#pointer-acceleration) [adaptive/flat/custom]| str | \[\[Empty\]\] | accel_profile | Sets the cursor acceleration profile. Can be one of `adaptive`, `flat`. Can also be `custom`, see [below](#custom-accel-profiles). Leave empty to use `libinput`'s default mode for your input device. [libinput#pointer-acceleration](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#pointer-acceleration) [adaptive/flat/custom]| str | \[\[Empty\]\]
| force_no_accel | Force no cursor acceleration. This bypasses most of your pointer settings to get as raw of a signal as possible. **Enabling this is not recommended due to potential cursor desynchronization.** | bool | false | | force_no_accel | Force no cursor acceleration. This bypasses most of your pointer settings to get as raw of a signal as possible. **Enabling this is not recommended due to potential cursor desynchronization.** | bool | false |
| left_handed | Switches RMB and LMB | bool | false | | left_handed | Switches RMB and LMB | bool | false |
| scroll_points | Sets the scroll acceleration profile, when `accel_profile` is set to `custom`. Has to be in the form `<step> <points>`. Leave empty to have a flat scroll curve. | str | \[\[Empty\]\] | scroll_points | Sets the scroll acceleration profile, when `accel_profile` is set to `custom`. Has to be in the form `<step> <points>`. Leave empty to have a flat scroll curve. | str | \[\[Empty\]\]
| scroll_method | Sets the scroll method. Can be one of `2fg` (2 fingers), `edge`, `on_button_down`, `no_scroll`. [libinput#scrolling](https://wayland.freedesktop.org/libinput/doc/latest/scrolling.html) [2fg/edge/on_button_down/no_scroll] | str | \[\[Empty\]\] | scroll_method | Sets the scroll method. Can be one of `2fg` (2 fingers), `edge`, `on_button_down`, `no_scroll`. [libinput#scrolling](https://wayland.freedesktop.org/libinput/doc/latest/scrolling.html) [2fg/edge/on_button_down/no_scroll] | str | \[\[Empty\]\]
| scroll_button | Sets the scroll button. Has to be an int, cannot be a string. Check `wev` if you have any doubts regarding the ID. 0 means default. | int | 0 | | scroll_button | Sets the scroll button. Has to be an int, cannot be a string. Check `wev` if you have any doubts regarding the ID. 0 means default. | int | 0 |
| scroll_button_lock | If the scroll button lock is enabled, the button does not need to be held down. Pressing and releasing the button once enables the button lock, the button is now considered logically held down. Pressing and releasing the button a second time logically releases the button. While the button is logically held down, motion events are converted to scroll events. | bool | 0 | | scroll_button_lock | If the scroll button lock is enabled, the button does not need to be held down. Pressing and releasing the button toggles the button lock, which logically holds the button down or releases it. While the button is logically held down, motion events are converted to scroll events. | bool | 0 |
| scroll_factor | Multiplier added to scroll movement for external mice. Note that there is a separate setting for [touchpad scroll_factor](#touchpad). | float | 1.0 | | scroll_factor | Multiplier added to scroll movement for external mice. Note that there is a separate setting for [touchpad scroll_factor](#touchpad). | float | 1.0 |
| natural_scroll | Inverts scrolling direction. When enabled, scrolling moves content directly instead of manipulating a scrollbar. | bool | false | | natural_scroll | Inverts scrolling direction. When enabled, scrolling moves content directly, rather than manipulating a scrollbar. | bool | false |
| follow_mouse | Specify if and how cursor movement should affect window focus. See the note below. [0/1/2/3] | int | 1 | | follow_mouse | Specify if and how cursor movement should affect window focus. See the note below. [0/1/2/3] | int | 1 |
| mouse_refocus | If disabled and `follow_mouse=1` then mouse focus will not switch to the hovered window unless the mouse crosses a window boundary. | bool | true | | mouse_refocus | If disabled, mouse focus won't switch to the hovered window unless the mouse crosses a window boundary when `follow_mouse=1`. | bool | true |
| float_switch_override_focus | If enabled (1 or 2), focus will change to the window under the cursor when changing from tiled-to-floating and vice versa. If 2, focus will also follow mouse on float-to-float switches. | int | 1 | | float_switch_override_focus | If enabled (1 or 2), focus will change to the window under the cursor when changing from tiled-to-floating and vice versa. If 2, focus will also follow mouse on float-to-float switches. | int | 1 |
| special_fallthrough | if enabled, having only floating windows in the special workspace will not block focusing windows in the regular workspace. | bool | false | | special_fallthrough | if enabled, having only floating windows in the special workspace will not block focusing windows in the regular workspace. | bool | false |
| 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 | | 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 |
@ -226,7 +226,7 @@ For switchable keyboard configurations, take a look at
`custom <step> <points...>` `custom <step> <points...>`
for example `custom 200 0.0 0.5` Example: `custom 200 0.0 0.5`
#### `scroll_points` #### `scroll_points`
@ -234,7 +234,7 @@ NOTE: Only works when `accel_profile` is set to `custom`.
`<step> <points...>` `<step> <points...>`
For example `0.2 0.0 0.5 1 1.2 1.5` Example: `0.2 0.0 0.5 1 1.2 1.5`
To mimic the Windows acceleration curves, take a look at To mimic the Windows acceleration curves, take a look at
[this script](https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9). [this script](https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9).
@ -252,7 +252,7 @@ _Subcategory `input:touchpad:`_
| name | description | type | default | | name | description | type | default |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| disable_while_typing | Disable the touchpad while typing. | bool | true | | disable_while_typing | Disable the touchpad while typing. | bool | true |
| natural_scroll | Inverts scrolling direction. When enabled, scrolling moves content directly instead of manipulating a scrollbar. | bool | false | | natural_scroll | Inverts scrolling direction. When enabled, scrolling moves content directly, rather than manipulating a scrollbar. | bool | false |
| scroll_factor | Multiplier applied to the amount of scroll movement. | float | 1.0 | | scroll_factor | Multiplier applied to the amount of scroll movement. | float | 1.0 |
| middle_button_emulation | Sending LMB and RMB simultaneously will be interpreted as a middle click. This disables any touchpad area that would normally send a middle click based on location. [libinput#middle-button-emulation](https://wayland.freedesktop.org/libinput/doc/latest/middle-button-emulation.html) | bool | false | | middle_button_emulation | Sending LMB and RMB simultaneously will be interpreted as a middle click. This disables any touchpad area that would normally send a middle click based on location. [libinput#middle-button-emulation](https://wayland.freedesktop.org/libinput/doc/latest/middle-button-emulation.html) | bool | false |
| tap_button_map | Sets the tap button mapping for touchpad button emulation. Can be one of `lrm` (default) or `lmr` (Left, Middle, Right Buttons). [lrm/lmr] | str | \[\[Empty\]\] | | tap_button_map | Sets the tap button mapping for touchpad button emulation. Can be one of `lrm` (default) or `lmr` (Left, Middle, Right Buttons). [lrm/lmr] | str | \[\[Empty\]\] |
@ -267,8 +267,8 @@ _Subcategory `input:touchdevice:`_
| name | description | type | default | | name | description | type | default |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| transform | transform the input from touchdevices. The possible transformations are the same as [those of the monitors](../Monitors/#rotating) | int | 0 | | transform | Transform the input from touchdevices. The possible transformations are the same as [those of the monitors](../Monitors/#rotating) | int | 0 |
| output | the monitor to bind touch devices. The default is autodetection. To stop autotection use an empty string or the "\[\[Empty\]\]" value. | string | \[\[Auto\]\] | | output | The monitor to bind touch devices. The default is auto-detection. To stop auto-detection, use an empty string or the "\[\[Empty\]\]" value. | string | \[\[Auto\]\] |
| enabled | Whether input is enabled for touch devices. | bool | true | | enabled | Whether input is enabled for touch devices. | bool | true |
#### Tablet #### Tablet
@ -326,7 +326,7 @@ _Subcategory `group:groupbar:`_
| --- | --- | --- | --- | | --- | --- | --- | --- |
| enabled | enables groupbars | bool | true | | enabled | enables groupbars | bool | true |
| font_family | font used to display groupbar titles | string | Sans | | font_family | font used to display groupbar titles | string | Sans |
| font_size | font size for the above | 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 |
| priority | sets the decoration priority for groupbars | int | 3 | | priority | sets the decoration priority for groupbars | int | 3 |
@ -342,12 +342,12 @@ _Subcategory `group:groupbar:`_
| name | description | type | default | | name | description | type | default |
|---|---|---|---| |---|---|---|---|
| disable_hyprland_logo | disables the random hyprland logo / anime girl background. :( | bool | false | | disable_hyprland_logo | disables the random Hyprland logo / anime girl background. :( | bool | false |
| 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 |
| splash_font_family | Changes the font used to render the splash text, selected from system fonts (requires a monitor reload to take effect). | 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 | Sans |
| 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 on true 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 |
| mouse_move_enables_dpms | If DPMS is set to off, wake up the monitors if the mouse moves. | bool | false | | mouse_move_enables_dpms | If DPMS is set to off, wake up the monitors if the mouse moves. | bool | false |
| key_press_enables_dpms | If DPMS is set to off, wake up the monitors if a key is pressed. | bool | false | | key_press_enables_dpms | If DPMS is set to off, wake up the monitors if a key is pressed. | bool | false |
@ -367,7 +367,7 @@ _Subcategory `group:groupbar:`_
| suppress_portal_warnings | disables warnings about incompatible portal implementations. | bool | false | | suppress_portal_warnings | disables warnings about incompatible portal implementations. | bool | false |
| 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 |
| render_ahead_safezone | how many ms of safezone to add to rendering ahead of time. Recommended 1-2. | int | 1 | | render_ahead_safezone | how many ms of safezone to add to rendering ahead of time. Recommended 1-2. | int | 1 |
| cursor_zoom_factor | the factor to zoom by around the cursor. AKA. Magnifying glass. Minimum 1.0 (meaning no zoom) | float | 1.0 | | cursor_zoom_factor | the factor to zoom by around the cursor. Like a magnifying glass. Minimum 1.0 (meaning no zoom) | float | 1.0 |
| cursor_zoom_rigid | whether the zoom should follow the cursor rigidly (cursor is always centered if it can be) or loosely | bool | false | | cursor_zoom_rigid | whether the zoom should follow the cursor rigidly (cursor is always centered if it can be) or loosely | bool | false |
| allow_session_lock_restore | if true, will allow you to restart a lockscreen app in case it crashes (red screen of death) | bool | false | | allow_session_lock_restore | if true, will allow you to restart a lockscreen app in case it crashes (red screen of death) | bool | false |
| background_color | change the background color. (requires enabled `disable_hyprland_logo`) | color | 0x111111 | | background_color | change the background color. (requires enabled `disable_hyprland_logo`) | color | 0x111111 |
@ -380,7 +380,7 @@ _Subcategory `group:groupbar:`_
| name | description | type | default | | name | description | type | default |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| pass_mouse_when_bound | if disabled, will not pass the mouse events to apps / dragging windows around if a keybind has been triggered. | bool | false | | pass_mouse_when_bound | if disabled, will not pass the mouse events to apps / dragging windows around if a keybind has been triggered. | bool | false |
| scroll_event_delay | in ms, how many ms to wait after a scroll event to allow to pass another one for the binds. | int | 300 | | scroll_event_delay | in ms, how many ms to wait after a scroll event to allow passing another one for the binds. | int | 300 |
| workspace_back_and_forth | If enabled, an attempt to switch to the currently focused workspace will instead switch to the previous workspace. Akin to i3's _auto_back_and_forth_. | bool | false | | workspace_back_and_forth | If enabled, an attempt to switch to the currently focused workspace will instead switch to the previous workspace. Akin to i3's _auto_back_and_forth_. | bool | false |
| allow_workspace_cycles | If enabled, workspaces don't forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace. | bool | false | | allow_workspace_cycles | If enabled, workspaces don't forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace. | bool | false |
| workspace_center_on | Whether switching workspaces should center the cursor on the workspace (0) or on the last active window for that workspace (1) | int | 0 | | workspace_center_on | Whether switching workspaces should center the cursor on the workspace (0) or on the last active window for that workspace (1) | int | 0 |
@ -422,7 +422,7 @@ Only for developers.
| manual_crash | set to 1 and then back to 0 to crash Hyprland. | int | 0 | | manual_crash | set to 1 and then back to 0 to crash Hyprland. | int | 0 |
| suppress_errors | if true, do not display config file parsing errors. | bool | false | | suppress_errors | if true, do not display config file parsing errors. | bool | false |
| watchdog_timeout | sets the timeout in seconds for watchdog to abort processing of a signal of the main thread. Set to 0 to disable. | int | 5 | | watchdog_timeout | sets the timeout in seconds for watchdog to abort processing of a signal of the main thread. Set to 0 to disable. | int | 5 |
| disable_scale_checks | disables verifying of the scale factors. Will result in pixel alignment and rounding errors. | bool | false | | disable_scale_checks | disables verification of the scale factors. Will result in pixel alignment and rounding errors. | bool | false |
| error_limit | limits the number of displayed config file parsing errors. | int | 5 | | error_limit | limits the number of displayed config file parsing errors. | int | 5 |
### More ### More

View file

@ -50,16 +50,16 @@ windowrulev2 = float,class:(kitty),title:(kitty)
{{< callout type=info >}} {{< callout type=info >}}
In the case of dynamic window titles such as browser windows keep in mind how In the case of dynamic window titles such as browser windows, keep in mind how
powerful regex is. powerful regex is.
for example a window rule of: For example, a window rule of:
`windowrule=opacity 0.3 override 0.3 override,title:(.*)(- Youtube)$` will match `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 _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 could be multiple browser windows or other applications that contain the string
for any reason. for any reason.
for the `windowrulev2 = float,class:(kitty),title:(kitty)` example, the For the `windowrulev2 = float,class:(kitty),title:(kitty)` example, the
`class:(kitty)` `WINDOW` field is what keeps the window rule specific to kitty `class:(kitty)` `WINDOW` field is what keeps the window rule specific to kitty
terminals. terminals.
@ -83,11 +83,6 @@ onworkspace - id, name: and name, or workspace selector (see Workspace Rules)
Keep in mind that you _have_ to declare at least one field, but not all. Keep in mind that you _have_ to declare at least one field, but not all.
{{< callout type=warning >}}
Please beware that `hyprctl clients` display the field as **initialClass** while the WINDOW field in the configuration uses `initialclass`.
{{< /callout >}}
{{< callout type=info >}} {{< callout type=info >}}
To get more information about a window's class, title, XWayland status or its To get more information about a window's class, title, XWayland status or its
@ -95,11 +90,17 @@ size, you can use `hyprctl clients`.
{{< /callout >}} {{< /callout >}}
{{< callout type=warning >}}
Please beware that `hyprctl clients` will display the field as **initialClass** while the WINDOW field in the configuration uses `initialclass`.
{{< /callout >}}
## Rules ## Rules
### Static rules ### Static rules
Static rules are evaluated once at window open and never again. Static rules are evaluated once when the window is opened and never again.
| Rule | Description | | Rule | Description |
| ---- | ----------- | | ---- | ----------- |
@ -134,7 +135,7 @@ Dynamic rules are re-evaluated every time a property changes.
| ---- | ----------- | | ---- | ----------- |
| opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an overall opacity OR `float float` -> sets activeopacity and inactiveopacity respectively, OR `float float float` -> sets activeopacity, inactiveopacity and fullscreenopacity respectively. | | opacity \[a\] | additional opacity multiplier. Options for a: `float` -> sets an overall opacity OR `float float` -> sets activeopacity and inactiveopacity respectively, OR `float float float` -> sets activeopacity, inactiveopacity and fullscreenopacity respectively. |
| opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) | | opaque | forces the window to be opaque (can be toggled with the toggleopaque dispatcher) |
| forcergbx | makes hyprland ignore the alpha channel of all the window's surfaces, effectively making it _actually, fully 100% opaque_ | | forcergbx | makes Hyprland ignore the alpha channel of all the window's surfaces, effectively making it _actually, fully 100% opaque_ |
| animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. | | animation \[style\] (\[opt\]) | forces an animation onto a window, with a selected opt. Opt is optional. |
| rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. | | rounding \[x\] | forces the application to have X pixels of rounding, ignoring the set default (in `decoration:rounding`). Has to be an int. |
| minsize \[x\] \[y\] | sets the minimum size (x,y -> int) | | minsize \[x\] \[y\] | sets the minimum size (x,y -> int) |
@ -197,7 +198,7 @@ windowrulev2 = stayfocused, class:^(pinentry-) # fix pinentry losing focus
Rules that are marked as _Dynamic_ will be reevaluated if the matching property Rules that are marked as _Dynamic_ will be reevaluated if the matching property
of the window changes. For instance, if a rule is defined that changes the of the window changes. For instance, if a rule is defined that changes the
bordercolor of a window when it is floating, then the bordercolor will change to `bordercolor` of a window when it is floating, then the `bordercolor` will change to
the requested color when it is set to floating, and revert to the default color the requested color when it is set to floating, and revert to the default color
when it is tiled again. when it is tiled again.
@ -209,26 +210,26 @@ windowrulev2 = opacity 0.8 0.8,class:^(kitty)$
windowrulev2 = opacity 0.5 0.5,floating:1 windowrulev2 = opacity 0.5 0.5,floating:1
``` ```
-> all non-fullscreen kitty windows will have opacity 0.8, except if they are floating. Then Here, all non-fullscreen kitty windows will have `opacity 0.8`, except if they are floating.
they will have opacity 0.5. -> all non-fullscreen floating windows will have opacity 0.5. Otherwise, they will have `opacity 0.5`. The rest of the non-fullscreen floating windows will have `opacity 0.5`.
```ini ```ini
windowrulev2 = opacity 0.5 0.5,floating:1 windowrulev2 = opacity 0.5 0.5,floating:1
windowrulev2 = opacity 0.8 0.8,class:^(kitty)$ windowrulev2 = opacity 0.8 0.8,class:^(kitty)$
``` ```
-> all kitty windows will have opacity 0.8, also if they are floating. -> all Here, all kitty windows will have `opacity 0.8`, even if they are floating.
other floating windows will have opacity 0.5. The rest of the floating windows will have `opacity 0.5`.
{{< callout type=info >}} {{< callout type=info >}}
Opacity is a PRODUCT of all opacities by default. E.g. `active_opacity` to 0.5 and Opacity is a PRODUCT of all opacities by default. For example, setting `activeopacity` to 0.5
windowrule opacity to 0.5 will result in a total opacity 0.25. You are allowed and `opacity` to 0.5 will result in a total opacity of 0.25. You are allowed
to set opacities over 1, but any opacity product over 1 will cause graphical to set opacities over 1, but any opacity product over 1 will cause graphical
glitches. E.g. `0.5 * 2 = 1`, and it will be fine, `0.5 * 4` will cause glitches. For example, using `0.5 * 2 = 1` is fine, but `0.5 * 4 = 2` will cause
graphical glitches. You can use `override` after an opacity to make it override graphical glitches. You can put `override` after an opacity value to override it to an exact value
instead of a multiplier. E.g. to set active and inactive opacity to 0.8, rather than a multiplier. For example, to set active and inactive opacity to 0.8,
and make fullscreen fully opaque regardless of other opacity rules: and make fullscreen windows fully opaque regardless of other opacity rules:
```ini ```ini
windowrulev2 = opacity 0.8 override 0.8 override 1.0 override,^(kitty)$ windowrulev2 = opacity 0.8 override 0.8 override 1.0 override,^(kitty)$
@ -238,8 +239,8 @@ windowrulev2 = opacity 0.8 override 0.8 override 1.0 override,^(kitty)$
## Layer Rules ## Layer Rules
Some things in wayland are not windows, but layers. That includes for example Some things in Wayland are not windows, but layers. That includes, for example:
most launchers, your status bar or wallpaper. app launchers, status bars, or wallpapers.
Those have specific rules separate from windows: Those have specific rules separate from windows:
@ -256,7 +257,7 @@ in `hyprctl layers`) or `address` is an address in the form of `address:0x[hex]`
| rule | description | | rule | description |
| --- | --- | | --- | --- |
| unset | removes all layerRules previously set for a select namespace regex. Please note it has to match _exactly_ | | unset | removes all layerRules previously set for a select namespace regex. Please note it has to match _exactly_. |
| noanim | disables animations | | noanim | disables animations |
| blur | enables blur for the layer | | blur | enables blur for the layer |
| blurpopups | enables blur for the popups | | blurpopups | enables blur for the popups |

View file

@ -51,7 +51,7 @@ workspace=w[tg1-4],shadow:false
| Rule | Description | type | | Rule | Description | type |
| --- | --- | --- | | --- | --- | --- |
| monitor:[m] | Binds a workspace to a monitor See [syntax](#syntax) and [Monitors](../Monitors). | string | | monitor:[m] | Binds a workspace to a monitor. See [syntax](#syntax) and [Monitors](../Monitors). | string |
| default:[b] | Whether this workspace should be the default workspace for the given monitor | bool | | default:[b] | Whether this workspace should be the default workspace for the given monitor | bool |
| gapsin:[x] | Set the gaps between windows (equivalent to [General->gaps_in](../Variables#general)) | int | | gapsin:[x] | Set the gaps between windows (equivalent to [General->gaps_in](../Variables#general)) | int |
| gapsout:[x] | Set the gaps between windows and monitor edges (equivalent to [General->gaps_out](../Variables#general)) | int | | gapsout:[x] | Set the gaps between windows and monitor edges (equivalent to [General->gaps_out](../Variables#general)) | int |

View file

@ -3,7 +3,7 @@ weight: 12
title: Connect title: Connect
--- ---
These are the links to official hyprland-related spaces or profiles: These are the links to official Hyprland-related spaces or profiles:
## Profiles ## Profiles
@ -19,4 +19,4 @@ 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/>
hyprland website: [hyprland.org](https://hyprland.org/)<br/> Hyprland website: [hyprland.org](https://hyprland.org/)<br/>

View file

@ -39,7 +39,7 @@ With that, you can build in debug, go to the debugging tab and hit
`make debug` `make debug`
attach and profile in your preferred way. Attach and profile in your preferred way.
### Meson ### Meson
@ -62,7 +62,7 @@ This code can go in the `package` attribute of the NixOS/Home Manager modules.
## Running ## Running
when running Hyprland in Debug mode, the config is When running Hyprland in Debug mode, the config is
`~/.config/hypr/hyprlandd.conf` and the logs can be found at `~/.config/hypr/hyprlandd.conf` and the logs can be found at
`/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.log`. `/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.log`.

View file

@ -5,15 +5,13 @@ title: Crashes and Bugs
## Getting the log ## Getting the log
If you are in a TTY, and the hyprland session that crashed was the last one you If you are in a TTY, and the Hyprland session that crashed was the last one you
launched, the log will be printed with launched, the log can be printed with
```sh ```sh
cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 1)/hyprland.log cat /tmp/hypr/$(ls -t /tmp/hypr/ | head -n 1)/hyprland.log
``` ```
feel free to save it to a file, save, copy, etc.
if you are in a Hyprland session, and you want the log of the last session, use if you are in a Hyprland session, and you want the log of the last session, use
```sh ```sh
@ -62,7 +60,7 @@ issue on GitHub.
If requested, this is the deepest level of memory issue debugging possible. If requested, this is the deepest level of memory issue debugging possible.
_Do this in the tty, with no Hyprland instances running_ _Do this in the tty, with no Hyprland instances running._
Clone hyprland: `git clone --recursive https://github.com/hyprwm/Hyprland` Clone hyprland: `git clone --recursive https://github.com/hyprwm/Hyprland`

View file

@ -8,7 +8,7 @@ title: FAQ
This just means they are running through XWayland, which physically cannot scale This just means they are running through XWayland, which physically cannot scale
by fractional amounts. by fractional amounts.
To force them to run in wayland-native mode, see To force them to run in native Wayland mode, see
[the Master Tutorial](../Getting-Started/Master-Tutorial/#force-apps-to-use-wayland). [the Master Tutorial](../Getting-Started/Master-Tutorial/#force-apps-to-use-wayland).
If they can't, see [the XWayland page](../Configuring/XWayland). If they can't, see [the XWayland page](../Configuring/XWayland).
@ -32,8 +32,7 @@ _[wiki page](../Crashes-and-Bugs)_
### Me cursor no render? ### Me cursor no render?
Are you on NVIDIA? If so, then you have been naughty and haven't listened If you are on NVIDIA, you may need to use the `WLR_NO_HARDWARE_CURSORS=1` environment
to my tips on other pages. Use the `WLR_NO_HARDWARE_CURSORS=1` environment
variable. variable.
### My external monitor is blank / doesn't render / receives no signal (laptop) ### My external monitor is blank / doesn't render / receives no signal (laptop)
@ -62,9 +61,9 @@ external monitor through the iGPU.
### How do I screenshot? ### How do I screenshot?
Install `grim` and `slurp` Install `grim` and `slurp`.
Use a keybind (or execute) `grim -g "$(slurp)"`, select a region. A screenshot Use a keybind (or execute) `grim -g "$(slurp)"`, and select a region. A screenshot
will pop into your `~/Pictures/` (You can configure grim and slurp, see their will pop into your `~/Pictures/` (You can configure grim and slurp, see their
GitHub pages). GitHub pages).
@ -122,7 +121,7 @@ update the package. Paru has been problematic with updating before, use Yay.
### How do I screen lock? ### How do I screen lock?
Use a wayland-compatible locking utility using WLR protocols, e.g. `swaylock`. Use a Wayland-compatible locking utility using WLR protocols, e.g. `swaylock`.
### How do I change me mouse cursor? ### How do I change me mouse cursor?
@ -158,7 +157,7 @@ Waybar has a set of caveats or settings that you need to be aware of. See
### How do I autostart my favorite apps? ### How do I autostart my favorite apps?
Using the window rules to assign apps to workspace you can open a bunch of Using the window rules to assign apps to workspaces, you can open a bunch of
applications on various workspaces. The following method will start these apps applications on various workspaces. The following method will start these apps
silently (i.e. without the flickering from workspace to workspace). silently (i.e. without the flickering from workspace to workspace).
@ -173,7 +172,7 @@ exec-once=[workspace 4 silent] firefox
### How do I move my favorite workspaces to a new monitor when I plug it in? ### How do I move my favorite workspaces to a new monitor when I plug it in?
if you want workspaces to automatically go to a monitor upon connection, use the If you want workspaces to automatically go to a monitor upon connection, use the
following: following:
In hyprland.conf: In hyprland.conf:
@ -199,7 +198,7 @@ handle() {
socat - "UNIX-CONNECT:/tmp/hypr/${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock" | while read -r line; do handle "$line"; done socat - "UNIX-CONNECT:/tmp/hypr/${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock" | while read -r line; do handle "$line"; done
``` ```
if you want workspaces 1 2 4 5 to go to monitor 1 when connecting it. This makes workspaces 1, 2, 4, and 5 go to monitor 1 when connecting it.
Please note this requires `socat` to be installed. Please note this requires `socat` to be installed.
@ -247,10 +246,10 @@ env = XDG_CURRENT_DESKTOP,Hyprland
### How to disable middle-click paste? ### How to disable middle-click paste?
You can simply intercept the middle-click action all together, via hyprland You can simply intercept the middle-click action all together via Hyprland
binds for example. The drawbacks to this solution are that 1. it disables the binds. However, there are drawbacks to this solution. It disables the
rest of the functionality of the middle-click action, such as auto scroll, rest of the functionality of the middle-click action, such as auto scroll,
closing browser tabs, etc., and 2. many applications (such as kitty) manually closing browser tabs, etc. Additionally, many applications (such as kitty) manually
intercept the middle-click events and bind them to paste from the primary buffer intercept the middle-click events and bind them to paste from the primary buffer
themselves, bypassing the solution altogether. For this solution, add this bind themselves, bypassing the solution altogether. For this solution, add this bind
to your config: to your config:
@ -272,7 +271,7 @@ your config with `exec-once`, for example) to achieve this:
to the primary buffer, `wl-copy -p ''` clears the primary buffer) to the primary buffer, `wl-copy -p ''` clears the primary buffer)
**As you can see, however, this creates an endless loop (found copied text -> **As you can see, however, this creates an endless loop (found copied text ->
copy -> found copied text...). Therefore this method is not recommended.** copy -> found copied text...). Therefore, this method is not recommended.**
</details> </details>
@ -298,9 +297,9 @@ You most likely have multiple portal impls / an impl is failing to launch.
### My screenshot utilities won't work with multiple screens ### My screenshot utilities won't work with multiple screens
Some programs like flameshot (currently) has limited wayland support so on most Some programs like Flameshot (currently) have limited Wayland support, so on most
Wayland compositors, you will have to do few tweaks. For Hyprland, you can add Wayland compositors, you will have to do a few tweaks. For Hyprland, you can add
these window rules to your config to make said programs work with both of your these window rules to your config to make these programs work with both of your
screens. screens.
```ini ```ini
@ -318,7 +317,7 @@ First, install and run `wev`, then press `SUPER`. If you see a key press event
followed by an instant key release event, then it's likely your `SUPER` key is followed by an instant key release event, then it's likely your `SUPER` key is
set to single press mode. set to single press mode.
On most laptops this can be fixed by pressing `FN+SUPER` and verified in `wev`. On most laptops, this can be fixed by pressing `FN+SUPER` and verified in `wev`.
You should be able to hold `SUPER` and not see an instant release event. In case You should be able to hold `SUPER` and not see an instant release event. In case
`FN+SUPER` doesn't work, consult your laptop's manual. `FN+SUPER` doesn't work, consult your laptop's manual.
@ -335,12 +334,10 @@ bind = SUPER,Escape,submap,reset
submap = reset submap = reset
``` ```
set `MOD` and `KEY` to desired values. Set `MOD` and `KEY` to desired values.
By pressing the selected combo you will enter a mode where hyprland ignores your By pressing the selected combo, you will enter a mode where Hyprland ignores your
keybinds and passes them on to the vm. keybinds and passes them on to the VM. Pressing `SUPER + Escape` will leave that mode.
Then, pressing `SUPER + Escape` will leave that mode.
### Some of my drop-down/pop-up windows in apps disappear/don't open at cursor position ### Some of my drop-down/pop-up windows in apps disappear/don't open at cursor position
@ -385,9 +382,9 @@ to use the first solution if opening at the cursor position.
### Steam's file picker no worky ### Steam's file picker no worky
On instances where you have a steam library on another drive that you have to On instances where you have a Steam library on another drive that you have to
add, Hyprland's file picker would not normally appear when selecting a directory add, Hyprland's file picker would not normally appear when selecting a directory
from steam. from Steam.
Steam has its own file picker, however, it's not functional. Install Steam has its own file picker, however, it's not functional. Install
`xdg-desktop-portal-gtk` to show the desktop's file picker. `xdg-desktop-portal-gtk` to show the desktop's file picker.

View file

@ -19,14 +19,14 @@ might have **major** issues running Hyprland.
## Installation ## Installation
Installing Hyprland is very easy. Either you install it from your local package Installing Hyprland is very easy. Simply install it with your package manager
provider (if they provide pkgs for Hyprland) or you install/build it yourself. (if there is a Hyprland package available) or install/build it yourself.
{{< callout >}} {{< callout >}}
This project is under development and is constantly changing. If you want to This project is under development and is constantly changing. If you want to
keep up to date with the latest commits, please consider updating your packages keep up to date with the latest commits, please consider updating your packages
with `yay -Syu --devel`, or your other preferred package manager. with `yay -Syu --devel`, or your preferred package manager.
{{< /callout >}} {{< /callout >}}

View file

@ -101,7 +101,7 @@ If your cursor does not appear, then see
## Themes ## Themes
Since this is not a full fledged Desktop Environment, you will need to use tools Since this is not a fully-fledged Desktop Environment, you will need to use tools
such as `lxappearance` and `nwg-look` (recommended) for GTK, and `qt5ct` / such as `lxappearance` and `nwg-look` (recommended) for GTK, and `qt5ct` /
`qt6ct` for their respective Qt versions. Some older applications may also `qt6ct` for their respective Qt versions. Some older applications may also
require `qt4ct`. require `qt4ct`.

View file

@ -3,7 +3,7 @@ weight: 4
title: Hypr Ecosystem title: Hypr Ecosystem
--- ---
This wiki section hosts docs for various hypr* projects. See a list bere: This wiki section hosts docs for various hypr* projects. See a list here:
{{< callout type=info >}} {{< callout type=info >}}

View file

@ -7,7 +7,7 @@ over the widely used xcursor.
## Hyprcursor themes ## Hyprcursor themes
You will need to obtain those yourself. If you are on the discord server, see `#hyprcursor-themes`. You will need to obtain those yourself. If you are on the Discord server, see `#hyprcursor-themes`.
Put your theme(s) in `~/.local/share/icons` or `~/.icons` Put your theme(s) in `~/.local/share/icons` or `~/.icons`
@ -53,5 +53,5 @@ icons and XCursors in both `/usr/share/icons` and `~/.icons`.
## I don't want to use hyprcursor ## I don't want to use hyprcursor
If you don't have any hyprcursor themes installed, hyprland will fall back to XCursor, and use If you don't have any hyprcursor themes installed, Hyprland will fall back to XCursor, and use
whatever you define with `XCURSOR_THEME` and `XCURSOR_SIZE`. whatever you define with `XCURSOR_THEME` and `XCURSOR_SIZE`.

View file

@ -3,13 +3,13 @@ weight: 3
title: hypridle title: hypridle
--- ---
hypridle is hyprland's idle management daemon. hypridle is Hyprland's idle management daemon.
## Configuration ## Configuration
Configuration is done via the config file at `~/.config/hypr/hypridle.conf`. A Configuration is done via the config file at `~/.config/hypr/hypridle.conf`. A
config file is required; hypridle won't run without one. To run hypridle at config file is required; hypridle won't run without one. To run hypridle at
startup edit `hyprland.conf` and add: `exec-once = hypridle`. startup, edit `hyprland.conf` and add: `exec-once = hypridle`.
### General ### General

View file

@ -4,7 +4,7 @@ title: hyprlock
--- ---
hyprlock is a simple, yet fast, multi-threaded and GPU-accelerated screen lock hyprlock is a simple, yet fast, multi-threaded and GPU-accelerated screen lock
for hyprland. for Hyprland.
## Configuration ## Configuration
@ -21,12 +21,12 @@ Variables in the `general` category:
| grace | the amount of seconds for which the lockscreen will unlock on mouse movement. | int | 0 | | grace | the amount of seconds for which the lockscreen will unlock on mouse movement. | int | 0 |
| no_fade_in | disables the fadein animation | bool | false | | no_fade_in | disables the fadein animation | bool | false |
| no_fade_out | disables the fadeout animation | bool | false | | no_fade_out | disables the fadeout animation | bool | false |
| ignore_empty_input | skips validation when empty password is provided | bool | false | | ignore_empty_input | skips validation when no password is provided | bool | false |
| pam_module | sets the pam module used for authentication. If the module isn't found in `/etc/pam.d`, "su" will be used as a fallback | str | hyprlock | | pam_module | sets the pam module used for authentication. If the module isn't found in `/etc/pam.d`, "su" will be used as a fallback | str | hyprlock |
## Keyboard Shortcuts and Actions ## Keyboard Shortcuts and Actions
The following keys and key-combinations describe hyprlocks 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 |
@ -62,7 +62,7 @@ widget_name {
### Shadowable ### Shadowable
Some widgets are shadowable, aka. 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 |
@ -188,7 +188,7 @@ input-field {
#### Colors information #### Colors information
When `outline_thickness` set to `0`, color of the inner box will be changed instead of 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 `0`: if set, font color will be swapped with inner one on color change events (e.g. Caps-lock on or password check).

View file

@ -3,15 +3,15 @@ weight: 1
title: hyprpaper title: hyprpaper
--- ---
hyprpaper is a fast, IPC-controlled wallpaper utility for hyprland. hyprpaper is a fast, IPC-controlled wallpaper utility for Hyprland.
## Configuration ## Configuration
The config file is located at `~/.config/hypr/hyprpaper.conf`. It is not The config file is located at `~/.config/hypr/hyprpaper.conf`. It is not
required. required.
Configuration is done via `preload`s, which _load_ an image into memory. Then, Configuration is done using `preload`, which _loads_ an image into memory. Then,
you use `wallpaper` keywords to apply the preloaded image to your monitor(s): the `wallpaper` keyword is used to apply the preloaded image to your monitor(s):
```ini ```ini
preload = /home/me/amongus.png preload = /home/me/amongus.png
@ -20,8 +20,8 @@ wallpaper = DP-1,/home/me/amongus.png
For wallpaper keywords: For wallpaper keywords:
You can also `unload` preloaded images to free up memory. `unload all` and You can use `unload` to unload preloaded images. You can also specify `unload all`
`unload unused` are a thing too. to unload all images or `unload unused` to unload images that aren't being used.
To run hyprpaper at startup edit `hyprland.conf` and add: To run hyprpaper at startup edit `hyprland.conf` and add:
`exec-once = hyprpaper`. `exec-once = hyprpaper`.

View file

@ -3,7 +3,7 @@ weight: 2
title: hyprpicker title: hyprpicker
--- ---
hyprpicker is a neat utility for picking a color your screen on hyprland. hyprpicker is a neat utility for picking a color your screen on Hyprland.
## Configuration ## Configuration

View file

@ -69,15 +69,15 @@ e.g.: `workspace>>2`
{{< callout type=warning >}} {{< callout type=warning >}}
A fullscreen event is not guaranteed to fire on/off once in succession. A window A fullscreen event is not guaranteed to fire on/off once in succession. Some windows
might do for example 3 requests to be fullscreen'd, which would result in 3 may fire multiple requests to be fullscreened, resulting in multiple
fullscreen events. fullscreen events.
{{< /callout >}} {{< /callout >}}
## How to use socket2 with bash ## How to use socket2 with bash
example script using socket2 events with bash and `socat`: Example script using socket2 events with bash and `socat`:
```sh ```sh
#!/bin/sh #!/bin/sh

View file

@ -157,12 +157,12 @@ wayland.windowManager.hyprland.plugins = [
]; ];
``` ```
For examples on how to build Hyprland plugins using nix see the For examples on how to build Hyprland plugins using Nix, see the
[official plugins](https://github.com/hyprwm/hyprland-plugins). [official plugins](https://github.com/hyprwm/hyprland-plugins).
## Fixing problems with themes ## Fixing problems with themes
If your themes for mouse cursor, icons or windows don't load correctly, try If your themes for mouse cursors, icons or windows don't load correctly, try
setting them with `home.pointerCursor` and `gtk.theme`, which enable a bunch of setting them with `home.pointerCursor` and `gtk.theme`, which enable a bunch of
compatibility options that should make the themes load in all situations. compatibility options that should make the themes load in all situations.
@ -198,7 +198,7 @@ gtk = {
## Programs don't work in systemd services, but do on the terminal ## Programs don't work in systemd services, but do on the terminal
This problem is related to Systemd not importing the environment by default. It This problem is related to systemd not importing the environment by default. It
will not have knowledge of `PATH`, so it cannot run the commands in the will not have knowledge of `PATH`, so it cannot run the commands in the
services. This is the most common with user-configured services such as services. This is the most common with user-configured services such as
`hypridle` or `swayidle`. `hypridle` or `swayidle`.

View file

@ -137,5 +137,5 @@ in {
## Fixing problems with themes ## Fixing problems with themes
If your themes for mouse cursor, icons or windows don't load correctly, see the If your themes for mouse cursors, icons or windows don't load correctly, see the
relevant section in [Hyprland on Home Manager](../Hyprland-on-Home-Manager). relevant section in [Hyprland on Home Manager](../Hyprland-on-Home-Manager).

View file

@ -47,13 +47,13 @@ nix profile install github:guibou/nixGL --impure
`--impure` is needed due to `nixGL`'s reliance on hardware information. `--impure` is needed due to `nixGL`'s reliance on hardware information.
From now on, you can run Hyprland by invoking it with nixGL From now on, you can run Hyprland by invoking it with nixGL.
```sh ```sh
nixGL Hyprland nixGL Hyprland
``` ```
or by creating a wrapper script that runs the above command inside. Or by creating a wrapper script that runs the above command inside.
## Upgrading ## Upgrading

View file

@ -44,7 +44,7 @@ See [XWayland](../../Configuring/XWayland).
## Using Nix repl ## Using Nix repl
If you're using Nix (and not NixOS or Home Manager) and you want to override, If you're using Nix (and not NixOS or Home Manager) and you want to override,
you can do it like this you can do it like this:
```nix ```nix
$ nix repl $ nix repl

View file

@ -10,20 +10,17 @@ have had success with the instructions on this page.
You can choose between the proprietary You can choose between the proprietary
[Nvidia drivers](https://wiki.archlinux.org/title/NVIDIA) or the open source [Nvidia drivers](https://wiki.archlinux.org/title/NVIDIA) or the open source
[Nouveau driver](https://wiki.archlinux.org/title/Nouveau). Under the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau). For the
proprietary Nvidia drivers category, there are 3 of them: the current driver proprietary drivers, there are 3 of them: the current driver
named 'nvidia' (or 'nvidia-dkms' to use with custom linux kernels) which is named 'nvidia' (or 'nvidia-dkms' to use with custom linux kernels) which is
under active development, the legacy drivers 'nvidia-3xxxx' for older cards under active development, the legacy drivers 'nvidia-3xxxx' for older cards
which Nvidia no longer actively supports, and the 'nvidia-open' driver which is which Nvidia no longer actively supports, and the 'nvidia-open' driver which is
currently an alpha stage attempt to open source a part of their closed source currently an alpha stage attempt to open source a part of their closed source
driver for newer cards. driver for newer cards.
If your card is supported by the proprietary nvidia drivers, there is a very If the proprietary drivers support your graphics card, it's generally recommended
high chance that you will most likely want to use those. Benefits include but to use them instead, as it includes significantly improved gaming performance
are not limited to: and power management for recent GPUs.
- (Much) better gaming performance
- Better power management on recent 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
properly on your computer, the Nouveau driver might work fine. This will properly on your computer, the Nouveau driver might work fine. This will
@ -54,12 +51,10 @@ similarly between the two.
Next up, you need to enable modeset for nvidia, this can be done via editing Next up, you need to enable modeset for nvidia, this can be done via editing
the kernel paramaters for your bootloader. the kernel paramaters for your bootloader.
For people using [systemd-boot](https://wiki.archlinux.org/title/systemd-boot) If you use [systemd-boot](https://wiki.archlinux.org/title/systemd-boot)
you can do this by adding `nvidia_drm.modeset=1` to the end of you can do this adding `nvidia_drm.modeset=1` to the end of
`/boot/loader/entries/arch.conf`. `/boot/loader/entries/arch.conf`. If you use
[grub](https://wiki.archlinux.org/title/GRUB) you can do this by adding
For people using
[GRUB](https://wiki.archlinux.org/title/GRUB) you can do this by adding
`nvidia_drm.modeset=1` to the end of `GRUB_CMDLINE_LINUX_DEFAULT=` in `nvidia_drm.modeset=1` to the end of `GRUB_CMDLINE_LINUX_DEFAULT=` in
`/etc/default/grub`, then running `sudo grub-mkconfig -o /boot/grub/grub.cfg`. `/etc/default/grub`, then running `sudo grub-mkconfig -o /boot/grub/grub.cfg`.
@ -207,8 +202,8 @@ to `1`, which should automatically configure Electron / CEF apps to run with nat
Wayland for you. Wayland for you.
While it is best to have as many things as possible running natively in While it is best to have as many things as possible running natively in
wayland, the root cause of the flickering will likely be solved Wayland, the root cause of the flickering will likely be solved
in the 555 series of nvidia driver updates. in the 555 series of Nvidia driver updates.
### Fixing flickering in XWayland games specifically ### Fixing flickering in XWayland games specifically
@ -233,11 +228,11 @@ More info about explicit sync is available
### Fixing other random flickering (nuclear method) ### Fixing other random flickering (nuclear method)
Do 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 an RTX 3070TI, to 74W). increased power-consumption (from 22W idle on a RTX 3070TI, to 74W).
This is probably not needed for most users, so only apply these 'fixes' if This may not be needed for some users. Only apply these 'fixes' if you
you in-fact 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:
@ -249,7 +244,7 @@ Reboot your computer and it should be working.
If it does not, try: If it does not, try:
- lowering your monitors' refresh rate, as this can stop the flickering - lowering your monitor's refresh rate, as this can stop the flickering
altogether altogether
- using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as - using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as
mentioned above mentioned above
@ -260,7 +255,7 @@ Enable the services `nvidia-suspend.service`, `nvidia-hibernate.service` and
`nvidia-resume.service`, they will be started by systemd when needed. `nvidia-resume.service`, they will be started by systemd when needed.
Add `nvidia.NVreg_PreserveVideoMemoryAllocations=1` to your kernel parameters if Add `nvidia.NVreg_PreserveVideoMemoryAllocations=1` to your kernel parameters if
you don't have it already. you haven't already.
{{< callout >}} {{< callout >}}

View file

@ -25,7 +25,7 @@ Let's look at a simple example:
void Events::listener_monitorFrame(void* owner, void* data) void Events::listener_monitorFrame(void* owner, void* data)
``` ```
will be the function we want to hook. `Events::` is a namespace, not a class, so This will be the function we want to hook. `Events::` is a namespace, not a class, so
this is just a plain function. this is just a plain function.
```cpp ```cpp
@ -100,11 +100,11 @@ _will not_ change during runtime, so it's a good idea to make the lookups
Why use that instead of e.g. `&CCompositor::focusWindow`? Two reasons: Why use that instead of e.g. `&CCompositor::focusWindow`? Two reasons:
1 - less breakage. Whenever someone updates hyprland, that address might become 1. Less breakage. Whenever someone updates Hyprland, that address might become
invalid. findFunctionsByName is more resilient. As long as the function exists, invalid. findFunctionsByName is more resilient. As long as the function exists,
it will be found. it will be found.
2 - error handling. The method array contains, besides the address, the 2. Error handling. The method array contains, besides the address, the
signatures. You can verify those to make 100% sure you got the right function, signatures. You can verify those to make 100% sure you got the right function,
or throw an error if it was not found. or throw an error if it was not found.

View file

@ -58,7 +58,7 @@ We also create a global pointer for our handle:
inline HANDLE PHANDLE = nullptr; inline HANDLE PHANDLE = nullptr;
``` ```
we will initialize it in our plugin init function later. It serves as an We will initialize it in our plugin init function later. It serves as an
internal "ID" of our plugin. internal "ID" of our plugin.
Then, there is the API version method: Then, there is the API version method:
@ -100,7 +100,7 @@ APICALL EXPORT void PLUGIN_EXIT() {
} }
``` ```
The first method will be called when your plugin gets initialized (loaded) The first method will be called when your plugin gets initialized (loaded).
You can, and probably should, initialize everything you may want to use in You can, and probably should, initialize everything you may want to use in
there. there.
@ -130,13 +130,13 @@ for you.
In order to make your life easier, it's a good idea to work on a nested debug In order to make your life easier, it's a good idea to work on a nested debug
Hyprland session. Hyprland session.
Enter your Hyprland directory and run `make debug` Enter your Hyprland directory and run `make debug`.
Make a copy of your config in `~/.config/hypr` called `hyprlandd.conf`. Make a copy of your config in `~/.config/hypr` called `hyprlandd.conf`.
Remove _all_ `exec=` or `exec-once=` directives from your config. Remove _all_ `exec=` or `exec-once=` directives from your config.
_recommended_: Change the modifier for your keybinds (e.g. `SUPER` -> `ALT`) _recommended_: Change the modifier for your keybinds (e.g. `SUPER` -> `ALT`).
Launch the output `Hyprland` binary in `./build/` _when logged into a Hyprland Launch the output `Hyprland` binary in `./build/` _when logged into a Hyprland
session_. session_.

View file

@ -43,21 +43,21 @@ Find a repository you want to install plugins from. As an example, we will use
hyprpm add https://github.com/hyprwm/hyprland-plugins hyprpm add https://github.com/hyprwm/hyprland-plugins
``` ```
once it finishes, you can list your installed plugins with Once it finishes, you can list your installed plugins with:
```sh ```sh
hyprpm list hyprpm list
``` ```
and enable or disable them via `hyprpm enable name` and `hyprpm disable name`. Then, enable or disable them via `hyprpm enable name` and `hyprpm disable name`.
In order for the plugins to be loaded into hyprland, run `hyprpm reload`. In order for the plugins to be loaded into Hyprland, run `hyprpm reload`.
You can add `exec-once = hyprpm reload -n` to your hyprland config to have You can add `exec-once = hyprpm reload -n` to your Hyprland config to have
plugins loaded at startup. `-n` will make hyprpm send a notification if anything plugins loaded at startup. `-n` will make hyprpm send a notification if anything
goes wrong (e.g. update needed) goes wrong (e.g. update needed)
In order update your plugins, run `hyprpm update`. To update your plugins, run `hyprpm update`.
For all options of `hyprpm`, run `hyprpm -h`. For all options of `hyprpm`, run `hyprpm -h`.
@ -65,8 +65,8 @@ For all options of `hyprpm`, run `hyprpm -h`.
Different plugins may have different build methods, refer to their instructions. Different plugins may have different build methods, refer to their instructions.
If you don't have hyprland headers installed, clone hyprland, checkout to your If you don't have Hyprland headers installed, clone Hyprland, checkout to your
version, build hyprland, and run `sudo make installheaders`. Then build your version, build Hyprland, and run `sudo make installheaders`. Then build your
plugin(s). plugin(s).
To load plugins manually, use `hyprctl plugin load path` !NOTE: Path HAS TO BE To load plugins manually, use `hyprctl plugin load path` !NOTE: Path HAS TO BE
@ -91,7 +91,7 @@ See [here](../Development/Getting-Started).
### Where do I find plugins? ### Where do I find plugins?
You can find our featured plugins at [hyprland.org/plugins](https://hyprland.org/plugins/). You can find our featured plugins at [hyprland.org/plugins](https://hyprland.org/plugins/).
You can also see a list at [awesome-hyprland](https://github.com/hyprland-community/awesome-hyprland#plugins). Note it may not be complete. You can also see a list at [awesome-hyprland](https://github.com/hyprland-community/awesome-hyprland#plugins). Note that it may not be complete.
Lastly, you can try searching around github for the `"hyprland plugin"` keyword. Lastly, you can try searching around github for the `"hyprland plugin"` keyword.
### Are plugins safe? ### Are plugins safe?

View file

@ -9,7 +9,7 @@ replacements for them:
## Discord ## Discord
- [WebCord](https://github.com/SpacingBat3/WebCord) is a Discord client based on - [WebCord](https://github.com/SpacingBat3/WebCord) is a Discord client based on
the latest Electron, with support for Wayland Ozone platform, as well as the latest Electron, with support for the Wayland Ozone platform, as well as
PipeWire screensharing. It has tons of great features and tries not to PipeWire screensharing. It has tons of great features and tries not to
infringe on the Discord ToS. infringe on the Discord ToS.

View file

@ -40,11 +40,11 @@ For the config you can check out [DistroTube's Configuring Emacs](https://gitlab
## Anyrun ## Anyrun
Anyrun is a wayland native krunner-like runner, made with customizability in Anyrun is a Wayland-native krunner-like runner, made with customizability in
mind. It is modular and extensible through plugins. It can be used as an app launcher with its Applications Plugin. mind. It is modular and extensible through plugins. It can be used as an app launcher with its Applications Plugin.
[GitHub](https://github.com/Kirottu/anyrun) [GitHub](https://github.com/Kirottu/anyrun)
## Walker ## Walker
Walker is an extensible wayland-native runner with various built-in modules (applications, runner, hyprland windows, websearch [as of 2024-03-15]). It can be run as a service for faster startups. Walker is an extensible Wayland-native runner with various built-in modules (applications, runner, hyprland windows, websearch [as of 2024-03-15]). It can be run as a service for faster startups.
[GitHub](https://github.com/abenz1267/walker) [GitHub](https://github.com/abenz1267/walker)

View file

@ -5,8 +5,8 @@ title: Clipboard managers
_Starting method:_ manual (`exec-once`) _Starting method:_ manual (`exec-once`)
Clipboard Managers are useful tools that allows one to manage their copied Clipboard Managers provide a convenient way to organize and access previously
items, be-it texts or images. copied content, including both text and images.
Some common ones used are `copyq`, `clipman` and `cliphist`. Some common ones used are `copyq`, `clipman` and `cliphist`.
@ -16,11 +16,11 @@ Some common ones used are `copyq`, `clipman` and `cliphist`.
`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 we copy something on Wayland (using wl-clipboard) and `wl-clip-persist` - When copying something on Wayland, the copied data remains
close the application we copied from, the copied data disappears from the in the clipboard until the application that was copied from is closed.
clipboard and we cannot paste it anymore. So to fix this problem we can use a After that, the data disappears and can no longer be pasted.
program called as `wl-clip-persist` which will preserve the data in the To fix this problem, you can use `wl-clip-persist` which will preserve the data
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)
## copyq ## copyq
@ -31,8 +31,8 @@ Start by adding the following lines to your `~/.config/hypr/hyprland.conf`
exec-once = copyq --start-server exec-once = copyq --start-server
``` ```
If your `copyq`'s main window cannot close/hide properly, try to enable its If the main window of `copyq` cannot close/hide properly, try to enable its
"Hide main window" option in Layout configuration tab in Preferences dialog. "Hide main window" option in the Layout configuration tab in the Preferences dialog.
## cliphist ## cliphist
@ -44,10 +44,10 @@ exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data exec-once = wl-paste --type image --watch cliphist store #Stores only image data
``` ```
Do note that any of the above lines can be disabled based on your needs Note that any of the above lines can be disabled based on your needs.
To bind `cliphist` to a hotkey and display it under `rofi` or `dmenu` or `wofi`, To bind `cliphist` to a hotkey and display it under `rofi` or `dmenu` or `wofi`,
again head over to `~/.config/hypr/hyprland.conf` you can edit it in `~/.config/hypr/hyprland.conf`.
### For `rofi` users ### For `rofi` users
@ -67,9 +67,9 @@ bind = SUPER, V, exec, cliphist list | dmenu | cliphist decode | wl-copy
bind = SUPER, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy bind = SUPER, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
``` ```
The binds mention above correspond to SUPER+V to access the clipboard history The binds above allow `SUPER + V` to be used to access the clipboard history.
For further info, please refer to the repository mentioned above For further info, please refer to the repository mentioned above.
## clipman ## clipman
@ -79,16 +79,15 @@ Start by adding the following line to your `~/.config/hypr/hyprland.conf`
exec-once = wl-paste -t text --watch clipman store --no-persist exec-once = wl-paste -t text --watch clipman store --no-persist
``` ```
If you wish to use it as a primary clipboard manager, use this instead If you wish to use it as a primary clipboard manager, use this instead:
```ini ```ini
exec-once = wl-paste -p -t text --watch clipman store -P --histpath="~/.local/share/clipman-primary.json" exec-once = wl-paste -p -t text --watch clipman store -P --histpath="~/.local/share/clipman-primary.json"
``` ```
And also make sure to create a file named `clipman-primary.json` in Ensure that `~/.local/share/clipman-primary.json` is already created.
`~/.local/share/clipman-primary.json`
Now bind the `clipman` like this: Now you can bind `clipman` like this:
### For `rofi` users ### For `rofi` users
@ -108,5 +107,5 @@ bind = SUPER, V, exec, clipman pick -t dmenu
bind = SUPER, V, exec, clipman pick -t wofi bind = SUPER, V, exec, clipman pick -t wofi
``` ```
So on and so forth. For further information, please refer to the repository ...and so on. For further information, please refer to the repository
mentioned above mentioned above.

View file

@ -6,7 +6,7 @@ title: Color pickers
Color pickers are useful for quickly grabbing a color of _something_ on your Color pickers are useful for quickly grabbing a color of _something_ on your
screen. screen.
It's preferred using _hyrpwm_'s own solution, which, so far, seems to be the It's preferred using _hyprwm_'s own solution, which, so far, seems to be the
only one that doesn't suck. only one that doesn't suck.
## Hyprpicker ## Hyprpicker

View file

@ -1,5 +1,5 @@
The hypr ecosystem is a collection of apps developed by me (aka hyprwm) The hypr ecosystem is a collection of apps developed by me (aka hyprwm)
that are designed for hyprland and to integrate with it as nicely as possible. that are designed for Hyprland and to integrate with it as nicely as possible.
## hyprpaper ## hyprpaper
@ -9,7 +9,7 @@ A cool, fast, IPC-controlled wallpaper utility.
## hyprpicker ## hyprpicker
A neat color picker for your hyprland desktop. A neat color picker for your Hyprland desktop.
[Github link](https://github.com/hyprwm/hyprpicker) [Github link](https://github.com/hyprwm/hyprpicker)
@ -19,13 +19,13 @@ A must-have, see [The wiki page](../xdg-desktop-portal-hyprland)
## hypridle ## hypridle
An idle management daemon for hyprland, to set stuff like lockscreen or monitor poweroff when idle. An idle management daemon for Hyprland, for things like opening lock screens or powering off the monitor when idle.
[Github link](https://github.com/hyprwm/hypridle) [Github link](https://github.com/hyprwm/hypridle)
## hyprlock ## hyprlock
A simple, but fast, multithreaded, GPU-accelerated screen locker for hyprland. A simple, but fast, multithreaded, GPU-accelerated screen locker for Hyprland.
[Github link](https://github.com/hyprwm/hyprlock) [Github link](https://github.com/hyprwm/hyprlock)

View file

@ -6,7 +6,7 @@ title: Must have
This page documents software that is **strongly** recommended to have running This page documents software that is **strongly** recommended to have running
for a smooth Hyprland experience. for a smooth Hyprland experience.
DEs like Plasma or Gnome will take care of this automatically. Hyprland will DEs like Plasma or GNOME will take care of this automatically. Hyprland will
not, as you might want to use something else. not, as you might want to use something else.
### A notification daemon ### A notification daemon
@ -15,37 +15,37 @@ _Starting method:_ most likely manual (`exec-once`)
Many apps (e.g. Discord) may freeze without one running. Many apps (e.g. Discord) may freeze without one running.
Use e.g. `dunst`, `mako`, `swaync`, etc. Examples: `dunst`, `mako`, and `swaync`.
### Pipewire ### Pipewire
_Starting method:_ Automatic on Systemd, manual otherwise _Starting method:_ Automatic on systemd, manual otherwise.
Pipewire is not necessarily required, but screensharing will not work without Pipewire is not necessarily required, but screensharing will not work without
it. it.
Install `pipewire` and `wireplumber` (**not** `pipewire-media-session`) Install `pipewire` and `wireplumber` (**not** `pipewire-media-session`).
#### Non-systemd distros #### Non-systemd distros
Since there is no truly standardized way (outside of systemd) to load PipeWire Since there is no truly standardized way (outside of systemd) to load PipeWire
when starting a graphical shell[^1] non-systemd distros like Gentoo or Artix when starting a graphical shell,[^1] non-systemd distros like Gentoo or Artix
provide a dedicated launcher. provide a dedicated launcher.
It can be usually found by running `whereis <distro>-pipewire-launcher`. If such It can be usually found by running `whereis <distro>-pipewire-launcher`. If such
file does not exist on your install please refer to your distro's documentation a file does not exist on your install, please refer to your distro's documentation
for help. for help.
[^1]: https://wiki.gentoo.org/wiki/PipeWire#OpenRC [^1]: https://wiki.gentoo.org/wiki/PipeWire#OpenRC
### XDG Desktop Portal ### XDG Desktop Portal
_Starting method:_ Automatic on Systemd, manual otherwise _Starting method:_ Automatic on systemd, manual otherwise.
XDG Desktop Portal handles a lot of stuff for your desktop, like file pickers, XDG Desktop Portal handles a lot of stuff for your desktop, like file pickers,
screensharing, etc. screensharing, etc.
See the [Hyprland Desktop Portal Page](../xdg-desktop-portal-hyprland) See the [Hyprland Desktop Portal Page.](../xdg-desktop-portal-hyprland)
### Authentication Agent ### Authentication Agent

View file

@ -20,7 +20,7 @@ Hyprland.
### IPC wrappers ### IPC wrappers
[hyprland-rs](https://github.com/yavko/hyprland-rs) by _yavko_: A neat wrapper [hyprland-rs](https://github.com/yavko/hyprland-rs) by _yavko_: A neat wrapper
for Hyprland's IPC written in Rust for Hyprland's IPC written in Rust.
### Screen shaders/color temperature ### Screen shaders/color temperature
@ -38,10 +38,10 @@ swapping and scheduling screen shaders; also functions as an
_Starting method:_ manual ('exec-once') _Starting method:_ manual ('exec-once')
USB Mass storage devices, like thumb drives, mobile phones, digital cameras, USB mass storage devices, like thumb drives, mobile phones, digital cameras,
etc. do not mount automatically to the file system. etc. do not mount automatically to the file system.
We generally have to manually mount it, often using root and `umount` to do so. Typically, we have to manually mount them, often using root and `umount` to do so.
Many popular DEs automatically handle this by using `udisks2` wrappers. Many popular DEs automatically handle this by using `udisks2` wrappers.
@ -57,7 +57,7 @@ Head over to your `~/.config/hypr/hyprland.conf` and add the following lines:
exec-once = udiskie & exec-once = udiskie &
``` ```
What this does is launches `udiskie` and `&` argument launches it in the This launches `udiskie` and the `&` argument launches it in the
background. background.
[See more uses here](https://github.com/coldfix/udiskie/wiki/Usage) . [See more uses here](https://github.com/coldfix/udiskie/wiki/Usage).

View file

@ -22,16 +22,16 @@ See [the hyprland portal page](../xdg-desktop-portal-hyprland)
## XWayland ## XWayland
If your screensharing application is running under XWayland (like Discord, If your screensharing application is running under XWayland (like Discord or
Skype,...), it can only see other XWayland windows and cannot share an entire Skype), it can only see other XWayland windows and cannot share an entire
screen or a Wayland window. screen or a Wayland window.
The KDE-team has implemented a workaround for this called The KDE team has implemented a workaround for this called
[xwaylandvideobridge](https://invent.kde.org/system/xwaylandvideobridge). You [xwaylandvideobridge](https://invent.kde.org/system/xwaylandvideobridge). You
can use can use
[this AUR package](https://aur.archlinux.org/packages/xwaylandvideobridge-git) [this AUR package](https://aur.archlinux.org/packages/xwaylandvideobridge-git)
on ArchLinux. Note that Hyprland currently doesn't support the way it tries to on Arch Linux. Note that Hyprland currently doesn't support the way it tries to
hide the main window, so you will have to create some window-rules to achieve hide the main window, so you will have to create some window rules to achieve
the same effect. See the same effect. See
[this issue](https://invent.kde.org/system/xwaylandvideobridge/-/issues/1) for [this issue](https://invent.kde.org/system/xwaylandvideobridge/-/issues/1) for
more information. For example: more information. For example:

View file

@ -21,8 +21,8 @@ For more info regarding configuration, see
After getting everything set up, you might want to check if Waybar is configured After getting everything set up, you might want to check if Waybar is configured
to your liking. To launch it, simply type `waybar` into your terminal. If you to your liking. To launch it, simply type `waybar` into your terminal. If you
would like waybar to launch alongside hyprland, you can do this by adding a line would like Waybar to launch alongside Hyprland, you can do this by adding a line
to your hyprland configuration that reads `exec-once=waybar` to your Hyprland configuration that reads `exec-once=waybar`.
### Waybar popups render behind the windows ### Waybar popups render behind the windows
@ -36,7 +36,7 @@ Replace `#workspaces button.focused` with `#workspaces button.active` in
### Scrolling through workspaces ### Scrolling through workspaces
Since there a lot of configuration options from `sway/workspaces` are missing, Since a lot of configuration options from `sway/workspaces` are missing,
you should deduce some of them by yourself. In the case of scrolling, it should you should deduce some of them by yourself. In the case of scrolling, it should
look like this: look like this:
@ -52,14 +52,14 @@ look like this:
On the `hyprland/workspaces` module, add `"on-click": "activate"`. That's the On the `hyprland/workspaces` module, add `"on-click": "activate"`. That's the
purpose of the `sed` command used before building Waybar: the default way to purpose of the `sed` command used before building Waybar: the default way to
select a workspace by clicking uses the `swaymsg`'s way, and thus it is required select a workspace by clicking uses `swaymsg`, and thus it is required
to edit this function to make it work with `hyprctl`. to edit this function to make it work with `hyprctl`.
### Window title is missing ### Window title is missing
Follow the above instructions to make sure everything is working. The prefix for Follow the above instructions to make sure everything is working. The prefix for
the window module that provides the title is `hyprland` not `wlr`. In your the window module that provides the title is `hyprland` not `wlr`. In your
waybar config, insert this module: Waybar config, insert this module:
```json ```json
"modules-center": ["hyprland/window"], "modules-center": ["hyprland/window"],
@ -226,9 +226,9 @@ socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | s
## Hybrid ## Hybrid
Like Waybar, [Hybrid](https://github.com/vars1ty/HybridBar) is a GTK status bar Like Waybar, [Hybrid](https://github.com/vars1ty/HybridBar) is a GTK status bar
mainly focused for wlroots compositors. mainly focused on wlroots compositors.
You can install it from the AUR by the name `hybrid-bar`. You can install it by installing `hybrid-bar` from the AUR.
### Configuration ### Configuration
@ -239,12 +239,12 @@ The configuration is done through JSON, more information is available
After configuring HybridBar, you can launch it by typing `hybrid-bar` into your After configuring HybridBar, you can launch it by typing `hybrid-bar` into your
terminal to try it out. It is also possible to set it to launch at start, to do terminal to try it out. It is also possible to set it to launch at start, to do
this you can add a line to your hyprland configuration that reads this you can add a line to your Hyprland configuration that reads
`exec-once=hybrid-bar` `exec-once=hybrid-bar`
#### Blur #### Blur
To activate blur, set `blurls=NAMESPACE` in your hyprland configuration, where To activate blur, set `blurls=NAMESPACE` in your Hyprland configuration, where
`NAMESPACE` is the gtk-layer-shell namespace of your HybridBar. The default `NAMESPACE` is the gtk-layer-shell namespace of your HybridBar. The default
namespace is `gtk-layer-shell` and can be changed in the HybridBar configuration namespace is `gtk-layer-shell` and can be changed in the HybridBar configuration
at at

View file

@ -19,7 +19,7 @@ change, and don't want to make a config file. Get it
## wpaperd ## wpaperd
A bit more advanced wallpaper daemon with automatic wallpaper changing options A slightly more advanced wallpaper daemon with automatic wallpaper changing options
and other fancy stuff. [GitHub](https://github.com/danyspin97/wpaperd). and other fancy stuff. [GitHub](https://github.com/danyspin97/wpaperd).
## mpvpaper ## mpvpaper
@ -29,7 +29,7 @@ A neat mpv wrapper to play a video as your wallpaper.
## swww ## swww
An efficient animated wallpaper daemon for wayland, controlled at runtime, which An efficient animated wallpaper daemon for Wayland, controlled at runtime, which
means you can change wallpapers without even needing to restart. means you can change wallpapers without even needing to restart.
[GitHub](https://github.com/Horus645/swww) [GitHub](https://github.com/Horus645/swww)

View file

@ -6,13 +6,13 @@ title: Hyprland Desktop Portal
An XDG Desktop Portal (later called XDP) is a program that lets other An XDG Desktop Portal (later called XDP) is a program that lets other
applications communicate swiftly with the compositor through D-Bus. applications communicate swiftly with the compositor through D-Bus.
It's used for stuff like e.g. opening file pickers, screen sharing. It's used for things like opening file pickers or screen sharing.
On Wayland, it also requires an implementation. For Hyprland, you'd usually use On Wayland, it also requires an implementation. For Hyprland, you'd usually use
`xdg-desktop-portal-wlr` (later called XDPW) `xdg-desktop-portal-wlr` (later called XDPW)
Unfortunately, due to various reasons the -wlr portal is inferior to the KDE or Unfortunately, due to various reasons the -wlr portal is inferior to the KDE or
Gnome ones. GNOME ones.
In order to bridge the gap, Hyprland has its own fork of XDPW that has more In order to bridge the gap, Hyprland has its own fork of XDPW that has more
features, called features, called
@ -22,7 +22,7 @@ features, called
{{< callout >}} {{< callout >}}
You don't **need** XDPH. Hyprland will work with XDPW, but XDPH has more You don't **need** XDPH. Hyprland will work with XDPW, but XDPH has more
features, like e.g. window sharing. features, such as window sharing.
XDPH will work on other wlroots-based compositors, although limited to the XDPW XDPH will work on other wlroots-based compositors, although limited to the XDPW
features (other will be disabled). features (other will be disabled).
@ -114,15 +114,15 @@ XDPH doesn't implement a file picker. For that, I recommend installing
Should start automatically. Should start automatically.
The most basic way of telling everything is OK is by trying to screenshare The most basic way of seeing if everything is OK is by trying to screenshare
anything, or open OBS and select pipewire source. If XDPH is running, a qt menu anything, or by opening OBS and selecting the PipeWire source. If XDPH is running, a Qt menu
will pop up asking you what to share. will pop up asking you what to share.
If it doesn't, and you get e.g. slurp, then XDPW is launching. In that case, try If it doesn't, or if, for example, `slurp` gets opened instead, then XDPW is launching. In that case, try
removing XDPW. removing XDPW.
XDPH will work on other wlroots compositors, but features available only on XDPH will work on other wlroots compositors, but features available only on
Hyprland will not work (e.g. window sharing) Hyprland will not work (e.g. window sharing).
For a nuclear option, you can use this script and `exec-once` it: For a nuclear option, you can use this script and `exec-once` it:
@ -137,7 +137,7 @@ sleep 2
/usr/lib/xdg-desktop-portal & /usr/lib/xdg-desktop-portal &
``` ```
adjust the paths if incorrect. Adjust the paths if they're incorrect.
## Share picker doesn't use the system theme ## Share picker doesn't use the system theme
@ -148,7 +148,7 @@ dbus-update-activation-environment --systemd --all
systemctl --user import-environment QT_QPA_PLATFORMTHEME systemctl --user import-environment QT_QPA_PLATFORMTHEME
``` ```
If it works, add it to your config in an `exec-once`. If it works, add it to your config in `exec-once`.
## Using the KDE file picker with XDPH ## Using the KDE file picker with XDPH
@ -158,7 +158,7 @@ XDPH does not implement a file picker and uses the GTK one as a fallback by defa
default=hyprland;gtk default=hyprland;gtk
org.freedesktop.impl.portal.FileChooser=kde org.freedesktop.impl.portal.FileChooser=kde
``` ```
You can read more about this in the [xdg-desktop-portal documentation in the Arch Wiki](https://wiki.archlinux.org/title/XDG_Desktop_Portal). Note that some applications like Firefox might require additional configuration to use the KDE file picker. You can read more about this in the [xdg-desktop-portal documentation in the Arch Wiki](https://wiki.archlinux.org/title/XDG_Desktop_Portal). Note that some applications like Firefox may require additional configuration to use the KDE file picker.
## Debugging ## Debugging
@ -167,5 +167,5 @@ logs.
`systemctl --user status xdg-desktop-portal-hyprland` `systemctl --user status xdg-desktop-portal-hyprland`
if you see a crash, it's most likely you are missing `qt6-wayland` and/or If you see a crash, it's likely you are missing either `qt6-wayland` or
`qt5-wayland`. `qt5-wayland`.