:art: *A command line tool to generate color themes for editors (Vim, VSCode, Sublime, Atom) and terminal emulators (iTerm2, Hyper).* [![MIT License](https://img.shields.io/github/license/benbusby/colorstorm.svg)](http://opensource.org/licenses/MIT) [![GitHub release](https://img.shields.io/github/release/benbusby/colorstorm.svg)](https://github.com/benbusby/colorstorm/releases/) [![build](https://github.com/benbusby/colorstorm/workflows/build/badge.svg)](https://github.com/benbusby/colorstorm/actions) ___ Contents 1. [Install](#install) 1. [Usage](#usage) 1. [Creating Themes](#creating-themes) 1. [Screenshots](#screenshots) ## Install ### Arch Linux (AUR) `yay -S colorstorm` ### Other distros In progress, check back soon! ### From Source - Install [Zig](https://github.com/ziglang/zig/wiki/Install-Zig-from-a-Package-Manager) - Run: `make release` - Move `zig-out/bin/colorstorm` into your `PATH` ## Usage ```bash $ colorstorm [-o outdir] [-g generator] input -o|--outdir: The directory to output themes to (default: "./colorstorm-out") -g|--gen: Generator type (default: all) Available types: all, atom, vscode, vim, sublime, iterm, hyper -i|--input: The JSON input file to use for generating the themes See: https://github.com/benbusby/colorstorm#creating-themes ``` #### Supported Editors - Vim - VSCode - Sublime - Atom #### Supported Terminal Emulators - iTerm2 - Hyper ## Creating Themes You can create themes for all available editors and terminal emulators using a single JSON file to define the colors. The file should be an array (even for one theme), with the following structure: ```json [ { "theme_name_full": "Moonside", "theme_name_safe": "moonside", "color_bg_main": "#000000", "color_bg_alt1": "#080808", "color_bg_alt2": "#131313", "color_fg": "#ffffff", "color_linenr": "#9e5dc8", "color_select": "#5a1359", "color_type": "#f6f929", "color_accent": "#fd35fa", "color_string": "#ff6693", "color_boolean": "#fd9935", "color_variable": "#c67ff4", "color_number": "#aaef64", "color_comment": "#7ca454", "color_function": "#5e9aff" }, { ... } ] ``` Value names are mostly self-explanatory, but here is a breakdown of what each field means:
Field | Explanation |
theme_name_full |
The full name of the theme that will appear in theme file documentation |
theme_name_safe |
The value to use as the filename for the theme |
color_bg_main |
Primary background color |
color_bg_alt1 |
A separate background color to use for UI elements like file trees and tab bars |
color_bg_alt2 |
A separate background color to use for UI elements like line numbers and gutters |
color_fg |
The foreground color (all generic text) |
color_linenr |
The color used for line numbers |
color_select |
The color used for selecting a word or lines of text |
color_type |
The color used for variable types (int, float, etc) |
color_accent |
An "accent" color -- typically used for special cases (like current line number highlight or badge backgrounds) |
color_string |
The color used for strings |
color_boolean |
The color used for boolean values |
color_variable |
The color used for variable instances and constants |
color_number |
The color used for numeric values |
color_comment |
The color used for code comments |
color_function |
The color used for function names |