Solarisierte Farben mit Minze und TMux wechseln

1667
Jeff

Ich versuche, einen Weg zu finden, um leicht zwischen hell / dunkel solarisierten Themen zu wechseln, ohne eine neue Terminal / TMux-Sitzung erstellen zu müssen. Ich verwende mintty auf einem Windows-Computer und logge mich normalerweise bei einem Linux-Computer ein und verbinde mich mit einer tmux-Sitzung.

Mit mavnns solarisierten Mintty- Farben und seebis solarisierten Tmux- Farben habe ich einige Bash-Funktionen geschrieben, die die Terminalfarben im laufenden Betrieb ändern können. Das ist in meiner .bashrc:

Funktion Godark () { ~ / solarized / sol.dark tmux-Quelldatei ~ / tmux / tmuxcolors-dark.conf }  funktion golight () { ~ / solarized / sol.light tmux-Quelldatei ~ / tmux / tmuxcolors-light.conf } 

So gibt es in sol.dark Anweisungen wie:

echo -ne '\ eP \ e] 10; # 839496 \ a' # Vordergrund -> Basis0 echo -ne '\ eP \ e] 11; # 002B36 \ a' # Hintergrund -> base03 

und in meiner tmuxcolors-dark.conf habe ich Dinge wie:

set-option -g status-bg color235 # base02 set-option -g status-fg color130 #yellow 

Das funktioniert fast . Wenn ich tmux nicht geöffnet habe, kann ich "godark" eingeben und mintty ändert sich in ein dunkles Thema. Wenn ich dies jedoch in tmux eingebe, ändert sich meine tmux-Statusleiste in das richtige Thema, aber der Hintergrund des Terminals ändert nicht die Farbe . Ich verstehe ANSI-Escape-Sequenzen nicht wirklich, also mache ich hier vielleicht etwas Dummes. Ich würde mich über jede Hilfe bei der Arbeit freuen!

4
Versuchen Sie, tmux als "tmux -2" zu starten, um 256 Farben aus einem als "screen-256color" festgelegten Terminal zu unterstützen. Weitere Informationen finden Sie in diesem Artikel (http://www.terminally-incoherent.com/blog/2012/10/17/vim-solarized-and-tmux/). harrymc vor 9 Jahren 0
Danke, @harrymc. Ich habe es versucht und leider hat es nicht geholfen. Nach allem, was ich sagen kann, funktionieren 256 Farben gut, ich kann einfach nicht zwischen hellen und dunklen Themen wechseln. Jeff vor 9 Jahren 0

1 Antwort auf die Frage

4
igor

Sie können eine Escape-Sequenz von innerhalb von tmux an das übergeordnete Terminal senden, indem Sie Ihre Escape-Sequenz wie folgt transformieren:

  1. verdopple alle Vorkommen von \e
  2. voranstellen \ePtmux;
  3. anhängen \e\\

Wenn Sie beispielsweise st als Terminalemulator verwenden, kann ich Farbe # 1 (rot) der Palette durch Ausführen neu definieren

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

Um das gleiche innerhalb von tmux zu machen, muss ich verwenden

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

Wenn Sie ein Shell-Skript / eine Shell-Funktion zum Wechseln der Farben verwenden, überprüfen Sie die $TMUXUmgebungsvariable. Wenn es nicht leer ist, sind Sie in tmux.

Das hat funktioniert! Vielen Dank! Jeff vor 9 Jahren 0