1 unstable release
0.1.0 | Apr 2, 2020 |
---|
#742 in Configuration
15KB
239 lines
cologen
The simple color scheme configuration generator, inspired by base16-builder.
Install
- Install from sources
git clone https://github.com/piutranq/cologen
cargo install --path ./cologen
- Install from crates.io
cargo install cologen
Usage
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
Color scheme
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.
Formats
Template
-
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, %dB, %.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
- 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
- Color code format uses
%
for escape character. non-escaped expressions are not replaced. %%
will be replaced to%
%dR
,%dG
,%dB
,%dA
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
Dependencies
~4–5.5MB
~108K SLoC