Иметь разные темы zsh для терминала и iTerm

Вот в чем проблема. В настоящее время я использую тему agnoster в zsh. Это отлично выглядит в iTerm, но выглядит так в терминале.

Уродливый терминал

Другими словами, это выглядит очень некрасиво. Поэтому меня интересуют два вида решений:

  1. Имейте разные темы zsh для терминала и iTerm. Так что я могу использовать agnoster для iTerm и какую-то другую тему для терминала. (Например: robbyrussell отлично выглядит в терминале, поэтому я хотел бы иметь agnoster для iTerm и robbyrussell для терминала.

  2. Внесите некоторые изменения, чтобы agnoster хорошо выглядело в терминале.


Я заставил его работать, по-видимому, мне не хватало пробела в моем условии if, что делало его совершенно бесполезным. Вот как это выглядит у меня zshrc

if [ "$TERM_PROGRAM" = "Apple_Terminal" ]; then
    ZSH_THEME="robbyrussell"
else
    ZSH_THEME="agnoster"
fi

person Ankit Sultana    schedule 17.07.2015    source источник
comment
Большое спасибо! Я сделал то же самое для терминала Jetbrains (pyCharm и idea): if [ "$TERMINAL_EMULATOR" = "JetBrains-JediTerm" ]; then ZSH_THEME="fwalch" else ZSH_THEME="agnoster" fi   -  person Yury Kirienko    schedule 22.01.2019
comment
Я был в точно такой же ситуации, и ваше условие сработало для меня, спасибо!   -  person bildungsroman    schedule 21.08.2020


Ответы (1)


Терминал и iTerm задают переменную среды TERM_PROGRAM.

Terminal : Apple_Terminal

iTerm : iTerm

Если вы используете терминал PathFinder, TERM_PROGRAM не установлен.

Откройте конфигурацию oh-my-zsh и используйте следующую конструкцию:

OHMYTHEMES=(
    # your favourite themes
)


[ "$TERM_PROGRAM" = "iTerm" ] && OHMYTHEMES+=agnoster

ZSH_THEME=${OHMYTHEMES[(($RANDOM % ${#OHMYTHEMES} + 1))]} # chooses theme among your favourite randomly

Насколько вы знаете, что такое zsh, я предполагаю, что вы хотя бы немного разбираетесь в сценариях оболочки и можете приспособить их к своему коду.

Связанный вопрос: Получить имя терминального приложения из оболочки

person theoden8    schedule 17.07.2015
comment
Я заставил его работать. Спасибо за ваш ответ. Мне не хватало пробела после `$TERM_PROGRAM в моем условии if, которое вызывало ошибку. - person Ankit Sultana; 17.07.2015
comment
Не проблема, не волнуйтесь. - person theoden8; 17.07.2015
comment
кстати, такие вопросы для суперпользователя и задавать разные. - person theoden8; 17.07.2015