mirror of
https://github.com/hyprwm/hyprland-wiki.git
synced 2024-11-08 14:35:58 +01:00
108 lines
2.3 KiB
Markdown
108 lines
2.3 KiB
Markdown
---
|
|
weight: 103
|
|
title: hyprlang
|
|
---
|
|
|
|
hyprlang is a library that implements parsing for the hypr configuration language.
|
|
|
|
## Syntax
|
|
|
|
### 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 (those are defined by the app
|
|
you are using)
|
|
|
|
Variables are like "options", while keywords are like "commands". Options can be specified
|
|
only once (if you do it more times, it will overwrite the previous one),
|
|
while commands invoke some behavior every time they are defined.
|
|
|
|
The trailing spaces at the beginning and end of words are not necessary, and are
|
|
there only for legibility.
|
|
|
|
### Categories
|
|
|
|
Categories can be regular, and "special".
|
|
|
|
Both are specified the same:
|
|
```ini
|
|
category {
|
|
variable = value
|
|
}
|
|
```
|
|
|
|
Special categories can have other properties, like for example containing a key:
|
|
```ini
|
|
special {
|
|
key = A
|
|
variable = value
|
|
}
|
|
special {
|
|
key = B
|
|
variable = value
|
|
}
|
|
```
|
|
|
|
This is like defining two "groups", one with the key of A, another with B. Hyprland for
|
|
example uses those for per-device configs.
|
|
|
|
### Defining variables
|
|
|
|
Variables can be defined like so:
|
|
```ini
|
|
$VAR = myData
|
|
```
|
|
|
|
Later on, you can use them like so:
|
|
```ini
|
|
$SUFFIX = -san
|
|
$NAME = Jeremy
|
|
greeting = Hello, $NAME$SUFFIX.
|
|
```
|
|
|
|
You do not need spaces to separate values, or spaces around values.
|
|
|
|
### 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
|
|
```
|
|
|
|
### Inline options
|
|
|
|
If you want to specify an option inline, without opening and closing a category, the separator is `:`:
|
|
```ini
|
|
category:variable = value
|
|
```
|
|
|
|
If the category is special and requires a key, you can do:
|
|
```ini
|
|
category[keyvalue]:variable = value
|
|
```
|
|
|
|
This is the syntax used by `hyprctl keyword`, for example.
|
|
|
|
## Developer documentation
|
|
|
|
See the documentation at [hyprland.org/hyprlang](https://hyprland.org/hyprlang/).
|
|
|