____ ____ / /____
/ __ \/ __ \/ __/ _ \
/ /_/ / /_/ / /_/ __/
\____/\____/\__/\___/
Sovereign, unified theming and color styling engine for the openOODA ecosystem.
Zero runtime dependencies. The binary is pure native, statically linked with host libc.
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash# Automated via web installer
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --dnf
# Or direct RPM install from GitHub Releases
sudo dnf install https://github.com/openOODA-tools/oote/releases/download/v0.1.1/oote-0.1.1-1.x86_64.rpm# Automated via web installer
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --deb
# Or manual download from GitHub Releases
curl -fsSL -O https://github.com/openOODA-tools/oote/releases/download/v0.1.1/oote_0.1.1-1_amd64.deb
sudo dpkg -i oote_0.1.1-1_amd64.deb# Automated via web installer
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --pkgbuild
# Or build manually using makepkg
git clone https://github.com/openOODA-tools/oote.git
cd oote/packaging/arch
makepkg -si# Preview actions without modifying the host
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --dry-run
# Install to custom directory
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --prefix ~/.local/binoote includes a sovereign, capability-clean uninstaller that removes binary files, package manager installations (deb/rpm/arch), helper scripts, and optionally purges configuration files:
# 1. Via installed CLI helper (if already installed in PATH)
oote-uninstall
oote-uninstall --purge # also removes ~/.openooda/theme.oot and cache
# 2. Via dedicated web uninstaller
curl -fsSL https://openooda-tools.github.io/oote/uninstall.sh | bash
curl -fsSL https://openooda-tools.github.io/oote/uninstall.sh | bash -s -- --purge
# 3. Via the universal installer script
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --uninstall
curl -fsSL https://openooda-tools.github.io/oote/install.sh | bash -s -- --uninstall --purge
# 4. Preview uninstallation without touching disk
curl -fsSL https://openooda-tools.github.io/oote/uninstall.sh | bash -s -- --dry-runmake verify
make build
make test
make install # installs to PREFIX (default ~/.openooda/bin)
make uninstall # cleanly uninstalls (use PURGE=1 to remove config)The compiled binary will be placed at dist/oote.
oote solves theme fragmentation across the openOODA toolchain. Instead of having each sovereign tool (oosh, oodiff, oogrep, oofind, oojq, ootail, and tui) roll its own ad-hoc ANSI escapes or hardcoded palettes, oote acts as the single source of truth:
- 39-Token Semantic Taxonomy: Consistent tokens across UI chrome, status indicators, syntax highlighting, diffs, search hits, shell prompts, and logs.
- 25 Sovereign Presets:
- 12 Monthly Themes:
frost(Jan),amethyst(Feb),thaw(Mar),bloom(Apr),meadow(May),solstice(Jun),mirage(Jul),amber(Aug),equinox(Sep),ember(Oct),hearth(Nov),solitude(Dec). - 7 Seasonal Holiday Themes:
spooky(Halloween Oct 25–31),yule(Winter Dec 20–26),nova(New Year Dec 31–Jan 2),harvest(Thanksgiving late Nov),lantern(Lunar New Year),sakura(Spring equinox),sol(Summer solstice). - 6 Classic / Base Themes:
minimax(official openOODA theme),1982(phosphor green CRT),nord,dracula,cyberpunk,plain.
- 12 Monthly Themes:
- Dual Light / Dark Modes: Every single theme includes both Dark and Light mode color models.
- Autonomous Calendar & Circadian Engine:
- When set to
auto(the default),ooteactivates holiday themes during festive dates, transitions smoothly to monthly themes, and follows the sun (Light mode 06:00–17:59, Dark mode 18:00–05:59).
- When set to
- Expressive ASCII Mascots & Micro-Glyphs:
- Each theme features a signature ASCII pet and compact prompt micro-glyph.
- Supports 5 emotional states:
idle(resting),happy(exit 0),sad(exit != 0),alert(git dirty / conflict),sleepy(late night / idle).
- Switchable Border Geometries: Support for
round(╭─╮),sharp(┌─┐),double(╔═╗), andascii(+-+). - Global Synchronization: Preferences are persisted to
~/.openooda/theme.ootand instantly consumed by all 7 ecosystem tools. - Graceful Capability Degradation: Automatically emits 24-bit TrueColor, degrades to 256 or 16-color ANSI, and suppresses all ANSI escapes under
NO_COLOR,OODA_NO_COLOR, orTERM=dumb.
oote <command> [arguments]
| Command | Description |
|---|---|
oote list |
List all 25 built-in themes and show the active one |
oote current [-m|--mode] |
Print current active theme or lighting mode (dark / light) |
oote preview <theme> [--dark|--light] [--border <style>] |
Render an interactive showcase card (palette, diffs, syntax, mascot) |
oote set <theme> [--dark|--light] |
Set active theme globally (auto, ember, nord, etc.) |
oote mode <dark|light|auto|toggle> |
Switch lighting mode globally |
oote border <round|sharp|double|ascii> |
Switch box-drawing border frame globally |
oote mascot [theme] [emotion] |
Render signature ASCII companion (idle, happy, sad, alert, sleepy) |
oote glyph [theme] [emotion] |
Render compact shell prompt micro-glyph (e.g., (^.^)) |
oote get <token> |
Query the ANSI escape sequence and color for a semantic token |
oote --help |
Display usage documentation |
oote --version |
Display version information |
# Preview current calendar theme with mascot
oote preview auto
# Preview October Ember theme in light mode with double borders
oote preview ember --light --border double
# Preview Halloween Spooky mascot in alert state
oote mascot spooky alert
# Show shell prompt glyph for happy state
oote glyph minimax happy
# Switch system-wide theme to auto
oote set auto
# Switch system-wide mode to light
oote mode light
# Toggle between light and dark mode
oote mode toggle
# Query ANSI color sequence for diff additions
oote get diff_addedAll openOODA tools read ~/.openooda/theme.oot or respect OODA_THEME, OODA_MODE, and OODA_BORDER:
- oosh: Sets
theme='oote'alias, styles interactive dock and prompt accents, and displays emotional prompt glyphs reacting to command exit status. - oodiff: Dynamically hydrates diff colors (
diff_added,diff_removed,diff_header). - oogrep: Dynamically hydrates match highlights (
match_hit,match_path,match_line_num). - oojq: Theme-aware JSON syntax highlighting (
syntax_keyword,syntax_string,syntax_number). - oofind: Styles directory traversal outputs (
shell_navfor directories,shell_builtinfor binaries,syntax_typefor symlinks). - ootail: Formats streaming logs using semantic log level tokens (
log_trace,log_info,log_warn,log_error). - openOODA/tui: Renders menus, borders, and dialogs using active theme tokens and border shapes.
oote strictly enforces openOODA House Laws:
- Four-Domain Separation:
spec/,presets/,mascot/,render/,store/. - The Page Rule: Every
.oopage is between 16 and 256 lines (shims exempt from floor). - Directory Density: At most 8 pages per directory.
- Function Caps: At most 8 functions per page; at most 40 lines per function.
- Academy Header: 4-element docstring header present within the first 7 lines.
- Strict File Law: Only native
.ooand.ootfiles in code trees (no.json,.yaml,.toml, or.py). - Object-Capability Discipline: Pure renderers require zero ambient authority; file access gated by explicit capability tokens (
&FsReadCap,&FsWriteCap,&EnvCap).
Apache-2.0