Migration guide to v3

The last stable backwards compatible version is 2.10. V3 builds have the following breaking changes:

Cli

The usual, and shorter, wallust image.png, is deprecated. Instead, you should use wallust run image.png.

Regarding cli flags: --filter and -f will be replaced by --palette and -p, respectively.

wallust.toml

You can update your configuration file syntax with: wallust migrate

Old syntax:

[[entry]]
template = "zathurarc"
target = "~/.config/zathura/zathurarc"

[[entry]]
template = "dunst"
target = "~/.config/dunst/dunstrc"
...

New syntax:

[templates]
# usual dotted fields
dunst.template = 'dunstrc.monitor'
dunst.target = '~/.config/dunst/dunstrc'

# or inline
zathura = { template = 'zathura', target = '~/.config/zathura/zathurarc' }

# templated alias to src and target to dst
res.src = 'xres'
res.dst = '~/.config/Xresources'
res.pywal = true #enable pywal syntax

# inline with aliases, even more shorter!
glava = { src = 'glava/main.glsl', dst = '~/.config/glava/rc.glsl' }

# inline with pywal
test = { template = 'test.json', dst = '~/.config/complicated.json', pywal = true }

# directory usecase, all my pywal templates go here.
dir.template = "templates/"
dir.target = "~/.cache/wal/"
dir.pywal = true

This is a more shorter and simpler way. Inside the templates header, you can use the template and target attributes, also alias as src and dst respectively.

You can now declare directories as templates and targets non-recursively.

Deprecation of new_engine

The new_engine optional value has been stablished as the default engine and is no longer a valid variable. Now, if you want to enable pywal like syntax (meaning it's disabled by default), you do so by declaring pywal = true.

Rename filter -> palette

Just like with the cli, filter to palette rename has also affected the config:

Old syntax:

filter = dark16

New syntax:

palette = dark16

Templates

Following the name changes, variable name changes also have been applied: {{filter}} -> {{palette}}. Or, if pywal enabled, {filter} -> {palette}.

Variables has been reduced to the ones with no .method syntax like. This is because there has been included a runtime that can interpret filters. For example:

{{color0.rgb}}

is now written like:

{{color0 | rgb}}

In these lines, escaping {{ and }} has also changed, being avaliable literals as variables:

{{{{}}{{}}}}

is now written like:

{{ "{{}}" }}

To learn more about the new template syntax please read the man page man wallust.