Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

git-theme

1 projet git = 1 couleur. Terminal, VS Code et Claude Code, automatiquement.

Quand vous changez de repo, votre terminal et votre éditeur changent de palette. Chaque projet a sa propre identité visuelle — vous savez où vous êtes d'un coup d'œil.

bash license

Pourquoi

Quand on jongle entre plusieurs projets, tous les terminaux se ressemblent. On se trompe de fenêtre, on tape dans le mauvais repo.

git-theme règle ça : chaque repo obtient une palette de couleurs unique, cohérente entre le terminal et l'éditeur. Les palettes sont choisies pour être agréables à l'œil lors de longues sessions de code.

Palettes incluses

Catppuccin Mocha Ayu Mirage Monokai Rosé Pine
Oxocarbon Tokyo Night Kanagawa Gruvbox
Everforest Nord Dracula Solarized

12 palettes dark, à faible fatigue visuelle. Chacune a son pendant clair, utilisé automatiquement quand macOS passe en mode clair (git-theme ls --all pour les voir toutes).

Une palette est réservée au profil de base et n'est jamais auto-assignée — 11 restent dans le pool. git-theme ls la signale par · reserved for base, et git-theme set peut toujours l'assigner explicitement.

Jour / nuit

La variante active suit AppleInterfaceStyle — pas de réglage à faire.

Sur iTerm2, les deux jeux de couleurs sont écrits dans le profil, avec Use Separate Colors for Light and Dark Mode. iTerm2 bascule alors nativement, sans repasser par le shell : la bascule est immédiate, même dans les sessions déjà ouvertes.

Les autres adapters se réappliquent sur git-theme refresh.

Installation

Ajoutez à votre .bashrc ou .zshrc :

source /chemin/vers/git-theme.sh

C'est tout. La prochaine fois que vous entrerez dans un repo git, une palette sera assignée automatiquement.

Pour Claude Code, sélectionnez une fois custom:git-theme via /theme.

Terminaux supportés

iTerm2 · Konsole · Alacritty · Kitty · tmux · Ptyxis · foot · wezterm · tout terminal compatible OSC

Commandes

git-theme ls [--all]  Voir les palettes (--all inclut les pendants clairs)
git-theme set <nom>   Choisir une palette pour le repo courant
git-theme current     Afficher la palette et la variante active
git-theme refresh     Réappliquer le thème courant
git-theme map         Voir toutes les associations repo → palette
git-theme roll        Tirer une autre palette pour ce repo (la moins utilisée)
git-theme reset       Retirer l'association du repo courant
git-theme preview     Prévisualiser toutes les palettes (3s chacune)
git-theme off         Désactiver et revenir aux couleurs par défaut

Configuration

Toutes optionnelles, à exporter avant le source.

Variable Défaut Rôle
GIT_THEME_MAX_USES 2 Nombre de repos pouvant partager une même palette auto-assignée
GIT_THEME_BASE_PALETTE dracula Palette du profil iTerm2 de base, retirée de l'auto-assignation
GIT_THEME_ITERM2_PARENT_PROFILE git-theme:base Profil iTerm2 dont héritent les profils générés

Développement

Le contrôle qualité est décrit une seule fois, dans prek.toml :

prek install      # branche le hook git local
prek run --all-files

La CI ne redéfinit aucune règle : elle installe les outils puis lance ce même prek run --all-files. Un pre-commit vert vaut donc une CI verte, et resserrer une règle se fait à un seul endroit.

Ce que le gate vérifie : espaces traînants, newline finale, fins de ligne, YAML et TOML valides, marqueurs de conflit, shellcheck, actionlint, détection de secrets (gitleaks), et surtout le parsing du script sous les cinq shells annoncés en tête de fichier — le script étant sourcé, une erreur de syntaxe casse le shell de login, pas une commande.

Comment ça marche

  1. Vous entrez dans un repo git
  2. git-theme calcule un hash du nom/remote du repo
  3. Une palette est assignée automatiquement (ou celle que vous avez choisie)
  4. Le terminal, .vscode/settings.json et ~/.claude/themes/git-theme.json sont mis à jour instantanément
  5. Les associations sont stockées dans ~/.local/share/git-theme/map

Le fichier map est un simple fichier texte — ajoutez-le à vos dotfiles pour synchroniser entre machines.

Le profil iTerm2 de base

Sur iTerm2, git-theme écrit un Dynamic Profile par palette dans ~/Library/Application Support/iTerm2/DynamicProfiles/, plus un profil parent git-theme:base dont tous héritent (police, raccourcis, réglages de fenêtre).

Ce parent est généré, pas emprunté au profil Default d'iTerm2 : l'état de Default dépend de ce que vous — ou un clic malheureux sur « Load Preset » — y avez laissé, et git-theme ne peut ni le lire ni le réparer. En possédant le parent, la chaîne est reproductible sur une machine neuve sans ouvrir les réglages d'iTerm2.

Sa palette (GIT_THEME_BASE_PALETTE) est retirée du pool d'auto-assignation : sans ça, un repo pourrait tomber dessus et devenir indiscernable de l'état « aucun repo », qui est précisément ce que le profil de base sert à signaler. Changer la variable libère l'ancienne palette et réserve la nouvelle dans le même geste.

Pour hériter d'un profil à vous à la place, pointez GIT_THEME_ITERM2_PARENT_PROFILE dessus : le profil de base n'est alors pas écrit.

Tous ces fichiers sont des artefacts dérivés : git-theme off les supprime, et ils se régénèrent à la visite suivante du repo.

About

Auto-assign terminal + VS Code color palettes per Git repo. Supports Konsole, Alacritty, Kitty, Ptyxis, foot, wezterm, and any OSC-compatible terminal.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages