2024-10-15 17:21:18 +02:00
|
|
|
---
|
2024-10-16 16:29:27 +02:00
|
|
|
weight: 103
|
2024-10-15 17:21:18 +02:00
|
|
|
title: hyprlang
|
|
|
|
---
|
|
|
|
|
|
|
|
hyprlang is a library that implements parsing for the hypr configuration language.
|
|
|
|
|
2024-10-18 16:41:19 +02:00
|
|
|
## 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 (described further in this
|
|
|
|
page)
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2024-10-15 17:21:18 +02:00
|
|
|
See the documentation at [hyprland.org/hyprlang](https://hyprland.org/hyprlang/).
|
|
|
|
|