2.3 KiB
weight | title |
---|---|
103 | 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.
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:
category {
variable = value
}
Special categories can have other properties, like for example containing a key:
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:
$VAR = myData
Later on, you can use them like so:
$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:
# 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 :
:
category:variable = value
If the category is special and requires a key, you can do:
category[keyvalue]:variable = value
This is the syntax used by hyprctl keyword
, for example.
Developer documentation
See the documentation at hyprland.org/hyprlang.