hyprland-wiki/pages/Hypr Ecosystem/hyprlang.md
2024-10-18 15:41:24 +01:00

2 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 (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:

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.