Skip to content

Commit

Permalink
hyprlang: improve docs
Browse files Browse the repository at this point in the history
  • Loading branch information
vaxerski committed Oct 18, 2024
1 parent 792ec10 commit 1155027
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 59 deletions.
26 changes: 0 additions & 26 deletions pages/Configuring/Keywords.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
35 changes: 2 additions & 33 deletions pages/Configuring/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
95 changes: 95 additions & 0 deletions pages/Hypr Ecosystem/hyprlang.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/).

0 comments on commit 1155027

Please sign in to comment.