Commutation des couleurs solarisées avec menthe et tmux

4

J'essaie de trouver un moyen de basculer facilement entre les thèmes solarisés clair / foncé sans avoir à créer une nouvelle session terminal / tmux. J'utilise mintty sur une machine Windows et me connecte généralement à une machine Linux et à une session tmux.

En utilisant les couleurs de menthe solarisées de mavnn et les couleurs de tmux solarisées de seebi , j'ai écrit quelques fonctions bash qui peuvent changer les couleurs du terminal à la volée. Ceci est dans mon .bashrc:

fonction godark ()
{
    ~ / solarisé / sol.dark
    fichier source tmux ~ / tmux / tmuxcolors-dark.conf
}

fonction golight ()
{
    ~ / solarisé / sol.light
    fichier source tmux ~ / tmux / tmuxcolors-light.conf
}

Donc, à l'intérieur de sol.dark, il y a des instructions telles que:

echo -ne '\ eP \ e] 10; # 839496 \ a' # Avant-plan -> base0
echo -ne '\ eP \ e] 11; # 002B36 \ a' # Background -> base03

et à l'intérieur de mon tmuxcolors-dark.conf je vais avoir des choses telles que:

set-option -g status-bg couleur235 # base02
set-option -g status-fg colour130 #yellow

Ceci fonctionne presque . Si je n'ai pas ouvert tmux, je peux taper "godark" et menthe changera pour un thème sombre, mais si je tape ceci dans tmux, la barre d'état de tmux sera remplacée par le thème correct, mais l'arrière-plan de mon terminal ne changera pas de couleur. . Je ne comprends pas vraiment les séquences d'échappement ANSI, alors je fais peut-être une bêtise ici. J'apprécierais toute aide pour que cela fonctionne!

Jeff
la source
Essayez de démarrer tmux tmux -2pour prendre en charge 256 couleurs, à partir d’un terminal défini en tant que screen-256color. Pour plus d'informations, voir cet article .
harrymc
Merci, @harrymc. J'ai essayé cela et malheureusement cela n'a pas aidé. D'après ce que je peux dire, j'ai 256 couleurs qui fonctionnent bien, je ne peux tout simplement pas basculer entre les thèmes clairs et sombres.
Jeff

Réponses:

5

Vous pouvez envoyer une séquence d'échappement de tmux à l'intérieur du terminal conteneur en transformant votre séquence d'échappement de la manière suivante:

  1. doubler toutes les occurrences de \e
  2. préposer \ePtmux;
  3. ajouter \e\\

Par exemple, en utilisant st comme émulateur de terminal, je peux redéfinir la couleur n ° 1 (rouge) de sa palette en exécutant

printf '\e]4;1;#aa0000\a'

Pour faire la même chose depuis tmux, je dois utiliser

printf '\ePtmux;\e\e]4;1;#aa0000\a\e\\'

Lorsque vous utilisez un script / une fonction shell pour changer de couleur, vérifiez la $TMUXvariable d'environnement. Si ce n'est pas vide, alors vous êtes dans tmux.

igor
la source