Changed templating engine
Matugen now finally uses its own custom written templating engine with using colors as the main priority. You can import colors from json as well.
Overwriting a color:
"colors": {
"primary": {
"light": {
"color": "#ff0000"
},
"default": {
"color": "#ff0000"
},
"dark": {
"color": "#ff0000"
}
}
}Adding a custom color:
{
"color_name": {
"color": "#ff0000"
}
}Added input_path_modes
input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }Improved color generation and picking from wallpaper
Removed [config.custom_keywords]
See below for a replacement
Added --import-json, --import-json-string and matugen json <file>
matugen json <file> completely skips generating the colors allowing you to use matugen as a templating engine only.
--import-json-string takes priority and overwrites the data from --import-json, you can use all of them multiple times and they will be merged together.
matugen json <json-file> --import-json <json-file> --import-json <json-file2> --import-json-string '{ "text": "Hello, World!" }'
Remove the UI
It wasn't the best and it was one more thing to add features to so it was removed.
Added caching for images
If you enable caching in your config.toml
[config]
# ...
# Enables caching which will cache the colorscheme, custom colors, etc. into a cache folder located in
# Windows: C:\Users\user\AppData\Roaming\InioX\matugen\cache\images\<file>
# Linux: $XDG_CACHE_HOME/matugen/<file> or $HOME/.cache/matugen/images/<file>
# MacOS: $HOME/Library/Caches/matugen/images/<file>
# The file follows this naming: <image_name>.<image_extension>.<image_hash>.json
# For example: testimage.png.0cfd2d624b3d09bf6246b7be9ca79e207e7aa1189d961d44949628b99811bb9d.json
# You can modify the cache and it will then be loaded when using the same image.
caching = falseAdded blend. renamed old blend to harmonize
normal: {{ colors.green_source.default.hex }}
blended_full: {{ colors.green_source.default.hex | blend: {{ colors.source_color.default.hex }}, 1.0 }}
blended_half: {{ colors.green_source.default.hex | blend: {{ colors.source_color.default.hex }}, 0.5 }}
harmonized: {{ colors.green_source.default.hex | harmonize: {{ colors.source_color.default.hex }} }}
Added string casing filters
3.0.0 - 2025-10-25
Added
- allow
output_pathof template to be none- add
--import-json-string- support multiple paths for
--import-json- add escaping for delimiters (#190)
- add string casing filters (#157)
- improve color generation (#182)
- add back set to (closes #177)
- allow if expressions in filter args
- add more errors for parser
- use thiserror for parser
- remove ui
- show info message when executing hooks
- add
include-image-in-json(#175)- remove custom_keywords
- added blend. rename old blend to harmonize
- if path has a number, use a _ prefix
- add all formats for to_color
- add matugen json, change how parser resolves colors
- add blend filter
- add looping over color formats and impl display for maps
- allow expressions inside of keywords
- add binary operations (only in filter args)
- support exprs for filter args
- replace resolve_path_filter
- add range expression
- change how resolve works
- add if statement
- add include block
- add auto_lightness
- (gui) save image folder and tab
- add
input_path_modes(#142)- (gui) add path under images
- (gui) add images tab
- add ui
- add palettes to
dump_jsonFixed
- allow escape without anything (#200)
- do not trim source for parser (#192)
- colors not saved correctly (#184)
- casting as u8 for hue (#168)
- cache not having colors in it (#184)
- argb_from_rgb converting wrong color (#173)
- fix minor typo in build command
- errors in included files showing span in original
- not overwriting generated files
- check metadata only if file exists
- use "choice" instead of "or" in parser
- change template adding and fix include (#158)
- ingoring whitespace in for loop
- actually show the template name in errors
- cache not loading
- remove dbg print for path
- trying to install color eyre twice
- not compiling because of unix wallpaper
- wrong tones in
dump_json(#116)- remove
wallpaper.setoption- add
dump-jsonto default featuesOther
- add command.sh to example/
- add compare-script.ts
- add
resize-filterarg (#182)- remove warnings
- use wrap_err, fix read only detection
- Update main.yml
- Update main.yml
- Update main.yml
- change release-plz workflow
- move some stuff from main into helpers
- fix all warnings
- add to_color (TODO)
- remove all warnings
- move parser into its own file
- change cache colors to #RRGGBBAA
- run cargo clippy fix
- run cargo fmt
- change cache color format
- theme the ui based on image
- fix raw strings in parser
- fix ui, move cache to cache/images
- add hooks
- improve errors, add caching toggle
- add caching
- support chaning syntax
- add hsl filters, saturate
- run cargo clippy --fix, remove benches
- use
IndexMapinstead for ordering in for loops- return multiple errors
- use colorsys
- replace engine, support quoted ident
- use simplespan instead
- add set_alpha
- restructure
- move stuff from engine
- run clippy fix
- remove modified_colors
- use lazy color
- remove matugen-parser
- working for loops
- kinda working for loop
- add error for arg type
- add expect_args
- rename filtertype
- cleanup imports
- remove old filters
- working no for loops
- run cargo fmt
- refactor
- (readme) improve discord link
- run cargo fmt
- (readme) add discord server link