mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-15 01:35:58 +01:00
Configuring: reword/revamp
This commit is contained in:
parent
89102aeda3
commit
5281cfaf6f
13 changed files with 378 additions and 362 deletions
|
@ -95,7 +95,8 @@ specify a movement percentage. For example, the following will make windows move
|
|||
animation = workspaces, 1, 8, default, slidefade 20%
|
||||
```
|
||||
|
||||
For animation style `slide` in windows and layers you can specify a forced side, e.g.:
|
||||
For animation style `slide` in windows and layers you can specify a forced side,
|
||||
e.g.:
|
||||
|
||||
```ini
|
||||
animation = windows, 1, 8, default, slide left
|
||||
|
|
|
@ -61,9 +61,9 @@ You can also unbind with `unbind`, e.g.:
|
|||
unbind = SUPER, O
|
||||
```
|
||||
|
||||
May be useful for dynamic keybindings with `hyprctl`.
|
||||
May be useful for dynamic keybindings with `hyprctl`:
|
||||
|
||||
```sh
|
||||
```bash
|
||||
hyprctl keyword unbind SUPER, O
|
||||
```
|
||||
|
||||
|
@ -180,7 +180,7 @@ bindrl=MOD,KEY,exec,amongus
|
|||
|
||||
Flags:
|
||||
|
||||
```ini
|
||||
```
|
||||
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.
|
||||
|
@ -273,12 +273,12 @@ bindr=ALT,Alt_L,exec,amongus
|
|||
Yes, you heard this right, Hyprland does support global keybinds for ALL apps,
|
||||
including OBS, Discord, Firefox, etc.
|
||||
|
||||
See the [`pass` dispatcher](../Dispatchers/#list-of-dispatchers) and the [`sendshortcut` dispatcher](../Dispatchers/#list-of-dispatchers) for keybinds.
|
||||
See the [`pass` dispatcher](../Dispatchers/#list-of-dispatchers) and the
|
||||
[`sendshortcut` dispatcher](../Dispatchers/#list-of-dispatchers) for keybinds.
|
||||
|
||||
Let's take OBS as an example: the "Start/Stop Recording" keybind is set to
|
||||
<key>SUPER</key> + <key>F10</key>, and you want to make it work globally.
|
||||
|
||||
Simply add
|
||||
<key>SUPER</key> + <key>F10</key>, and you want to make it work globally. Simply
|
||||
add
|
||||
|
||||
```ini
|
||||
bind = SUPER, F10, pass, ^(com\.obsproject\.Studio)$
|
||||
|
@ -301,12 +301,13 @@ You may also add shortcuts, where other keys are passed to the window.
|
|||
bind = SUPER, F10, sendshortcut, SUPER, F4, ^(com\.obsproject\.Studio)$
|
||||
```
|
||||
|
||||
Will send <key>SUPER</key> + <key>F4</key> to OBS if you press <key>SUPER</key> + <key>F10</key>.
|
||||
Will send <key>SUPER</key> + <key>F4</key> to OBS if you press
|
||||
<key>SUPER</key> + <key>F10</key>.
|
||||
|
||||
{{< callout >}}
|
||||
|
||||
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",
|
||||
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 >}}
|
||||
|
@ -318,12 +319,11 @@ xdg-desktop-portal.
|
|||
|
||||
If that's the case, then it's recommended to use this method instead of `pass`.
|
||||
|
||||
Open your desired app and issue `hyprctl globalshortcuts`. This will give you a
|
||||
list of currently registered shortcuts with their description(s).
|
||||
Open your desired app and run `hyprctl globalshortcuts` in a terminal. This will
|
||||
give you a list of currently registered shortcuts with their description(s).
|
||||
|
||||
Choose whichever you like, for example `coolApp:myToggle`
|
||||
|
||||
Bind it to whatever you want with the `global` dispatcher:
|
||||
Choose whichever you like, for example `coolApp:myToggle`, and bind it to
|
||||
whatever you want with the `global` dispatcher:
|
||||
|
||||
```ini
|
||||
bind = SUPERSHIFT, A, global, coolApp:myToggle
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
---
|
||||
weight: 1
|
||||
title: Configuring Hyprland
|
||||
---
|
||||
|
||||
The config is located in `~/.config/hypr/hyprland.conf`.
|
||||
|
||||
You can tell Hyprland to use a specific configuration file by using the
|
||||
`--config` (or `-c`) argument.
|
||||
|
||||
Hyprland will automatically generate an example config for you if you don't have
|
||||
one. You can find an example config
|
||||
[here](https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.conf).
|
||||
|
||||
By removing the line `autogenerated=1` you'll remove the yellow warning.
|
||||
|
||||
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!_**
|
||||
|
||||
{{< callout >}}
|
||||
|
||||
The default config is not complete and does not list all the options / features
|
||||
of Hyprland. Please refer to this wiki page and the pages linked further down
|
||||
here for full configuration instructions.
|
||||
|
||||
**Make sure to read the [Variables](../Variables) page as well**. It covers all
|
||||
the toggleable / numerical options.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
## Line style
|
||||
|
||||
Every config line is a command followed by a value.
|
||||
|
||||
```ini
|
||||
COMMAND=VALUE
|
||||
```
|
||||
|
||||
The command can be a variable, or a special keyword (described further in this
|
||||
page)
|
||||
|
||||
You are **allowed to** input trailing spaces at the beginning and end.
|
||||
|
||||
e.g.:
|
||||
|
||||
```ini
|
||||
COMMAND = VALUE
|
||||
```
|
||||
|
||||
is valid.
|
||||
|
||||
### Comments
|
||||
|
||||
Comments are started with the `#` character.
|
||||
|
||||
If you want to escape it (put an actual `#` and not start a comment) you can use
|
||||
`##`. It will be turned into a single `#` that WILL be a part of your line.
|
||||
|
||||
### Escaping errors
|
||||
|
||||
If you use plugins, you may want to ignore errors from missing options/keywords
|
||||
so that you don't get an error bar before they are loaded. To do so, do this:
|
||||
|
||||
```ini
|
||||
# hyprlang noerror true
|
||||
|
||||
bind = MOD, KEY, something, amogus
|
||||
someoption = blah
|
||||
|
||||
# hyprlang noerror false
|
||||
```
|
||||
|
||||
## Basic configuring
|
||||
|
||||
To configure the "options" of Hyprland, animations, styling, etc. see
|
||||
[Variables](../Variables).
|
||||
|
||||
## Advanced configuring
|
||||
|
||||
Some keywords (binds, curves, execs, monitors, etc.) are not variables but
|
||||
define special behavior.
|
||||
|
||||
See all of them in [Keywords](../Keywords) and the sidebar.
|
|
@ -84,7 +84,7 @@ layout pages (See the sidebar).
|
|||
|
||||
{{< callout type=warning >}}
|
||||
|
||||
it is NOT recommended to set DPMS with a keybind directly, as it might cause
|
||||
It is NOT recommended to set DPMS with a keybind directly, as it might cause
|
||||
undefined behavior. Instead, consider something like
|
||||
|
||||
```ini
|
||||
|
@ -123,17 +123,22 @@ You have nine choices:
|
|||
|
||||
- Relative ID: e.g. `+1`, `-3` or `+100`
|
||||
|
||||
- workspace on monitor, relative with `+` or `-`, absolute with `~`: e.g. `m+1`, `m-2` or `m~3`
|
||||
- workspace on monitor, relative with `+` or `-`, absolute with `~`: e.g. `m+1`,
|
||||
`m-2` or `m~3`
|
||||
|
||||
- workspace on monitor including empty workspaces, relative with `+` or `-`, absolute with `~`: e.g. `r+1` or `r~3`
|
||||
- workspace on monitor including empty workspaces, relative with `+` or `-`,
|
||||
absolute with `~`: e.g. `r+1` or `r~3`
|
||||
|
||||
- open workspace, relative with `+` or `-`, absolute with `~`: e.g. `e+1`, `e-10`, or `e~2`
|
||||
- open workspace, relative with `+` or `-`, absolute with `~`: e.g. `e+1`,
|
||||
`e-10`, or `e~2`
|
||||
|
||||
- Name: e.g. `name:Web`, `name:Anime` or `name:Better anime`
|
||||
|
||||
- Previous workspace: `previous`, or `previous_per_monitor`
|
||||
|
||||
- First available empty workspace: `empty`, suffix with `m` to only search on monitor. and/or `n` to make it the *next* available empty workspace. e.g. `emptynm`
|
||||
- First available empty workspace: `empty`, suffix with `m` to only search
|
||||
on monitor. and/or `n` to make it the *next* available empty workspace. e.g.
|
||||
`emptynm`
|
||||
|
||||
- Special Workspace: `special` or `special:name` for named special workspaces.
|
||||
|
||||
|
@ -168,7 +173,7 @@ limited to 97 at a time.
|
|||
For example, to move a window/application to a special workspace you can use the
|
||||
following syntax:
|
||||
|
||||
```
|
||||
```ini
|
||||
bind = SUPER, C, movetoworkspace, special
|
||||
#The above syntax will move the window to a special workspace upon pressing 'SUPER'+'C'.
|
||||
#To see the hidden window you can use the togglespecialworkspace dispatcher mentioned above.
|
||||
|
@ -177,20 +182,21 @@ 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. For example, if
|
||||
your process forks and then the fork opens a window, this will not work.
|
||||
Rules will only be applied once. This means dynamic rules will be overridden as soon as a
|
||||
property of the window changes (e.g. switching focus). To make dynamic rules stick around
|
||||
use `hyprctl setprop` (see [Using hyprctl](../Using-hyprctl)).
|
||||
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. Rules will only be applied once. This means dynamic rules will be
|
||||
overridden as soon as a property of the window changes (e.g. switching focus).
|
||||
To make dynamic rules stick around use `hyprctl setprop` (see
|
||||
[Using hyprctl](../Using-hyprctl)).
|
||||
|
||||
The syntax is:
|
||||
|
||||
```
|
||||
```ini
|
||||
bind = mod, key, exec, [rules...] command
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
```ini
|
||||
bind = SUPER, E, exec, [workspace 2 silent; float; move 0 0] kitty
|
||||
```
|
||||
|
|
|
@ -17,11 +17,8 @@ otherwise in a specific section_:
|
|||
|
||||
```ini
|
||||
three_param_keyword = A, B, C # OK
|
||||
|
||||
three_param_keyword = A, C # NOT OK
|
||||
|
||||
three_param_keyword = A, , C # OK
|
||||
|
||||
three_param_keyword = A, B, # OK
|
||||
```
|
||||
|
||||
|
@ -79,8 +76,7 @@ then lines inside `~/.config/hypr/myColors.conf`, then lines below.
|
|||
|
||||
## Gestures
|
||||
|
||||
Use something like
|
||||
[libinput-gestures](https://github.com/bulletmark/libinput-gestures), with
|
||||
Use [libinput-gestures](https://github.com/bulletmark/libinput-gestures) with
|
||||
`hyprctl` if you want to expand Hyprland's gestures beyond what's offered in
|
||||
[Variables](../Variables).
|
||||
|
||||
|
@ -90,7 +86,7 @@ Per-device config options will overwrite your options set in the `input`
|
|||
section. It's worth noting that ONLY values explicitly changed will be
|
||||
overwritten.
|
||||
|
||||
In order to apply per-device config options, make a new category like this:
|
||||
In order to apply per-device config options, add a new category like this:
|
||||
|
||||
```ini
|
||||
device {
|
||||
|
@ -99,12 +95,15 @@ device {
|
|||
}
|
||||
```
|
||||
|
||||
The `name` can be easily obtained by doing `hyprctl devices`.
|
||||
The `name` can be easily obtained by checking the output of `hyprctl devices`.
|
||||
|
||||
Inside of it, put your config options. All options from the `input` category
|
||||
(and all subcategories, e.g. `input:touchpad`) can be put inside, **EXCEPT**:
|
||||
|
||||
force_no_accel, follow_mouse, float_switch_override_focus, scroll_factor
|
||||
- `force_no_accel`
|
||||
- `follow_mouse`
|
||||
- `float_switch_override_focus`
|
||||
- `scroll_factor`
|
||||
|
||||
Properties that change names:
|
||||
|
||||
|
@ -118,9 +117,9 @@ Remember to use the name of the `Tablet` and not `Tablet Pad` or `Tablet tool`.
|
|||
|
||||
Additional properties only present in per-device configs:
|
||||
|
||||
```plain
|
||||
enabled -> (only for mice / touchpads / touchdevices / keyboards) enables / disables the device (connects / disconnects from the on-screen cursor) - default: Enabled
|
||||
```
|
||||
- `enabled` -> (only for mice / touchpads / touchdevices / keyboards)
|
||||
- enables / disables the device (connects / disconnects from the on-screen cursor)
|
||||
- default: Enabled
|
||||
|
||||
Example config section:
|
||||
|
||||
|
@ -135,17 +134,18 @@ device {
|
|||
|
||||
Example modifying per-device config values using `hyprctl`:
|
||||
|
||||
```plain
|
||||
```bash
|
||||
hyprctl -r -- keyword device[my-device]:sensitivity -1
|
||||
```
|
||||
|
||||
{{< callout type=info >}}
|
||||
|
||||
Per-device layouts will by default not alter the keybind keymap, so for example with a global keymap of `us`
|
||||
and a per-device one of `fr`, the keybinds will still act as if you were on `us`.
|
||||
Per-device layouts will by default not alter the keybind keymap, so for example
|
||||
with a global keymap of `us` and a per-device one of `fr`, the keybinds will
|
||||
still act as if you were on `us`.
|
||||
|
||||
You can change this behavior by setting `resolve_binds_by_sym = 1`.
|
||||
In that case you'll need to type the symbol specified in the bind to activate it.
|
||||
You can change this behavior by setting `resolve_binds_by_sym = 1`. In that case
|
||||
you'll need to type the symbol specified in the bind to activate it.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
|
@ -162,10 +162,10 @@ More can be found in [Useful Utilities](../../Useful-Utilities).
|
|||
|
||||
## Blurring layerSurfaces
|
||||
|
||||
LayerSurfaces are not windows. These are for example: Your wallpapers,
|
||||
Layer surfaces are not windows. These are, for example: wallpapers,
|
||||
notification overlays, bars, etc.
|
||||
|
||||
If you really want to blur them, use a layerrule:
|
||||
If you want to blur them, use a layer rule:
|
||||
|
||||
```ini
|
||||
layerrule = blur, NAMESPACE
|
||||
|
@ -196,15 +196,15 @@ Hyprland's launch.
|
|||
|
||||
{{< /callout >}}
|
||||
|
||||
You can use the `env` keyword to set environment variables at Hyprland's start,
|
||||
e.g.:
|
||||
You can use the `env` keyword to set environment variables when Hyprland starts,
|
||||
e.g:
|
||||
|
||||
```ini
|
||||
env = XCURSOR_SIZE,24
|
||||
```
|
||||
|
||||
You can also add a `d` flag if you want the env var to be exported to D-Bus
|
||||
(systemd only)
|
||||
(systemd only):
|
||||
|
||||
```ini
|
||||
envd = XCURSOR_SIZE,24
|
||||
|
|
|
@ -22,12 +22,12 @@ This will make the monitor on `DP-1` a `1920x1080` display, at
|
|||
|
||||
To list all available monitors (active and inactive):
|
||||
|
||||
```shell
|
||||
```bash
|
||||
hyprctl monitors all
|
||||
```
|
||||
|
||||
Monitors are positioned on a virtual "layout". The `position` is the position of
|
||||
said display in the layout. (calculated from the top-left corner)
|
||||
Monitors are positioned on a virtual "layout". The `position` is the position,
|
||||
in pixels, of said display in the layout. (calculated from the top-left corner)
|
||||
|
||||
For example:
|
||||
|
||||
|
@ -36,14 +36,14 @@ monitor=DP-1, 1920x1080, 0x0, 1
|
|||
monitor = DP-2, 1920x1080, 1920x0, 1
|
||||
```
|
||||
|
||||
will tell hyprland to make DP-1 on the _left_ of DP-2, while
|
||||
will tell Hyprland to put DP-1 on the _left_ of DP-2, while
|
||||
|
||||
```ini
|
||||
monitor = DP-1, 1920x1080, 1920x0, 1
|
||||
monitor = DP-2, 1920x1080, 0x0, 1
|
||||
```
|
||||
|
||||
will tell hyprland to make DP-1 on the _right_.
|
||||
will tell Hyprland to put DP-1 on the _right_.
|
||||
|
||||
The `position` may contain _negative_ values, so the above example could also be
|
||||
written as
|
||||
|
@ -63,14 +63,14 @@ monitor=DP-1, 1920x1080, 0x0, 1
|
|||
monitor = DP-2, 1920x1080, 0x-1080, 1
|
||||
```
|
||||
|
||||
will tell hyprland to make DP-2 _above_ DP-1, while
|
||||
will tell Hyprland to put DP-2 _above_ DP-1, while
|
||||
|
||||
```ini
|
||||
monitor = DP-1, 1920x1080, 0x0, 1
|
||||
monitor = DP-2, 1920x1080, 0x1080, 1
|
||||
```
|
||||
|
||||
will tell hyprland to make DP-2 _below_.
|
||||
will tell Hyprland to put DP-2 _below_.
|
||||
|
||||
{{< callout type=info >}}
|
||||
|
||||
|
@ -84,12 +84,15 @@ 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,
|
||||
or you can use `highres` or `highrr` to get the best possible resolution or refresh rate for your monitor.
|
||||
There are a few special values for the resolutions:
|
||||
- `preferred` - use the display's preferred size and refresh rate.
|
||||
- `highres` - use the highest supported resolution.
|
||||
- `highrr` - use the highest supported refresh rate.
|
||||
|
||||
Position also has a few special values:
|
||||
- `auto` - let Hyprland decide on a position. By default, it places each new monitor to the right of existing ones.
|
||||
- `auto-right/left/up/down` - place the monitor to the right/left, above or below other monitors.
|
||||
|
||||
You can use `auto` as a position to let Hyprland decide on a position for you.
|
||||
If you want to get fancy with multiple monitors you can specify `auto-right` to put your monitor to the right,
|
||||
`auto-down` to position your monitor below, `auto-left` to put it to the left, and `auto-up` to put your monitor above.
|
||||
***Please Note:*** While specifying a monitor direction for your first monitor is allowed, this does nothing and it will
|
||||
be positioned at (0,0). Also the direction is always from the center out, so you can specify `auto-up` then `auto-left`,
|
||||
but the left monitors will just be left of the origin and above the origin. You can also specify duplicate directions and
|
||||
|
@ -104,14 +107,15 @@ Recommended rule for quickly plugging in random monitors:
|
|||
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.
|
||||
This 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.
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
```yaml
|
||||
Monitor eDP-1 (ID 0):
|
||||
1920x1080@60.00100 at 0x0
|
||||
description: Chimei Innolux Corporation 0x150C (eDP-1)
|
||||
|
@ -120,10 +124,10 @@ Monitor eDP-1 (ID 0):
|
|||
[...]
|
||||
```
|
||||
|
||||
then the `description` value up to the portname `(eDP-1)` can be used to specify
|
||||
the monitor:
|
||||
then the `description` value up to, but not including the portname `(eDP-1)` can
|
||||
be used to specify the monitor:
|
||||
|
||||
```
|
||||
```ini
|
||||
monitor = desc:Chimei Innolux Corporation 0x150C, preferred, auto, 1.5
|
||||
```
|
||||
|
||||
|
@ -134,7 +138,7 @@ Remember to remove the `(portname)`!
|
|||
You can set up a custom modeline by changing the resolution field to a modeline,
|
||||
for example:
|
||||
|
||||
```
|
||||
```ini
|
||||
monitor = DP-1, modeline 1071.101 3840 3848 3880 3920 2160 2263 2271 2277 +hsync -vsync, 0x0, 1
|
||||
```
|
||||
|
||||
|
@ -164,9 +168,9 @@ If your workflow requires a custom reserved area, you can add it with:
|
|||
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
|
||||
only use one of these rules per monitor in the config.
|
||||
Where `TOP` `BOTTOM` `LEFT` `RIGHT` are integers, i.e the number in pixels of
|
||||
the reserved area to add. This does stack on top of the calculated reserved area
|
||||
(e.g. bars), but you may only use one of these rules per monitor in the config.
|
||||
|
||||
## Extra args
|
||||
|
||||
|
@ -176,11 +180,11 @@ 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 below for more detail about each argument.
|
||||
See below for more details about each argument.
|
||||
|
||||
### Mirrored displays
|
||||
|
||||
If you want to mirror a display, add a `,mirror,[NAME]` at the end of the
|
||||
If you want to mirror a display, add a `, mirror, <NAME>` at the end of the
|
||||
monitor rule, examples:
|
||||
|
||||
```ini
|
||||
|
@ -191,21 +195,25 @@ monitor=,preferred,auto,1,mirror,DP-1
|
|||
Please remember that mirroring displays will not "re-render" everything for your
|
||||
second monitor, so if mirroring a 1080p screen onto a 4K one, the resolution
|
||||
will still be 1080p on the 4K display. This also means squishing and stretching
|
||||
will occur on non-matching resolutions.
|
||||
will occur on aspect ratios that differ (e.g 16:9 and 16:10).
|
||||
|
||||
### 10 bit support
|
||||
|
||||
If you want to enable 10 bit support for your display, add a `, bitdepth, 10` at
|
||||
the end of the monitor rule, e.g.:
|
||||
the end of the monitor rule, e.g:
|
||||
|
||||
```ini
|
||||
monitor = eDP-1, 2880x1800@90, 0x0, 1, bitdepth, 10
|
||||
```
|
||||
|
||||
**NOTE** Colors registered in Hyprland (e.g. the border color) do _not_ support
|
||||
{{< callout >}}
|
||||
|
||||
Colors registered in Hyprland (e.g. the border color) do _not_ support
|
||||
10 bit.
|
||||
|
||||
**NOTE** Some applications do _not_ support screen capture with 10 bit enabled.
|
||||
Some applications do _not_ support screen capture with 10 bit enabled.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
### VRR
|
||||
|
||||
|
@ -223,15 +231,15 @@ monitor=eDP-1,2880x1800@90,0x0,1,transform,1
|
|||
|
||||
Transform list:
|
||||
|
||||
```ini
|
||||
normal (no transforms) -> 0
|
||||
90 degrees -> 1
|
||||
180 degrees -> 2
|
||||
270 degrees -> 3
|
||||
flipped -> 4
|
||||
flipped + 90 degrees -> 5
|
||||
flipped + 180 degrees -> 6
|
||||
flipped + 270 degrees -> 7
|
||||
```
|
||||
0 -> normal (no transforms)
|
||||
1 -> 90 degrees
|
||||
2 -> 180 degrees
|
||||
3 -> 270 degrees
|
||||
4 -> flipped
|
||||
5 -> flipped + 90 degrees
|
||||
6 -> flipped + 180 degrees
|
||||
7 -> flipped + 270 degrees
|
||||
```
|
||||
|
||||
## Default workspace
|
||||
|
|
|
@ -4,14 +4,7 @@ title: Using hyprctl
|
|||
---
|
||||
|
||||
`hyprctl` is a utility for controlling some parts of the compositor from a CLI
|
||||
or a script. If you install with `make install`, or any package, it should
|
||||
automatically be installed.
|
||||
|
||||
To check if `hyprctl` is installed, simply execute it by issuing `hyprctl` in
|
||||
the terminal.
|
||||
|
||||
If it's not, go to the repo root and `/hyprctl`. Issue a `make all` and then
|
||||
`sudo cp ./hyprctl /usr/bin`.
|
||||
or a script. It should automatically be installed along with Hyprland.
|
||||
|
||||
{{< callout type=warning >}}
|
||||
|
||||
|
@ -27,12 +20,13 @@ For live event handling, see the [socket2](../../IPC/).
|
|||
|
||||
### dispatch
|
||||
|
||||
Issue a `dispatch` to call a keybind dispatcher with an arg.
|
||||
Issue a `dispatch` to call a keybind dispatcher with an argument.
|
||||
|
||||
An arg has to be present, for dispatchers without parameters it can be anything.
|
||||
An argument has to be present, for dispatchers without parameters it can be
|
||||
anything.
|
||||
|
||||
To pass an argument starting with `-` or `--`, such as command line options to
|
||||
`exec` programs, pass `--` as an option. This will disable any subsequent
|
||||
To pass an argument starting with `-` or `--`, such as command line options
|
||||
to `exec` programs, pass `--` as an option. This will disable any subsequent
|
||||
parsing of options by _hyprctl_.
|
||||
|
||||
Examples:
|
||||
|
@ -106,8 +100,9 @@ or
|
|||
hyprctl output remove [name]
|
||||
```
|
||||
|
||||
Where `[backend]` is the name of the backend and `(name)` is an optional name for the output. If `(name)` is not
|
||||
specified, the default naming scheme will be used (`HEADLESS-2`, `WL-1`, etc.)
|
||||
Where `[backend]` is the name of the backend and `(name)` is an optional name
|
||||
for the output. If `(name)` is not specified, the default naming scheme will be
|
||||
used (`HEADLESS-2`, `WL-1`, etc.)
|
||||
|
||||
{{< callout type=info >}}
|
||||
|
||||
|
@ -116,9 +111,12 @@ specified, the default naming scheme will be used (`HEADLESS-2`, `WL-1`, etc.)
|
|||
{{< /callout >}}
|
||||
|
||||
Available backends:
|
||||
- `wayland`: Creates an output as a Wayland window. This will only work if you're already running Hyprland with the Wayland backend.
|
||||
- `headless`: Creates a headless monitor output. If you're running a VNC/RDP/Sunshine server, you should use this.
|
||||
- `auto`: Picks a backend for you. For example, if you're running Hyprland from the TTY, `headless` will be chosen.
|
||||
- `wayland`: Creates an output as a Wayland window. This will only work if
|
||||
you're already running Hyprland with the Wayland backend.
|
||||
- `headless`: Creates a headless monitor output. If you're running a VNC/RDP/
|
||||
Sunshine server, you should use this.
|
||||
- `auto`: Picks a backend for you. For example, if you're running Hyprland from
|
||||
the TTY, `headless` will be chosen.
|
||||
|
||||
For example, to create a headless output named "test":
|
||||
|
||||
|
@ -163,7 +161,7 @@ hyprctl switchxkblayout at-translated-set-2-keyboard next
|
|||
|
||||
{{< callout type=info >}}
|
||||
|
||||
If you want a single variant ie. pl/dvorak on one layout but us/qwerty on the
|
||||
If you want a single variant i.e. pl/dvorak on one layout but us/qwerty on the
|
||||
other, xkb parameters can still be blank, however the amount of comma-separated
|
||||
parameters have to match. Alternatively, a single parameter can be specified for
|
||||
it to apply to all three.
|
||||
|
@ -226,7 +224,9 @@ To get more information about a window, you can use `hyprctl clients`.
|
|||
|
||||
{{< callout type=warning >}}
|
||||
|
||||
Please beware that `hyprctl clients` will display the fields as **initialClass** and **initialTitle** while the regex mode uses `initialclass` and `initialtitle`.
|
||||
Please beware that `hyprctl clients` will display the fields as **initialClass**
|
||||
and **initialTitle** while the regex mode uses `initialclass` and
|
||||
`initialtitle`.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ terminals.
|
|||
|
||||
For now, the supported fields for V2 are:
|
||||
|
||||
```ini
|
||||
```
|
||||
class - class regex
|
||||
title - title regex
|
||||
initialclass - initialClass regex
|
||||
|
@ -166,15 +166,16 @@ The following rules can also be set with [`hyprctl setprop`](../Using-hyprctl#se
|
|||
| immediate \[on\] | forces the window to allow to be torn. See [the Tearing page](../Tearing). |
|
||||
| xray \[on\] | sets blur xray mode for the window |
|
||||
|
||||
When using window rules, \[on\] can be set to `0` for off, `1` for on or not set for default.
|
||||
When using window rules, \[on\] can be set to `0` for off, `1` for on or not set
|
||||
for default.
|
||||
|
||||
When using `hyprctl setprop`, \[on\] can be set to `0` for off, `1` for on, `toggle` to toggle the state or `unset` to unset previous values.
|
||||
When using `hyprctl setprop`, \[on\] can be set to `0` for off, `1` for on,
|
||||
`toggle` to toggle the state or `unset` to unset previous values.
|
||||
|
||||
When using `hyprctl setprop`, \[int\] can also be `unset` to unset previous values.
|
||||
When using `hyprctl setprop`, \[int\] can also be `unset` to unset previous
|
||||
values.
|
||||
|
||||
{{< callout type=info >}}
|
||||
|
||||
## `group` window rule options
|
||||
### `group` window rule options
|
||||
|
||||
- `set` \[`always`\] - Open window as a group.
|
||||
- `new` - Shorthand of `barred set`.
|
||||
|
@ -196,16 +197,14 @@ The `group` rule without options is a shorthand for `group set`.
|
|||
By default, `set` and `lock` only affect new windows once. The `always`
|
||||
qualifier makes them always effective.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
### Tags
|
||||
|
||||
Window may have several tags, either static or dynamic, dynamic tag will have a suffix of `*`.
|
||||
You may check window tags with `hyprctl clients`.
|
||||
Window may have several tags, either static or dynamic, dynamic tag will have a
|
||||
suffix of `*`. You may check window tags with `hyprctl clients`.
|
||||
|
||||
Use `tagwindow` dispatcher to add a static tag to a window:
|
||||
|
||||
```
|
||||
```bash
|
||||
hyprctl dispatch tagwindow +code # add tag to current window
|
||||
hyprctl dispatch tagwindow -- -code # remove tag from current window (use `--` to protect the leading `-`)
|
||||
hyprctl dispatch tagwindow code # toggle the tag of current window
|
||||
|
@ -239,8 +238,9 @@ windowrulev2 = opacity 0.2 override, tag:alpha_0.2
|
|||
windowrulev2 = opacity 0.4 override, tag:alpha_0.4
|
||||
```
|
||||
|
||||
The `tag` rule can only manipulate dynamic tags, and the `tagwindow` dispatcher only work with static tags
|
||||
(as once the dispatcher is called, dynamic tags will be cleared).
|
||||
The `tag` rule can only manipulate dynamic tags, and the `tagwindow` dispatcher
|
||||
only work with static tags (as once the dispatcher is called, dynamic tags will
|
||||
be cleared).
|
||||
|
||||
|
||||
### Example Rules
|
||||
|
@ -261,9 +261,9 @@ 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
|
||||
the requested color when it is set to floating, and revert to the default color
|
||||
when it is tiled again.
|
||||
`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.
|
||||
|
||||
Rules will be processed from top to bottom, where the _last_ match will take
|
||||
precedence. i.e.
|
||||
|
@ -273,8 +273,9 @@ windowrulev2 = opacity 0.8 0.8,class:^(kitty)$
|
|||
windowrulev2 = opacity 0.5 0.5, floating:1
|
||||
```
|
||||
|
||||
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`.
|
||||
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
|
||||
|
@ -286,13 +287,14 @@ The rest of the floating windows will have `opacity 0.5`.
|
|||
|
||||
{{< callout type=info >}}
|
||||
|
||||
Opacity is a PRODUCT of all opacities by default. For example, setting `activeopacity` to 0.5
|
||||
and `opacity` to 0.5 will result in a total opacity of 0.25. You are allowed
|
||||
to set opacities over 1, but any opacity product over 1 will cause graphical
|
||||
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:
|
||||
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. 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)$
|
||||
|
@ -313,8 +315,9 @@ layerrule = rule, namespace
|
|||
layerrule = rule, address
|
||||
```
|
||||
|
||||
where `rule` is the rule and `namespace` is the namespace regex (find namespaces
|
||||
in `hyprctl layers`) or `address` is an address in the form of `address:0x[hex]`
|
||||
where `rule` is the rule and `namespace` is the namespace regex (find
|
||||
namespaces in `hyprctl layers`) or `address` is an address in the form of
|
||||
`address:0x[hex]`.
|
||||
|
||||
### Rules
|
||||
|
||||
|
|
|
@ -3,29 +3,35 @@ weight: 8
|
|||
title: Workspace Rules
|
||||
---
|
||||
|
||||
## Workspace Rules
|
||||
|
||||
You can set workspace rules to achieve workspace-specific behaviors. For
|
||||
instance, you can define a workspace where all windows are drawn without borders
|
||||
or gaps.
|
||||
|
||||
For layout-specific rules, see the specific layout page. For example:
|
||||
[Master Layout->Workspace Rules](../Master-Layout#workspace-rules)
|
||||
[Master Layout->Workspace Rules](../Master-Layout#workspace-rules).
|
||||
|
||||
### Workspace selectors
|
||||
|
||||
Workspaces that have already been created can be targeted by workspace selectors,
|
||||
e.g. `r[2-4] w[t1]`
|
||||
Workspaces that have already been created can be targeted by workspace
|
||||
selectors, e.g. `r[2-4] w[t1]`.
|
||||
|
||||
Selectors have props separated by a space. No spaces are allowed inside props themselves.
|
||||
Selectors have props separated by a space. No spaces are allowed inside props
|
||||
themselves.
|
||||
|
||||
Props:
|
||||
- `r[A-B]` - ID range from A to B inclusive
|
||||
- `s[bool]` - Whether the workspace is special or not
|
||||
- `n[bool]`, `n[s:string]`, `n[e:string]` - named actions. `n[bool]` -> whether a workspace is a named workspace, `s` and `e` are starts and ends with respectively
|
||||
- `n[bool]`, `n[s:string]`, `n[e:string]` - named actions. `n[bool]` ->
|
||||
whether a workspace is a named workspace, `s` and `e` are starts and ends
|
||||
with respectively
|
||||
- `m[monitor]` - Monitor selector
|
||||
- `w[(flags)A-B]`, `w[(flags)X]` - Prop for window counts on the workspace. A-B is an inclusive range, X is a specific number. Flags can be omitted. It can be `t` for tiled-only, `f` for floating-only, `g` to count groups instead of windows, and `v` to count only visible windows.
|
||||
- `f[-1]`, `f[0]`, `f[1]`, `f[2]` - fullscreen state of the workspace. `-1`: no fullscreen, `0`: fullscreen, `1`: maximized, `2`, fullscreen without fullscreen state sent to the window.
|
||||
- `w[(flags)A-B]`, `w[(flags)X]` - Prop for window counts on the workspace.
|
||||
A-B is an inclusive range, X is a specific number. Flags can be omitted.
|
||||
It can be `t` for tiled-only, `f` for floating-only, `g` to count groups
|
||||
instead of windows, and `v` to count only visible windows.
|
||||
- `f[-1]`, `f[0]`, `f[1]`, `f[2]` - fullscreen state of the workspace. `-1`: no
|
||||
fullscreen, `0`: fullscreen, `1`: maximized, `2`, fullscreen without
|
||||
fullscreen state sent to the window.
|
||||
|
||||
### Syntax
|
||||
|
||||
|
|
|
@ -4,3 +4,79 @@ title: Configuring
|
|||
sidebar:
|
||||
open: true
|
||||
---
|
||||
|
||||
The config is located in `$XDG_CONFIG_HOME/hypr/hyprland.conf`. In most cases,
|
||||
that maps to `~/.config/hypr/hyprland.conf`.
|
||||
|
||||
You can tell Hyprland to use a specific configuration file by using the
|
||||
`--config` (or `-c`) argument.
|
||||
|
||||
Hyprland will automatically generate an example config for you if you don't have
|
||||
one. You can find an example config
|
||||
[here](https://github.com/hyprwm/Hyprland/blob/main/example/hyprland.conf).
|
||||
|
||||
By removing the line containing `autogenerated=1` you'll remove the yellow
|
||||
warning.
|
||||
|
||||
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 `}` **_on separate lines!_**
|
||||
|
||||
{{< callout >}}
|
||||
|
||||
The default config is not complete and does not list all the options / features
|
||||
of Hyprland. Please refer to this wiki page and the pages linked further down
|
||||
here for full configuration instructions.
|
||||
|
||||
**Make sure to read the [Variables](./Variables) page as well**. It covers all
|
||||
the toggleable / numerical options.
|
||||
|
||||
{{< /callout >}}
|
||||
|
||||
## Line style
|
||||
|
||||
Every config line is a command followed by a value.
|
||||
|
||||
```ini
|
||||
COMMAND = VALUE
|
||||
```
|
||||
|
||||
The command can be a variable, or a special keyword (described further in this
|
||||
page)
|
||||
|
||||
The trailing spaces at the beginning and end of words are not necessary, and are
|
||||
there only for legibility.
|
||||
|
||||
### Comments
|
||||
|
||||
Comments are started with the `#` character.
|
||||
|
||||
If you want to escape it (put an actual `#` and not start a comment) you can use
|
||||
`##`. It will be turned into a single `#` that _will_ be a part of your line.
|
||||
|
||||
### Escaping errors
|
||||
|
||||
If you use plugins, you may want to ignore errors from missing options/keywords
|
||||
so that you don't get an error bar before they are loaded. To do so, do this:
|
||||
|
||||
```ini
|
||||
# hyprlang noerror true
|
||||
|
||||
bind = MOD, KEY, something, amogus
|
||||
someoption = blah
|
||||
|
||||
# hyprlang noerror false
|
||||
```
|
||||
|
||||
## Basic configuring
|
||||
|
||||
To configure Hyprland's options, animations, styling, etc. see
|
||||
[Variables](./Variables).
|
||||
|
||||
## Advanced configuring
|
||||
|
||||
Some keywords (binds, curves, execs, monitors, etc.) are not variables but
|
||||
define special behavior.
|
||||
|
||||
See all of them in [Keywords](./Keywords) and the sidebar.
|
||||
|
|
Loading…
Reference in a new issue