Configuring: reword/revamp

This commit is contained in:
Mihai Fufezan 2024-07-30 22:59:15 +03:00
parent 2fb6853e11
commit ea9d39dbf0
13 changed files with 378 additions and 362 deletions

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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
```

View file

@ -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

View file

@ -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

View file

@ -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 >}}

View file

@ -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

View file

@ -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

View file

@ -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.