Переключение соляризованных цветов с мятой и tmux

1613
Jeff

Я пытаюсь найти способ легко переключаться между светлыми / темными соляризованными темами без необходимости создавать новый сеанс терминала / tmux. Я запускаю mintty на компьютере с Windows и обычно захожу на компьютер с Linux и подключаюсь к сеансу tmux.

Используя соляризованные мятные цвета от mavnn и соляризованные цвета tmux от Seebi, я написал несколько функций bash, которые могут изменять цвета терминала на лету. Это в моем .bashrc:

функция Godark () { ~ / Соляризации / sol.dark исходный файл tmux ~ / tmux / tmuxcolors-dark.conf }  функция golight () { ~ / Соляризации / sol.light исходный файл tmux ~ / tmux / tmuxcolors-light.conf } 

Так что внутри sol.dark есть такие инструкции, как:

echo -ne '\ eP \ e] 10; # 839496 \ a' # Передний план -> base0 echo -ne '\ eP \ e] 11; # 002B36 \ a' # Фон -> base03 

и внутри моего tmuxcolors-dark.conf у меня будут такие вещи, как:

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

Это почти работает. Если у меня нет открытого tmux, я могу набрать «godark», и mintty изменится на темную тему, но если я введу это в tmux, изменится строка состояния моего tmux на правильную тему, но фон моего терминала не изменит цвет, Я не очень понимаю escape-последовательности ANSI, так что, возможно, я делаю что-то глупое здесь. Буду признателен за любую помощь в получении этой работы!

4
Попробуйте запустить tmux как `tmux -2` для поддержки 256 цветов изнутри терминала, установленного как` screen-256color`. Для получения дополнительной информации см. [Эту статью] (http://www.terminally-incoherent.com/blog/2012/10/17/vim-solarized-and-tmux/). harrymc 9 лет назад 0
Спасибо, @harrymc. Я попробовал это, и, к сожалению, это не помогло. Из того, что я могу сказать, у меня нормально работает 256 цветов, я просто не могу переключаться между светлыми и темными темами. Jeff 9 лет назад 0

1 ответ на вопрос

4
igor

Вы можете отправить escape-последовательность изнутри tmux на содержащий терминал, преобразовав вашу escape-последовательность следующим образом:

  1. удвоить все случаи \e
  2. перед именем \ePtmux;
  3. присоединять \e\\

Например, используя st в качестве моего эмулятора терминала, я могу переопределить цвет # 1 (красный) его палитры, выполнив

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

Чтобы сделать то же самое из Tmux, я должен использовать

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

При использовании сценария / функции оболочки для переключения цветов проверьте $TMUXпеременную среды. Если он не пустой, значит вы внутри tmux.

Это сработало! Спасибо! Jeff 9 лет назад 0