{"id":41498808,"url":"https://github.com/corygabrielsen/tint","last_synced_at":"2026-05-02T08:10:48.877Z","repository":{"id":334248026,"uuid":"1140600912","full_name":"corygabrielsen/tint","owner":"corygabrielsen","description":"Terminal theme picker with directory-based switching","archived":false,"fork":false,"pushed_at":"2026-03-28T12:22:52.000Z","size":320,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-28T12:36:25.146Z","etag":null,"topics":["bash","cli","color-scheme","terminal","terminal-colors","theme"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/corygabrielsen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-23T14:02:46.000Z","updated_at":"2026-03-28T12:21:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/corygabrielsen/tint","commit_stats":null,"previous_names":["corygabrielsen/tint"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/corygabrielsen/tint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corygabrielsen%2Ftint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corygabrielsen%2Ftint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corygabrielsen%2Ftint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corygabrielsen%2Ftint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/corygabrielsen","download_url":"https://codeload.github.com/corygabrielsen/tint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corygabrielsen%2Ftint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31311277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","cli","color-scheme","terminal","terminal-colors","theme"],"created_at":"2026-01-23T19:01:36.540Z","updated_at":"2026-05-02T08:10:48.867Z","avatar_url":"https://github.com/corygabrielsen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tint\n\n[![CI](https://github.com/corygabrielsen/tint/actions/workflows/ci.yml/badge.svg)](https://github.com/corygabrielsen/tint/actions/workflows/ci.yml)\n[![Latest Release](https://img.shields.io/github/v/release/corygabrielsen/tint)](https://github.com/corygabrielsen/tint/releases/latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nTerminal theme switcher with live preview. Each theme sets background, foreground, and all 16 ANSI colors. Drop `.tint` files into project directories and your theme changes automatically as you navigate.\n\n```\n  ↑/↓ Navigate   Enter: Select   Esc: Cancel\n*  1.  (unchanged)\n\u003e  2.  dracula\n   3.  gruvbox\n   ↓ 16 more\n```\n\n## Install\n\n### Homebrew\n\n```bash\nbrew install corygabrielsen/tint/tint\n```\n\n### Manual\n\n```bash\ncurl -fsSL https://github.com/corygabrielsen/tint/releases/latest/download/tint \\\n  -o ~/.local/bin/tint \u0026\u0026 chmod +x ~/.local/bin/tint\n```\n\nMake sure `~/.local/bin` is in your `PATH`.\n\nRequires `awk` (for palette parsing) and a terminal that supports OSC 11 background-color sequences. Both are standard on modern systems.\n\nVerify:\n\n```bash\ntint --version\n```\n\n## Usage\n\n```bash\ntint                  # Interactive picker with live preview\ntint dracula          # Set by name (bg + fg + 16 ANSI colors)\ntint \"#002b36\"        # Set by hex (bg + auto-computed fg)\ntint random           # Pick a random theme\ntint reset            # Reset to terminal default\ntint hook bash        # Output shell hook for auto-tinting on cd\ntint completions bash # Output shell completions\ntint -h, --help       # Show help\ntint -l, --list       # List available themes\ntint -v, --version    # Show version\n```\n\n### Interactive Controls\n\n| Key             | Action                    |\n| --------------- | ------------------------- |\n| `↑` `↓` `k` `j` | Navigate list             |\n| `←` `→` `h` `l` | Navigate list (alternate) |\n| `Enter`         | Select theme              |\n| `Esc` `q`       | Cancel (restore original) |\n\n## Built-in Themes\n\n### Curated (33)\n\nChosen from popular community themes.\n\n**Dark:** `apprentice` `ayu` `campbell` `catppuccin-frappe` `catppuccin-macchiato` `catppuccin-mocha` `cobalt2` `dracula` `everforest-dark` `github` `gruvbox-dark` `horizon` `kanagawa` `linux-console` `material` `monokai` `night-owl` `nord` `onedark` `palenight` `putty` `rose-pine` `rose-pine-moon` `solarized-dark` `synthwave` `tango` `tokyo`\n\n**Light:** `catppuccin-latte` `everforest-light` `gruvbox-light` `onelight` `rose-pine-dawn` `solarized-light`\n\n### Rainbow Wheel (144)\n\n24 hues × 6 lightness/saturation tiers. Hue order: red, vermilion, orange, amber, yellow, lime, chartreuse, harlequin, green, emerald, spring-green, aquamarine, cyan, sky-blue, azure, cobalt, blue, indigo, violet, purple, magenta, fuchsia, rose, crimson.\n\n**Deep** (L=0.20, S=0.35 — near-black with strong hue): `deep-red` `deep-vermilion` `deep-orange` `deep-amber` `deep-yellow` `deep-lime` `deep-chartreuse` `deep-harlequin` `deep-green` `deep-emerald` `deep-spring-green` `deep-aquamarine` `deep-cyan` `deep-sky-blue` `deep-azure` `deep-cobalt` `deep-blue` `deep-indigo` `deep-violet` `deep-purple` `deep-magenta` `deep-fuchsia` `deep-rose` `deep-crimson`\n\n**Dark** (L=0.35, S=0.35 — between deep and base): `dark-red` `dark-vermilion` `dark-orange` `dark-amber` `dark-yellow` `dark-lime` `dark-chartreuse` `dark-harlequin` `dark-green` `dark-emerald` `dark-spring-green` `dark-aquamarine` `dark-cyan` `dark-sky-blue` `dark-azure` `dark-cobalt` `dark-blue` `dark-indigo` `dark-violet` `dark-purple` `dark-magenta` `dark-fuchsia` `dark-rose` `dark-crimson`\n\n**Muted** (L=0.50, S=0.35 — base canonical hue, no prefix): `red` `vermilion` `orange` `amber` `yellow` `lime` `chartreuse` `harlequin` `green` `emerald` `spring-green` `aquamarine` `cyan` `sky-blue` `azure` `cobalt` `blue` `indigo` `violet` `purple` `magenta` `fuchsia` `rose` `crimson`\n\n**Light** (L=0.65, S=0.35 — lighter hue, dark text required): `light-red` `light-vermilion` `light-orange` `light-amber` `light-yellow` `light-lime` `light-chartreuse` `light-harlequin` `light-green` `light-emerald` `light-spring-green` `light-aquamarine` `light-cyan` `light-sky-blue` `light-azure` `light-cobalt` `light-blue` `light-indigo` `light-violet` `light-purple` `light-magenta` `light-fuchsia` `light-rose` `light-crimson`\n\n**Pale** (L=0.80, S=0.35 — pastel daytime, dark text required): `pale-red` `pale-vermilion` `pale-orange` `pale-amber` `pale-yellow` `pale-lime` `pale-chartreuse` `pale-harlequin` `pale-green` `pale-emerald` `pale-spring-green` `pale-aquamarine` `pale-cyan` `pale-sky-blue` `pale-azure` `pale-cobalt` `pale-blue` `pale-indigo` `pale-violet` `pale-purple` `pale-magenta` `pale-fuchsia` `pale-rose` `pale-crimson`\n\n**Neon** (L=0.50, S=0.80 — high-saturation siblings of muted): `neon-red` `neon-vermilion` `neon-orange` `neon-amber` `neon-yellow` `neon-lime` `neon-chartreuse` `neon-harlequin` `neon-green` `neon-emerald` `neon-spring-green` `neon-aquamarine` `neon-cyan` `neon-sky-blue` `neon-azure` `neon-cobalt` `neon-blue` `neon-indigo` `neon-violet` `neon-purple` `neon-magenta` `neon-fuchsia` `neon-rose` `neon-crimson`\n\n## Custom Palette\n\nEach theme is a name followed by 18 hex colors: background, foreground, and ANSI colors 0-15.\n\n```\nname:#bg:#fg:#00:#01:#02:#03:#04:#05:#06:#07:#08:#09:#10:#11:#12:#13:#14:#15\n```\n\nDrop theme files into `$XDG_CONFIG_HOME/tint/themes` (commonly `~/.config/tint/themes` when `XDG_CONFIG_HOME` is unset; any filename works):\n\n```bash\nmkdir -p ~/.config/tint/themes\ncat \u003e ~/.config/tint/themes/mine.theme \u003c\u003c'EOF'\nmytheme:#1a1b26:#c0caf5:#414868:#f7768e:#9ece6a:#e0af68:#7aa2f7:#bb9af7:#7dcfff:#a9b1d6:#414868:#f7768e:#9ece6a:#e0af68:#7aa2f7:#bb9af7:#7dcfff:#c0caf5\nEOF\ntint mytheme\n```\n\nEach file can contain one or more theme entries, one per line. Files are read in alphabetical order and appended to the built-in palette. Pick unique names for your drop-in themes — built-ins win lookups on name collision. Set `TINT_PALETTE_DIR` to override the `$XDG_CONFIG_HOME/tint/themes` default.\n\n## Library Usage\n\nSource `tint` to use its functions in scripts. Use `.` for POSIX compatibility, or `source` in bash/zsh:\n\n```bash\n. /path/to/tint\n\ntint_supports_color       # Check if terminal supports OSC color sequences\ntint_resolve \"dracula\"    # Name → full theme string, hex → expanded #rrggbb\ntint_lookup \"dracula\"     # Palette name → theme string (#bg:#fg:#00:...:#15)\ntint_set \"#002b36\"        # Set background (auto-computes foreground)\ntint_set \"$theme_string\"  # Set full theme (bg + fg + 16 ANSI colors)\ntint_reset                # Reset to terminal default\ntint_pick \"$current\"      # Interactive picker → selected theme name\ntint_list                 # Print all theme names\ntint_reload_palette       # Rebuild TINT_PALETTE after changing TINT_PALETTE_DIR / XDG_CONFIG_HOME / HOME\n```\n\n## Shell Integration\n\nAuto-apply terminal themes when you `cd` into a project. The hook runs on every directory change — your terminal shifts to match whatever you're working on.\n\n```bash\n# bash (~/.bashrc)\neval \"$(tint hook bash)\"\n\n# zsh (~/.zshrc)\neval \"$(tint hook zsh)\"\n```\n\nThen create `.tint` files in project directories:\n\n```bash\necho \"nord\" \u003e ~/projects/myproject/.tint\necho \"dracula\" \u003e ~/projects/work/.tint\necho \"reset\" \u003e ~/projects/personal/.tint    # reset to default\n```\n\nThe hook walks up from `$PWD` to `/` looking for the nearest `.tint` file. Themes are **sticky** — if no `.tint` is found, the current theme is kept. Place a `.tint` in `~` for a global default.\n\nA `.tint` file contains a single value — either a theme name (`dracula`), hex (`#002b36`), or `reset`. Inline comments are supported (`dracula # work theme`).\n\nFish shell is not currently supported for hooks (completions work via `tint completions fish`).\n\nFor tab completion of theme names and subcommands, see [Shell Completions](#shell-completions).\n\n## Shell Completions\n\nTab-complete theme names, subcommands, and flags:\n\n```bash\n# bash (~/.bashrc)\neval \"$(tint completions bash)\"\n\n# zsh (~/.zshrc)\neval \"$(tint completions zsh)\"\n\n# fish\ntint completions fish \u003e ~/.config/fish/completions/tint.fish\n```\n\n## Compatibility\n\n| Feature                     | Requirement                                 |\n| --------------------------- | ------------------------------------------- |\n| Interactive picker (`tint`) | Bash 3.2+                                   |\n| All other commands          | Any POSIX shell (dash, ash, sh)             |\n| Terminal                    | OSC 4/10/11 support (most modern terminals) |\n\nTested on: iTerm2, Alacritty, Kitty, Windows Terminal, GNOME Terminal, Konsole\n\n**tmux**: Requires `set -g allow-passthrough on` in your tmux config for OSC sequences to reach the outer terminal.\n\n## How It Works\n\n`tint` uses [OSC escape sequences](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands) to control terminal colors:\n\n- `\\e]11;#rrggbb\\e\\\\` — Set background color (OSC 11)\n- `\\e]10;#rrggbb\\e\\\\` — Set foreground color (OSC 10)\n- `\\e]4;N;#rrggbb\\e\\\\` — Set ANSI color N (OSC 4, N=0-15)\n- `\\e]11;?\\e\\\\` — Query current background\n- `\\e]111\\e\\\\` — Reset background to default\n- `\\e]110\\e\\\\` — Reset foreground to default\n- `\\e]104\\e\\\\` — Reset all ANSI colors to default\n\n## Development\n\n```bash\nmake setup    # Install pre-commit hooks and shellcheck\nmake doctor   # Check dev environment\nmake lint     # Run shellcheck\nmake test     # Run tests\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorygabrielsen%2Ftint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcorygabrielsen%2Ftint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorygabrielsen%2Ftint/lists"}