| Crates.io | colorloom |
| lib.rs | colorloom |
| version | 0.1.3 |
| created_at | 2025-11-16 14:36:40.567516+00 |
| updated_at | 2026-01-23 04:00:33.921773+00 |
| description | A powerful Rust CLI for generating consistent color themes across multiple editors and terminals from a single TOML configuration. |
| homepage | https://subliminal-nightfall.hamrah.com/colorloom |
| repository | https://github.com/mhamrah/subliminal-nightfall |
| max_upload_size | |
| id | 1935564 |
| size | 96,155 |
A powerful Rust CLI tool for generating consistent color themes across multiple editors and terminals from a single TOML configuration file.
ColorLoom is the theme generation engine behind Subliminal Nightfall. It reads a centralized theme.toml configuration and generates native theme files for:
theme.toml, generate everywherebackground.appearance: "blurred" with proper transparency# From crates.io (when published)
cargo install colorloom
# From source
cd tools/colorloom
cargo install --path .
# Generate all themes (default command)
colorloom generate
# Validate configuration
colorloom validate
# List targets and variants
colorloom list
# Use custom config file
colorloom -c custom-theme.toml generate
ColorLoom reads from theme.toml in the current directory:
version = "1"
[meta]
name = "Subliminal Nightfall"
author = "Michael Hamrah"
description = "A dark color scheme with purple-black backgrounds"
license = "MIT"
# ANSI terminal colors with base/bright/dim variants
[palette.base.ansi.red]
base = "#bf616a"
bright = "#e2848d"
dim = "#85434a"
[palette.base.ansi.green]
base = "#a9cfa4"
bright = "#ccf2c7"
dim = "#769072"
# ... more ANSI colors
# Syntax highlighting colors
[palette.syntax]
teal = "#9ccfd8"
blue_green = "#6699cc"
lavender = "#c4a7e7"
gray = "#7f7f7f"
# UI colors
[palette.ui]
background = "#191724"
background_alt = "#1f1d2e"
background_elevated = "#26233a"
foreground = "#e0def4"
foreground_muted = "#a0a0a0"
foreground_dim = "#7f7f7f"
selection = "#484e5b"
cursor = "#5fb3b3"
line_highlight = "#2e3239bf"
# Border colors
[palette.border]
border = "#484e5b"
border_variant = "#363b45"
border_focused = "#6699cc"
border_selected = "#5fb3b3"
# Theme variants
[[variants]]
name = "base"
alpha = 1.0
[[variants]]
name = "hazy"
alpha = 0.75
blur_radius = 20
[[variants]]
name = "cloudy"
alpha = 0.90
blur_radius = 12
# Target configurations
[[targets]]
id = "zed"
enabled = true
path = "zed/themes"
out_file = "subliminal-nightfall.json"
[[targets]]
id = "cursor"
enabled = true
path = "cursor/themes"
out_names = { base = "subliminal-nightfall-color-theme.json", hazy = "subliminal-nightfall-color-theme-hazy.json", cloudy = "subliminal-nightfall-color-theme-cloudy.json" }
[[targets]]
id = "neovim"
enabled = true
path = "neovim/colors"
out_names = { base = "subliminal-nightfall.lua", hazy = "subliminal-nightfall-hazy.lua", cloudy = "subliminal-nightfall-cloudy.lua" }
[[targets]]
id = "ghostty"
enabled = true
path = "ghostty"
out_names = { base = "subliminal-nightfall", hazy = "subliminal-nightfall-hazy", cloudy = "subliminal-nightfall-cloudy" }
[[targets]]
id = "website"
enabled = true
path = "website/src/data"
out_file = "palette.json"
ColorLoom automatically handles transparency for blur-enabled variants:
| Variant | Alpha | Editor BG | Surface BG | Tabs | Appearance |
|---|---|---|---|---|---|
| Base | 100% | #191724FF |
#1f1d2eFF |
50% | opaque |
| Hazy | 75% | #19172400 |
#1f1d2eBF |
22% | blurred |
| Cloudy | 90% | #19172400 |
#1f1d2eE6 |
27% | blurred |
For blurred variants:
00) to show blurGenerates a single JSON file containing all variants with:
background.appearance: "blurred" for transparent variantsGenerates separate JSON files per variant with:
Generates Lua colorscheme files with:
Generates palette files with:
# Build
cargo build --release
# Run tests
cargo test
# Check formatting
cargo fmt --check
# Lint
cargo clippy
colorloom/
├── src/
│ ├── main.rs # CLI entry point
│ ├── config.rs # TOML configuration types
│ └── targets.rs # Theme generators per target
├── Cargo.toml
└── README.md
MIT License - see the main repository for details.