# `ColorCoder`: Trigger-Driven Terminal Colors ```{py:currentmodule} irix.colorcode ``` Implements the `colorcode` console script: at every shell prompt, the shell invokes it with the current directory and/or the last command name and exit status, and `ColorCoder` decides which Irix color (if any) to apply by emitting an OSC 11 escape sequence to the terminal. Trigger rules are read from a user YAML config and cached with pickle between prompts. A global manual override can be set with `colorcode set ` and cleared with `colorcode clear`; while active it takes absolute precedence over all trigger rules. `colorcode multiset ...` persists a separate override for every affected Kitty window, so each manual pane color also survives later directory changes. Calling `colorcode clear` from one of those panes removes only that pane's assignment. ## Named Radix chambers `clcm` is the shell alias for `colorcode multiset`. Give it one chamber name to color every window in the current Kitty tab; its four colors repeat when the tab has more than four windows. Each chamber begins with a quiet Radix neutral, then travels through three related non-neutral hues. ```zsh clcm fern ``` | CLI alias | Full name | Colors | | --------- | ---------- | --------------------------- | | `fern` | Fernfolk | sage, grass, green, lime | | `moss` | Mossglow | olive, jade, mint, teal | | `tide` | Tideline | slate, cyan, sky, blue | | `rain` | Rainspell | gray, blue, indigo, iris | | `violet` | Violetveil | mauve, violet, purple, plum | | `rose` | Rosewater | mauve, pink, crimson, ruby | | `poppy` | Poppyfire | sand, red, tomato, orange | | `sun` | Sunhush | bronze, yellow, amber, gold | | `copper` | Copperleaf | bronze, brown, clay, magma | | `dusk` | Duskline | gray, iris, indigo, denim | The aliases apply only when supplied alone: `clcm violet` selects the Violetveil chamber, while a literal list such as `clcm violet blue` keeps its existing behavior. ## Type Aliases ```{eval-rst} .. autodata:: irix.colorcode.DirTrigger ``` ```{eval-rst} .. autodata:: irix.colorcode.CmdTrigger ``` ```{eval-rst} .. autoclass:: irix.colorcode.Code ``` ```{eval-rst} .. autoclass:: irix.colorcode.ColorCoder ``` ## `I` Initial Methods ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.model_copy ``` ## `II` Private Methods ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.last_path ``` ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.last_color ``` ## `III` Primary Methods ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.override ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.set_override ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.clear_override ``` ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.codes ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.check_directory ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.check_command ``` ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.git_dirty ``` ```{eval-rst} .. autoproperty:: irix.colorcode.ColorCoder.last_effective_color ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.apply_color ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.decide ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.show_status ``` ```{eval-rst} .. automethod:: irix.colorcode.ColorCoder.multiset ``` ## `IV` Main ```{eval-rst} .. autofunction:: irix.colorcode.emit_osc11 ``` ```{eval-rst} .. autofunction:: irix.colorcode.main ```