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.
```ini
animation=NAME,ONOFF,SPEED,CURVE,STYLE
or
animation=NAME,ONOFF,SPEED,CURVE
animation=NAME,ONOFF,SPEED,CURVE[,STYLE]
```
`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
```
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 >}}
@ -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
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.:
```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"
```
check out your switches in `hyprctl devices`.
You can view your switches in `hyprctl devices`.
### Multiple binds to one key
@ -143,7 +143,7 @@ bindrl=MOD,KEY,exec,amongus
Flags:
```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.
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.
@ -169,14 +169,14 @@ bindr=SUPER, SUPER_L, exec, pkill wofi || wofi
## Mouse Binds
Mouse binds are binds that heavily rely on a mouse, usually its movement. They
will have one less arg, and look for example like this:
Mouse binds are binds that rely on mouse movement. They
will have one less arg, and may look like this:
```ini
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.
_Available mouse binds_:
@ -242,10 +242,9 @@ Will pass MOUSE5 to TeamSpeak3.
{{< callout >}}
XWayland is a bit wonky. Make sure that what you're passing is a "global Xorg
keybind", otherwise passing from a different XWayland app may not work.
It works flawlessly with all native Wayland applications though.
This works flawlessly with all native Wayland applications. However, XWayland is a bit wonky.
Make sure that what you're passing is a "global Xorg keybind",
otherwise passing from a different XWayland app may not work.
{{< /callout >}}
@ -276,9 +275,9 @@ Please note that this function will _only_ work with
## Submaps
If you want keybind submaps, also known as _modes_ or _groups_, for example if
you press <key>ALT</key> + <key>R</key>, you can enter a "resize" mode, resize
with arrow keys, and leave with escape, do it like this:
Keybind submaps, also known as _modes_ or _groups_, allow you to activate a
seperate set of keybinds. For example, if you want to enter a "resize" mode
which allows you to resize windows with the arrow keys, you can do it like this:
```ini
# 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
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
# 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.
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!_**

View file

@ -29,7 +29,7 @@ layout pages (See the sidebar).
| closewindow | closes a specified window | window |
| workspace | changes the workspace | workspace |
| 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 |
| 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 |
@ -102,13 +102,13 @@ The new groups border colors are configurable with the appropriate `col.`
settings in the `group` config section.
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
used to toggle an independent global group lock that will prevent new window
windows from entering this group. In addition, the `lockgroups` dispatcher can be
used to toggle an independent global group lock that will prevent new windows
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
`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.
## Workspaces
@ -173,8 +173,8 @@ bind = SUPER, C, movetoworkspace, special
## Executing with rules
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
your process e.g. forks and then the fork opens a window, this will not work.
better, some worse. It records the PID of the spawned process and uses that. For example, if
your process forks and then the fork opens a window, this will not work.
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 |
| 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.:

View file

@ -29,8 +29,8 @@ three_param_keyword = A, B, # OK
## Executing
you can execute a shell script on startup of the compositor or on each time it's
reloaded.
You can execute a shell script on startup of the compositor or every time
the config is reloaded.
`exec-once=command` will execute only on launch
@ -38,25 +38,25 @@ reloaded.
## Defining variables
You can define your own custom variables like this:
You can define your own custom variables using a dollar sign (`$`):
```ini
$VAR = value
```
for example:
For example:
```ini
$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
col.active_border=$MyColor
```
You ARE allowed to do this:
You are allowed to combine variables in-place with other strings, like this:
```ini
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
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.
To set a wallpaper, use a wallpaper utility like
@ -167,7 +167,7 @@ layerrule = blur,NAMESPACE
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:

View file

@ -5,7 +5,7 @@ title: Master Layout
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
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.
![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 |
| 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 >}}
example usage:
Example usage:
```ini
bind=MOD,KEY,layoutmsg,cyclenext

View file

