Змінення теми Zsh в Android Studio


14

Нещодавно я стрибнув на корабель, zshі я використовую О, мій Zsh! тема blinks. Це виглядає дуже приємно в терміналі OSX, але дуже погано виглядає в терміналі Android Studio.

Отже, моє запитання: чи є спосіб перевірити, чи відкрито цей сеанс в Android Studio, а не в терміналі OSX, і змінити zshтему відповідно до цього?

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

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


1
У мене немає відповіді, але я думаю, що це лише проблема з Intellij взагалі. Я розміщував це на їхніх форумах деякий час тому. Я хотів би дізнатися відповідь сам.
jktravis

Я не впевнений, що розумію проблему, але досить просто запустити невеликий сценарій, щоб змінити "PS1" з будь-якого на будь-який. Схоже, ви хочете в основному змінити колір фону.
Рей Ендрюс

2
Ви можете спробувати перейти до дерева PID, починаючи з батьківського процесу ($ PPID) і закінчившись самим PID 1. Якщо ви бачите там java, переключіть тему.
drdaeman

Відповіді:


2

Оскільки ніхто більше не дав тобі відповіді, я намагаюся, не маючи зовсім іншого програмного забезпечення. Отже, це загальна відповідь про те, як це зробити з будь-яким програмним забезпеченням. Існують два підходи:

1. Різні середовища

Відкрийте термінал і запустіть env > env.terminal. Відкрийте Android Studio і запустіть env > env.studio. Тепер у будь-якому терміналі ви можете запускатись diff -dby --suppress-common-lines env.terminal env.studio(якщо у Mac OS X diff є ці параметри; якщо вона недостатньо -U1працює).

Як приклад, ось різниця між моїм вікном Linux xtermі konsoleна ньому (зауважте: проміжок змінено для розміщення на сторінці):

                                   > 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для отримання батьківського батьківського і т.д.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.