hyprland-wiki/pages/Hypr Ecosystem/hyprlang.md

105 lines
2 KiB
Markdown
Raw Normal View History

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/).