@ -5,7 +5,7 @@ title: Monitors
## General
The general config of a monitor looks like this
The general config of a monitor looks like this:
```ini
monitor=name,resolution,position,scale
@ -17,7 +17,7 @@ A common example:
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).
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
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`.
{{</ 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
match.
You can use `preferred` as a resolution to use the display's preferred size and
`auto` as a position to let Hyprland decide on a position for you.
You can use `preferred` as a resolution to use the display's preferred size,
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.
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
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
`hyprctl monitors` for more details). If the output of `hyprctl monitors` looks
like the following:
@ -145,14 +132,15 @@ screensaver style (just turn off the monitor) use the `dpms`
## 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
monitor=name,addreserved,TOP,BOTTOM,LEFT,RIGHT
```
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.
## 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
```
See bellow for more detail about each argument.
See below for more detail about each argument.
### Mirrored displays
@ -221,24 +209,6 @@ flipped + 180 degrees -> 6
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
See [Workspace Rules](../Workspace-Rules).

View file

@ -5,7 +5,7 @@ title: Multi-GPU
## 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
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
from using the dedicated GPU on modern systems in most cases. Hyprland can be
run on integrated GPUs just fine. The same principle applies for desktop setups
with a lower and higher power rating GPUs respectively.
with lower and higher power rating GPUs respectively.
{{< /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.
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
feeling laggy then try setting the scaling to integer numbers such as `1` or `2`
If you have problems with your graphics card having high usage or Hyprland
feeling laggy, try setting the scaling to integer numbers such as `1` or `2`
like in this example `monitor=,preferred,auto,2`.
## Low FPS/stutter/FPS drops on Intel iGPU with TLP (mainly laptops)

View file

@ -78,13 +78,7 @@ Likely issue with your graphics driver.
Please _do not_ report issues if this is the culprit. Unfortunately, it's most
likely your GPU driver's fault.
Could be the below as well
### Other graphical issues
or
### Hyprland instantly crashes on launch
### Other graphical issues/Hyprland instantly crashes on launch
Likely issue with `WLR_DRM_NO_ATOMIC`.

View file

@ -25,9 +25,9 @@ For live event handling, see the [socket2](../../IPC/).
## 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.
@ -49,7 +49,7 @@ Returns: `ok` on success, an error message on fail.
See [Dispatchers](../Dispatchers) for a list of dispatchers.
### Keyword
### keyword
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.
### Reload
### reload
issue a `reload` to force reload the config.
Issue a `reload` to force reload the config.
### 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.
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
`DEVICE` using `hyprctl devices` command.
example command for a typical keyboard:
Example command for a typical keyboard:
```sh
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
```
or disable:
To disable:
```sh
hyprctl seterror disable
@ -270,7 +270,7 @@ hyprctl dismissnotify -1 # dismiss all notifications (same as no arguments)
## Info
```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
workspaces - lists all workspaces with their properties
activeworkspace - gets the active workspace and its properties
@ -283,10 +283,10 @@ activewindow - gets the active window name and its properties
layers - lists all the layers
splash - prints the current random splash
getoption [option] - gets the config option status (values)
cursorpos - gets the current cursor pos in global layout coordinates
animations - gets the current config'd info about animations and beziers
instances - lists all running instances of hyprland with their info
layouts - lists all layouts available (including plugin'd ones)
cursorpos - gets the current cursor position in global layout coordinates
animations - gets the currently configured info about animations and beziers
instances - lists all running instances of Hyprland with their info
layouts - lists all layouts available (including from plugins)
configerrors - lists all current config parsing errors
rollinglog - prints tail of the log
```
@ -301,11 +301,11 @@ hyprctl getoption general:border_size
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
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.

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. |
| float | floating point number |
| 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 `,`) |
| 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` |
@ -176,21 +176,21 @@ _[More about Animations](../Animations)._
| 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\]\] |
| 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_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\]\]
| 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 |
| 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_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 |
| 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 |
| 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 |
| 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 |
@ -226,7 +226,7 @@ For switchable keyboard configurations, take a look at
`custom <step> <points...>`
for example `custom 200 0.0 0.5`
Example: `custom 200 0.0 0.5`
#### `scroll_points`
@ -234,7 +234,7 @@ NOTE: Only works when `accel_profile` is set to `custom`.
`<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
[this script](https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9).
@ -252,7 +252,7 @@ _Subcategory `input:touchpad:`_
| name | description | type | default |
| --- | --- | --- | --- |
| 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 |
| 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\]\] |
@ -267,8 +267,8 @@ _Subcategory `input:touchdevice:`_
| 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 |
| output | the monitor to bind touch devices. The default is autodetection. To stop autotection use an empty string or the "\[\[Empty\]\]" value. | string | \[\[Auto\]\] |
| 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 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 |
#### Tablet
@ -326,7 +326,7 @@ _Subcategory `group:groupbar:`_
| --- | --- | --- | --- |
| enabled | enables groupbars | bool | true |
| 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 |
| height | height of the groupbar | int | 14 |
| priority | sets the decoration priority for groupbars | int | 3 |
@ -342,12 +342,12 @@ _Subcategory `group:groupbar:`_
| name | description | type | default |
|---|---|---|---|
| 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_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 |
| 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 |
| 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 |
| 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 |
@ -367,7 +367,7 @@ _Subcategory `group:groupbar:`_
| 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_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 |
| 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 |
@ -380,7 +380,7 @@ _Subcategory `group:groupbar:`_
| 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 |
| 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 |
| 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 |
@ -422,7 +422,7 @@ Only for developers.
| 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 |
| 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 |
### More

View file

@ -50,16 +50,16 @@ windowrulev2 = float,class:(kitty),title:(kitty)
{{< 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.
for example a window rule of:
For example, a window rule of:
`windowrule=opacity 0.3 override 0.3 override,title:(.*)(- Youtube)$` will match
_any_ window that contains a string of "- Youtube" after any other text. This
could be multiple browser windows or other applications that contain the string
for any reason.
for the `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
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.
{{< 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 >}}
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 type=warning >}}
Please beware that `hyprctl clients` will display the field as **initialClass** while the WINDOW field in the configuration uses `initialclass`.
{{< /callout >}}
## 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 |
| ---- | ----------- |
@ -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. |
| 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. |
| 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) |
@ -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
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
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
```
-> all non-fullscreen kitty windows will have opacity 0.8, except if they are floating. Then
they will have opacity 0.5. -> all non-fullscreen floating windows will have opacity 0.5.
Here, all non-fullscreen kitty windows will have `opacity 0.8`, except if they are floating.
Otherwise, they will have `opacity 0.5`. The rest of the non-fullscreen floating windows will have `opacity 0.5`.
```ini
windowrulev2 = opacity 0.5 0.5,floating:1
windowrulev2 = opacity 0.8 0.8,class:^(kitty)$
```
-> all kitty windows will have opacity 0.8, also if they are floating. -> all
other floating windows will have opacity 0.5.
Here, all kitty windows will have `opacity 0.8`, even if they are floating.
The rest of the floating windows will have `opacity 0.5`.
{{< callout type=info >}}
Opacity is a PRODUCT of all opacities by default. E.g. `active_opacity` to 0.5 and
windowrule opacity to 0.5 will result in a total opacity 0.25. You are allowed
Opacity is a PRODUCT of all opacities by default. For example, setting `activeopacity` to 0.5
and `opacity` to 0.5 will result in a total opacity of 0.25. You are allowed
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
graphical glitches. You can use `override` after an opacity to make it override
instead of a multiplier. E.g. to set active and inactive opacity to 0.8,
and make fullscreen fully opaque regardless of other opacity rules:
glitches. For example, using `0.5 * 2 = 1` is fine, but `0.5 * 4 = 2` will cause
graphical glitches. You can put `override` after an opacity value to override it to an exact value
rather than a multiplier. For example, to set active and inactive opacity to 0.8,
and make fullscreen windows fully opaque regardless of other opacity rules:
```ini
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
Some things in wayland are not windows, but layers. That includes for example
most launchers, your status bar or wallpaper.
Some things in Wayland are not windows, but layers. That includes, for example:
app launchers, status bars, or wallpapers.
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 |
| --- | --- |
| 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 |
| blur | enables blur for the layer |
| blurpopups | enables blur for the popups |

