The simple color scheme configuration generator, inspired by base16-builder.
- Install from sources
git clone https://github.com/piutranq/cologen
cargo install --path ./cologen
- Install from crates.io
cargo install cologen
Usage)
[TEMPLATE] | cologen [SCHEME] > [OUTPUT]
[TEMPLATE]: Template configuration file for target.
It must be input at stdin.
[SCHEME]: Path of color scheme file. (YAML format)
[OUTPUT]: The generated configuration is printed at stdout.
Example)
cat $XDG_CONFIG_HOME/cologen/templates/rofi.template \
| cologen $XDG_CONFIG_HOME/cologen/schemes/gruvbox-dark.yaml \
> $XDG_CONFIG_HOME/rofi/color.rasi
The color scheme file follows the YAML format.
see below example, or example/scheme.yaml
.
The example is a color scheme from gruvbox
name: "gruvbox-dark"
color:
# Monochromes
grey0: [ 0x28, 0x28, 0x28 ] # bg0
grey1: [ 0x3C, 0x38, 0x36 ] # bg1
grey2: [ 0x66, 0x5C, 0x54 ] # bg3
grey3: [ 0xBD, 0xAE, 0x93 ] # fg3
grey4: [ 0xEB, 0xDB, 0xB2 ] # fg1
grey5: [ 0xFB, 0xF1, 0xC7 ] # fg0
# Chromatics
red: [ 0xFB, 0x49, 0x34 ] # red (bold)
green: [ 0xB8, 0xBB, 0x26 ] # green (bold)
yellow: [ 0xFA, 0xBD, 0x2F ] # yellow (bold)
blue: [ 0x83, 0xA5, 0x98 ] # blue (bold)
magenta: [ 0xD3, 0x86, 0x9B ] # purple (bold)
cyan: [ 0x8E, 0xC0, 0x7C ] # aqua (bold)
cologen has not the standard or guideline for color naming. it just replaces the substitutes in the template to the actual color codes based on the color name.
-
The template file has the same format as the target config file, just color codes are only replaced with substitutes.
-
Substitutes have the following format,
@[color_name:color_code_format]
-
The following text is the example of the template for rofi. see
example/template
/* color config example for rofi */
*
{
/* Monochrome */
grey0: @[grey0:#%xR%xG%xB];
grey1: @[grey1:#%xR%xG%xB];
grey2: @[grey2:#%xR%xG%xB];
grey3: @[grey3:#%xR%xG%xB];
grey4: @[grey4:#%xR%xG%xB];
grey5: @[grey5:#%xR%xG%xB];
/* Chromatics */
red: @[red:#%xR%xG%xB];
green: @[green:#%xR%xG%xB];
yellow: @[yellow:#%xR%xG%xB];
blue: @[blue:#%xR%xG%xB];
magenta: @[magenta:#%xR%xG%xB];
cyan: @[cyan:#%xR%xG%xB];
/* Special Purpose */
empty: rgba(0, 0, 0, 0);
bg: @[grey0:rgba(%dR, %dG, �, %.A)];
fg: @[grey4:#%xR%xG%xB];
fgbold: bold underline @[grey5:#%xR%xG%xB];
}
- The template example is converted to the following. see
example/output
/* color config example for rofi */
*
{
/* Monochrome */
grey0: #282828;
grey1: #3c3836;
grey2: #665c54;
grey3: #bdae93;
grey4: #ebdbb2;
grey5: #fbf1c7;
/* Chromatics */
red: #fb4934;
green: #b8bb26;
yellow: #fabd2f;
blue: #83a598;
magenta: #d3869b;
cyan: #8ec07c;
/* Special Purpose */
empty: rgba(0, 0, 0, 0);
bg: rgba(40, 40, 40, 1.00);
fg: #ebdbb2;
fgbold: bold underline #fbf1c7;
}
- Color name can use character
A
toZ
,a
toz
,0
to9
, and_
. - The followings are the example:
Grey2
is valid (Upper case is allowed)foreground_highlighted
is valid (_
is only allowed special character)회색
is invalid (non-roman character used)red-dimmed
is invalid (invalid special character used)
- Color code format uses
%
for escape character. non-escaped expressions are not replaced. %%
will be replaced to%
%dR
,%dG
,�
,�
will be replaced to 0 to 255%pR
,%pG
,%pB
,%pA
will be replaced to 0 to 100%.R
,%.G
,%.B
,%.A
will be replaced to 0.00 to 1.00%xR
,%xG
,%xB
,%xA
will be replaced to 00 to FF