hyprlang: improve docs

This commit is contained in:
Vaxry 2024-10-18 15:41:19 +01:00
parent 792ec103f6
commit 1155027ccd
3 changed files with 97 additions and 59 deletions

View file

@ -37,32 +37,6 @@ You can execute a shell script on:
`exec-shutdown = command` will execute only on shutdown
## Defining variables
You can define your own custom variables using a dollar sign (`$`):
```ini
$VAR = value
```
For example:
```ini
$MyFavoriteGame = Among Us
```
Then you can reference them in the rest of the config. For example:
```ini
col.active_border = $MyColor
```
You are allowed to combine variables in-place with other strings, like this:
```ini
col.active_border = ff$MyRedValue1111
```
## Sourcing (multi-file)
Use the `source` keyword to source another file.

View file

@ -34,40 +34,9 @@ the toggleable / numerical options.
{{< /callout >}}
## Line style
## Language style and syntax
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
```
See the [hyprlang page](../Hypr-Ecosystem/hyprlang).
## Basic configuring

View file

@ -5,5 +5,100 @@ 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 (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
See the documentation at [hyprland.org/hyprlang](https://hyprland.org/hyprlang/).