View file

@ -51,7 +51,7 @@ workspace=w[tg1-4],shadow:false
| 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 |
| 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 |

View file

@ -3,7 +3,7 @@ weight: 12
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
@ -19,4 +19,4 @@ Matrix: `#hyprland:matrix.vaxry.net`
## Other
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`
attach and profile in your preferred way.
Attach and profile in your preferred way.
### Meson
@ -62,7 +62,7 @@ This code can go in the `package` attribute of the NixOS/Home Manager modules.
## 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
`/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.log`.

View file

@ -5,15 +5,13 @@ title: Crashes and Bugs
## Getting the log
If you are in a TTY, and the hyprland session that crashed was the last one you
launched, the log will be printed with
If you are in a TTY, and the Hyprland session that crashed was the last one you
launched, the log can be printed with
```sh
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
```sh
@ -62,7 +60,7 @@ issue on GitHub.
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`

View file

@ -8,7 +8,7 @@ title: FAQ
This just means they are running through XWayland, which physically cannot scale
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).
If they can't, see [the XWayland page](../Configuring/XWayland).
@ -32,8 +32,7 @@ _[wiki page](../Crashes-and-Bugs)_
### Me cursor no render?
Are you on NVIDIA? If so, then you have been naughty and haven't listened
to my tips on other pages. Use the `WLR_NO_HARDWARE_CURSORS=1` environment
If you are on NVIDIA, you may need to use the `WLR_NO_HARDWARE_CURSORS=1` environment
variable.
### 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?
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
GitHub pages).
@ -122,7 +121,7 @@ update the package. Paru has been problematic with updating before, use Yay.
### 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?
@ -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?
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
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?
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:
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
```
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.
@ -247,10 +246,10 @@ env = XDG_CURRENT_DESKTOP,Hyprland
### How to disable middle-click paste?
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
You can simply intercept the middle-click action all together via Hyprland
binds. However, there are drawbacks to this solution. It disables the
rest of the functionality of the middle-click action, such as auto scroll,
closing browser tabs, etc., and 2. many applications (such as kitty) manually
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
themselves, bypassing the solution altogether. For this solution, add this bind
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)
**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>
@ -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
Some programs like flameshot (currently) has limited wayland support so on most
Wayland compositors, you will have to do few tweaks. For Hyprland, you can add
these window rules to your config to make said programs work with both of your
Some programs like Flameshot (currently) have limited Wayland support, so on most
Wayland compositors, you will have to do a few tweaks. For Hyprland, you can add
these window rules to your config to make these programs work with both of your
screens.
```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
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
`FN+SUPER` doesn't work, consult your laptop's manual.
@ -335,12 +334,10 @@ bind = SUPER,Escape,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
keybinds and passes them on to the vm.
Then, pressing `SUPER + Escape` will leave that mode.
By pressing the selected combo, you will enter a mode where Hyprland ignores your
keybinds and passes them on to the VM. Pressing `SUPER + Escape` will leave that mode.
### 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
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
from steam.
from Steam.
Steam has its own file picker, however, it's not functional. Install
`xdg-desktop-portal-gtk` to show the desktop's file picker.

