-
Notifications
You must be signed in to change notification settings - Fork 1
genconfig
The configuration file is located at:
~/.config/niri-companion/settings.toml
Note
All TOML snippets below are examples. Your setup may differ depending on your paths, file structure, or preferred groups.
Set up your output file path first. This is usually something like:
[general]
output_path = "~/.config/niri/config.kdl"These settings control how your Niri configuration is generated. A sample setup might look like:
[genconfig]
watch_dir = "$XDG_CONFIG_HOME/niri/src"
sources = [
"$XDG_CONFIG_HOME/niri/src/internal.kdl",
"$XDG_CONFIG_HOME/niri/src/monitors.kdl",
[
{ group = "default", path = "$XDG_CONFIG_HOME/niri/src/visual.kdl" },
{ group = "cool", path = "$XDG_CONFIG_HOME/niri/src/visual_custom.kdl" },
],
"$XDG_CONFIG_HOME/niri/src/input.kdl",
"$XDG_CONFIG_HOME/niri/src/keybindings.kdl",
"$XDG_CONFIG_HOME/niri/src/rules.kdl",
]Note
This is just one way to structure your sources. You can add or remove files, or define different groups as you like.
default: "~/.config/niri/sources"
This directory is monitored when you run:
niri-genconfig daemon
If files inside this directory change, the daemon automatically regenerates your output_path configuration file.
Define all the KDL configuration files you want to combine/include. You can split your configs across multiple files and groups.
You can define config groups inside sources using an array of objects. For example:
sources = [
"$XDG_CONFIG_HOME/niri/src/internal.kdl",
"$XDG_CONFIG_HOME/niri/src/monitors.kdl",
[
{ group = "default", path = "$XDG_CONFIG_HOME/niri/src/visual.kdl" },
{ group = "cool", path = "$XDG_CONFIG_HOME/niri/src/visual_cool.kdl" },
],
"$XDG_CONFIG_HOME/niri/src/input.kdl",
"$XDG_CONFIG_HOME/niri/src/keybindings.kdl",
"$XDG_CONFIG_HOME/niri/src/rules.kdl",
]Only the files from the selected group (plus any standalone string items) are included when generating the config. For example:
niri-genconfig generate cool
Would combine/include:
$XDG_CONFIG_HOME/niri/src/internal.kdl
$XDG_CONFIG_HOME/niri/src/monitors.kdl
$XDG_CONFIG_HOME/niri/src/visual_cool.kdl
$XDG_CONFIG_HOME/niri/src/input.kdl
$XDG_CONFIG_HOME/niri/src/keybindings.kdl
$XDG_CONFIG_HOME/niri/src/rules.kdl
If no group is specified, the default group is used automatically.
niri-genconfig generate
Adds include statements to config.kdl (or your custom output_path) using the source definitions of the default group. Or if you want to combine the files instead of including them, use the -c flag:
niri-genconfig generate -c
You can also specify a configuration group:
# to include
niri-genconfig generate cool
# to combine
niri-genconfig generate -c coolniri-genconfig daemon
Watches your genconfig.watch_dir for changes and regenerates your config automatically.
Groups work with the daemon too:
niri-genconfig daemon cool