Изменение темы Zsh в Android Studio

Я недавно прыгнул на корабль в zsh и я использую Oh my Zsh! тема blinks . В OSX Terminal очень хорошо выглядит, но в терминале Android Studio это очень плохо.

Поэтому мой вопрос заключается в том, есть ли способ проверить, что этот сеанс был открыт в Android Studio, а не в OSX Terminal, и изменить тему zsh соответствии с этим?

введите описание изображения здесь

введите описание изображения здесь

One Solution collect form web for “Изменение темы Zsh в Android Studio”

Поскольку никто другой не дал вам ответа, я стараюсь, несмотря на совершенно другое программное обеспечение. Итак, это общий ответ о том, как это сделать с любым программным обеспечением. На ум приходят два подхода:

1. Различные среды

Откройте терминал и запустите env > env.terminal . Откройте Android Studio и запустите env > env.studio . Теперь в любом из терминалов вы можете запускать diff -dby --suppress-common-lines env.terminal env.studio (если у Mac OS X diff есть эти параметры, а если -U1 работает достаточно хорошо).

В качестве примера, вот различие между xterm и konsole на моем Linux-поле (обратите внимание: интервал изменен для соответствия на странице):

  > PROFILEHOME= > SHELL_SESSION_ID=1e8d5ab2d16641668485f991a1beffe3 > QSG_RENDER_LOOP= > COLORTERM=truecolor XTERM_SHELL=/bin/bash < > KONSOLE_DBUS_SESSION=/Sessions/1 XTERM_VERSION=XTerm(327) | KONSOLE_DBUS_WINDOW=/Windows/1 TERM=xterm < > TERM=xterm-256color > KONSOLE_DBUS_SERVICE=:1.1514 > QMLSCENE_DEVICE= > KONSOLE_PROFILE_NAME=Default > COLORFGBG=15;0 WINDOWID=83886094 | WINDOWID=115343366 XAUTHORITY=/tmp/xauth-1000-_0 | XAUTHORITY=/home/anthony/.Xauthority KDED_STARTED_BY_KDEINIT=1 < XTERM_LOCALE=en_US.UTF-8 < 

Некоторые из этих вещей явно звучат от того, как я запустил два разных терминала. Но другие – нет. Если бы я хотел что-то только в XTerm, то, if [ -n "$XTERM_VERSION" ] , казалось бы, был бы неплохим способом сделать это. Аналогично, для Konsole $KONSOLE_PROFILE_NAME будет хорошим (и, вероятно, некоторыми из других).

2. Различные родительские процессы

Оболочка знает свой собственный идентификатор процесса, к которому можно получить доступ через $$ . POSIX также имеет $PPID чтобы получить родительский PID напрямую, поэтому я подозреваю, что у вас это тоже в zsh. Если нет, ps может получить его для вас: ppid=$(ps -o ppid= $$) . Затем вы можете запустить команду, также используя ps:

 xterm:~$ ps -o args= $PPID /usr/bin/xterm konsole:~$ ps -o args= $PPID /usr/bin/konsole 

(Вы также можете попробовать -o comm= ).

В сценарии оболочки он выглядит примерно так:

 ppid=$(ps -o ppid= $$) # if you don't have PPID for some reason if [ "$(ps -o args= $ppid)" = "/usr/bin/xterm" ]; then echo "do xterm stuff" fi 

Если вам нужно идти дальше по дереву процессов, вы можете использовать ps для получения родительского родителя и т. Д.

  • привязка ключевых ссылок к функциям оболочки в zsh
  • печать строки "canonical print-escaped form"
  • Как разбить строку на управляющий символ?
  • Где zsh и mksh несовместимы с bash?
  • Как я могу подавить пространство между сгенерированными аргументами во время расширения фигурной скобки?
  • Завершение Zsh для монтирования (/ run / media / DISK-LABEL)?
  • Weird zsh grep -P поведение
  • Выберите пользовательский запрос zsh на основе того, какой эмулятор я использую
  • oh-my-zsh завершение в именах домашних каталогов
  • Как установить правила автозаполнения Zsh для второго аргумента (функции) в правила существующей команды?
  • Проблема с пониманием привязок ключей
  • Linux и Unix - лучшая ОС в мире.