View file

@ -19,14 +19,14 @@ might have **major** issues running Hyprland.
## Installation
Installing Hyprland is very easy. Either you install it from your local package
provider (if they provide pkgs for Hyprland) or you install/build it yourself.
Installing Hyprland is very easy. Simply install it with your package manager
(if there is a Hyprland package available) or install/build it yourself.
{{< callout >}}
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
with `yay -Syu --devel`, or your other preferred package manager.
with `yay -Syu --devel`, or your preferred package manager.
{{< /callout >}}

View file

@ -101,7 +101,7 @@ If your cursor does not appear, then see
## 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` /
`qt6ct` for their respective Qt versions. Some older applications may also
require `qt4ct`.

View file

@ -3,7 +3,7 @@ weight: 4
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 >}}

View file

@ -7,7 +7,7 @@ over the widely used xcursor.
## 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`
@ -53,5 +53,5 @@ icons and XCursors in both `/usr/share/icons` and `~/.icons`.
## 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`.

View file

@ -3,13 +3,13 @@ weight: 3
title: hypridle
---
hypridle is hyprland's idle management daemon.
hypridle is Hyprland's idle management daemon.
## Configuration
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
startup edit `hyprland.conf` and add: `exec-once = hypridle`.
startup, edit `hyprland.conf` and add: `exec-once = hypridle`.
### General

View file

@ -4,7 +4,7 @@ title: hyprlock
---
hyprlock is a simple, yet fast, multi-threaded and GPU-accelerated screen lock
for hyprland.
for Hyprland.
## 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 |
| no_fade_in | disables the fadein 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 |
## 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 |
| -- | -- |
| ESC | Clear password buffer |
@ -62,7 +62,7 @@ widget_name {
### 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 |
| -- | -- | -- | -- |
| shadow_passes | passes for shadow, 0 to disable | int | 0 |
@ -188,7 +188,7 @@ input-field {
#### 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:
- `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
---
hyprpaper is a fast, IPC-controlled wallpaper utility for hyprland.
hyprpaper is a fast, IPC-controlled wallpaper utility for Hyprland.
## Configuration
The config file is located at `~/.config/hypr/hyprpaper.conf`. It is not
required.
Configuration is done via `preload`s, which _load_ an image into memory. Then,
you use `wallpaper` keywords to apply the preloaded image to your monitor(s):
Configuration is done using `preload`, which _loads_ an image into memory. Then,
the `wallpaper` keyword is used to apply the preloaded image to your monitor(s):
```ini
preload = /home/me/amongus.png
@ -20,8 +20,8 @@ wallpaper = DP-1,/home/me/amongus.png
For wallpaper keywords:
You can also `unload` preloaded images to free up memory. `unload all` and
`unload unused` are a thing too.
You can use `unload` to unload preloaded images. You can also specify `unload all`
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:
`exec-once = hyprpaper`.

View file

@ -3,7 +3,7 @@ weight: 2
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

View file

@ -69,15 +69,15 @@ e.g.: `workspace>>2`
{{< callout type=warning >}}
A fullscreen event is not guaranteed to fire on/off once in succession. A window
might do for example 3 requests to be fullscreen'd, which would result in 3
A fullscreen event is not guaranteed to fire on/off once in succession. Some windows
may fire multiple requests to be fullscreened, resulting in multiple
fullscreen events.
{{< /callout >}}
## 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
#!/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).
## 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
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
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
services. This is the most common with user-configured services such as
`hypridle` or `swayidle`.

View file

@ -137,5 +137,5 @@ in {
## 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).

View file

@ -47,13 +47,13 @@ nix profile install github:guibou/nixGL --impure
`--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
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

View file

@ -44,7 +44,7 @@ See [XWayland](../../Configuring/XWayland).
## Using Nix repl
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 repl

View file

@ -10,20 +10,17 @@ have had success with the instructions on this page.
You can choose between the proprietary
[Nvidia drivers](https://wiki.archlinux.org/title/NVIDIA) or the open source
[Nouveau driver](https://wiki.archlinux.org/title/Nouveau). Under the
proprietary Nvidia drivers category, there are 3 of them: the current driver
[Nouveau driver](https://wiki.archlinux.org/title/Nouveau). For the
proprietary drivers, there are 3 of them: the current driver
named 'nvidia' (or 'nvidia-dkms' to use with custom linux kernels) which is
under active development, the legacy drivers 'nvidia-3xxxx' for older cards
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
driver for newer cards.
If your card is supported by the proprietary nvidia drivers, there is a very
high chance that you will most likely want to use those. Benefits include but
are not limited to:
- (Much) better gaming performance
- Better power management on recent GPUs
If the proprietary drivers support your graphics card, it's generally recommended
to use them instead, as it includes significantly improved gaming performance
and power management for recent GPUs.
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
@ -54,12 +51,10 @@ similarly between the two.
Next up, you need to enable modeset for nvidia, this can be done via editing
the kernel paramaters for your bootloader.
For people using [systemd-boot](https://wiki.archlinux.org/title/systemd-boot)
you can do this by adding `nvidia_drm.modeset=1` to the end of
`/boot/loader/entries/arch.conf`.
For people using
[GRUB](https://wiki.archlinux.org/title/GRUB) you can do this by adding
If you use [systemd-boot](https://wiki.archlinux.org/title/systemd-boot)
you can do this adding `nvidia_drm.modeset=1` to the end of
`/boot/loader/entries/arch.conf`. If you use
[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
`/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.
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
in the 555 series of nvidia driver updates.
Wayland, the root cause of the flickering will likely be solved
in the 555 series of Nvidia driver updates.
### Fixing flickering in XWayland games specifically
@ -233,11 +228,11 @@ More info about explicit sync is available
### Fixing other random flickering (nuclear method)
Do note that this forces performance mode to be active, resulting in
increased power-consumption (from 22W idle on an RTX 3070TI, to 74W).
Note that this forces performance mode to be active, resulting in
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
you in-fact do notice flickering artifacts from being idle for ~5 seconds.
This may not be needed for some users. Only apply these 'fixes' if you
do notice flickering artifacts from being idle for ~5 seconds.
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:
- lowering your monitors' refresh rate, as this can stop the flickering
- lowering your monitor's refresh rate, as this can stop the flickering
altogether
- using the [Nouveau driver](https://wiki.archlinux.org/title/Nouveau) as
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.
Add `nvidia.NVreg_PreserveVideoMemoryAllocations=1` to your kernel parameters if
you don't have it already.
you haven't already.
{{< callout >}}

View file

@ -25,7 +25,7 @@ Let's look at a simple example:
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.
```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:
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,
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,
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;
```
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.
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
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
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`.
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
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
```
once it finishes, you can list your installed plugins with
Once it finishes, you can list your installed plugins with:
```sh
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
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`.
@ -65,8 +65,8 @@ For all options of `hyprpm`, run `hyprpm -h`.
Different plugins may have different build methods, refer to their instructions.
If you don't have hyprland headers installed, clone hyprland, checkout to your
version, build hyprland, and run `sudo make installheaders`. Then build 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
plugin(s).
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?
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.
### Are plugins safe?

View file

@ -9,7 +9,7 @@ replacements for them:
## Discord
- [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
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 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.
[GitHub](https://github.com/Kirottu/anyrun)
## 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)

View file

@ -5,8 +5,8 @@ title: Clipboard managers
_Starting method:_ manual (`exec-once`)
Clipboard Managers are useful tools that allows one to manage their copied
items, be-it texts or images.
Clipboard Managers provide a convenient way to organize and access previously
copied content, including both text and images.
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
text [Github](https://github.com/sentriz/cliphist)
`wl-clip-persist` - When we copy something on Wayland (using wl-clipboard) and
close the application we copied from, the copied data disappears from the
clipboard and we cannot paste it anymore. So to fix this problem we can use a
program called as `wl-clip-persist` which will preserve the data in the
clipboard after the application is closed.
`wl-clip-persist` - When copying something on Wayland, the copied data remains
in the clipboard until the application that was copied from is closed.
After that, the data disappears and can no longer be pasted.
To fix this problem, you can use `wl-clip-persist` which will preserve the data
in the clipboard after the application is closed.
[Github](https://github.com/Linus789/wl-clip-persist)
## copyq
@ -31,8 +31,8 @@ Start by adding the following lines to your `~/.config/hypr/hyprland.conf`
exec-once = copyq --start-server
```
If your `copyq`'s main window cannot close/hide properly, try to enable its
"Hide main window" option in Layout configuration tab in Preferences dialog.
If the main window of `copyq` cannot close/hide properly, try to enable its
"Hide main window" option in the Layout configuration tab in the Preferences dialog.
## 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
```
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`,
again head over to `~/.config/hypr/hyprland.conf`
you can edit it in `~/.config/hypr/hyprland.conf`.
### 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
```
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
@ -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
```
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
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
`~/.local/share/clipman-primary.json`
Ensure that `~/.local/share/clipman-primary.json` is already created.
Now bind the `clipman` like this:
Now you can bind `clipman` like this:
### For `rofi` users
@ -108,5 +107,5 @@ bind = SUPER, V, exec, clipman pick -t dmenu
bind = SUPER, V, exec, clipman pick -t wofi
```
So on and so forth. For further information, please refer to the repository
mentioned above
...and so on. For further information, please refer to the repository
mentioned above.

View file

@ -6,7 +6,7 @@ title: Color pickers
Color pickers are useful for quickly grabbing a color of _something_ on your
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.
## Hyprpicker

View file

@ -1,5 +1,5 @@
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
@ -9,7 +9,7 @@ A cool, fast, IPC-controlled wallpaper utility.
## hyprpicker
A neat color picker for your hyprland desktop.
A neat color picker for your Hyprland desktop.
[Github link](https://github.com/hyprwm/hyprpicker)
@ -19,13 +19,13 @@ A must-have, see [The wiki page](../xdg-desktop-portal-hyprland)
## 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)
## 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)

View file

@ -6,7 +6,7 @@ title: Must have
This page documents software that is **strongly** recommended to have running
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.
### A notification daemon
@ -15,37 +15,37 @@ _Starting method:_ most likely manual (`exec-once`)
Many apps (e.g. Discord) may freeze without one running.
Use e.g. `dunst`, `mako`, `swaync`, etc.
Examples: `dunst`, `mako`, and `swaync`.
### 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
it.
Install `pipewire` and `wireplumber` (**not** `pipewire-media-session`)
Install `pipewire` and `wireplumber` (**not** `pipewire-media-session`).
#### Non-systemd distros
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.
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.
[^1]: https://wiki.gentoo.org/wiki/PipeWire#OpenRC
### 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,
screensharing, etc.
See the [Hyprland Desktop Portal Page](../xdg-desktop-portal-hyprland)
See the [Hyprland Desktop Portal Page.](../xdg-desktop-portal-hyprland)
### Authentication Agent

View file

@ -20,7 +20,7 @@ Hyprland.
### IPC wrappers
[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
@ -38,10 +38,10 @@ swapping and scheduling screen shaders; also functions as an
_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.
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.
@ -57,7 +57,7 @@ Head over to your `~/.config/hypr/hyprland.conf` and add the following lines:
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.
[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
If your screensharing application is running under XWayland (like Discord,
Skype,...), it can only see other XWayland windows and cannot share an entire
If your screensharing application is running under XWayland (like Discord or
Skype), it can only see other XWayland windows and cannot share an entire
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
can use
[this AUR package](https://aur.archlinux.org/packages/xwaylandvideobridge-git)
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
[this issue](https://invent.kde.org/system/xwaylandvideobridge/-/issues/1) for
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
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
to your hyprland configuration that reads `exec-once=waybar`
would like Waybar to launch alongside Hyprland, you can do this by adding a line
to your Hyprland configuration that reads `exec-once=waybar`.
### Waybar popups render behind the windows
@ -36,7 +36,7 @@ Replace `#workspaces button.focused` with `#workspaces button.active` in
### 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
look like this:
@ -52,14 +52,14 @@ look like this:
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
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`.
### Window title is missing
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
waybar config, insert this module:
Waybar config, insert this module:
```json
"modules-center": ["hyprland/window"],
@ -226,9 +226,9 @@ socat -u UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | s
## Hybrid
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
@ -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
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`
#### 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 `gtk-layer-shell` and can be changed in the HybridBar configuration
at

View file

@ -19,7 +19,7 @@ change, and don't want to make a config file. Get it
## 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).
## mpvpaper
@ -29,7 +29,7 @@ A neat mpv wrapper to play a video as your wallpaper.
## 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.
[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
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
`xdg-desktop-portal-wlr` (later called XDPW)
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
features, called
@ -22,7 +22,7 @@ features, called
{{< callout >}}
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
features (other will be disabled).
@ -114,15 +114,15 @@ XDPH doesn't implement a file picker. For that, I recommend installing
Should start automatically.
The most basic way of telling everything is OK is by trying to screenshare
anything, or open OBS and select pipewire source. If XDPH is running, a qt menu
The most basic way of seeing if everything is OK is by trying to screenshare
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.
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.
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:
@ -137,7 +137,7 @@ sleep 2
/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
@ -148,7 +148,7 @@ dbus-update-activation-environment --systemd --all
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
@ -158,7 +158,7 @@ XDPH does not implement a file picker and uses the GTK one as a fallback by defa
default=hyprland;gtk
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
@ -167,5 +167,5 @@ logs.
`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`.