Cambiar el tema de Zsh en Android Studio

14

Recientemente salté a la nave zshy estoy usando el Oh my Zsh! el tema blinks. Se ve muy bien en la Terminal OSX, pero se ve muy mal en la terminal de Android Studio.

Entonces, mi pregunta es ¿hay alguna manera de verificar que esta sesión se haya abierto en Android Studio y no en la Terminal OSX y cambiar el zshtema de acuerdo con eso?

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Sheharyar
fuente
1
No tengo una respuesta, pero creo que esto es solo un problema con Intellij en general. Publiqué esto en sus foros hace un tiempo. Me encantaría saber la respuesta yo mismo.
jktravis
No estoy seguro de entender el problema, pero es bastante fácil ejecutar un pequeño script para cambiar 'PS1' de lo que sea a lo que sea. Parece que desea cambiar el color de fondo principalmente.
Ray Andrews
2
Como una especie de kludge, puede intentar atravesar el árbol PID desde su proceso padre ($ PPID) hasta el mismo PID 1. Si ve que hay java, cambie el tema.
drdaeman

Respuestas:

2

Como nadie más te ha dado una respuesta, lo intento a pesar de tener un software completamente diferente. Entonces, esta es una respuesta genérica sobre cómo hacerlo con cualquier software. Hay dos enfoques que vienen a la mente:

1. Diferentes ambientes

Abra la Terminal y corra env > env.terminal. Abra Android Studio y ejecútelo env > env.studio. Ahora, en cualquier terminal, puede ejecutar diff -dby --suppress-common-lines env.terminal env.studio(si Mac OS X diff tiene esas opciones; si no -U1funciona lo suficientemente bien).

Como ejemplo, aquí está la diferencia entre xtermy konsoleen mi cuadro de Linux (nota: el espacio modificado para ajustarse a la página):

                                   > 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           <

Algunas de esas cosas son claramente ruido de cómo lancé los dos terminales diferentes. Pero otros no lo son. Si quisiera algo solo en XTerm, entonces if [ -n "$XTERM_VERSION" ]parecería ser una muy buena manera de hacerlo. Del mismo modo, para Konsole, $KONSOLE_PROFILE_NAMEsería bueno (y probablemente también algunos de los otros).

2. Diferentes procesos parentales

Un shell conoce su propia ID de proceso, se puede acceder a través de $$. POSIX también tiene $PPIDque obtener el PID principal directamente, por lo que sospecho que también lo tiene en zsh. Si no es así, pspuede conseguirlo para usted: ppid=$(ps -o ppid= $$). Luego puede ejecutar el comando, también con ps:

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

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

(Puedes intentarlo -o comm=también).

En un script de shell, se vería algo así como:

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

Si necesita avanzar más arriba en el árbol de procesos, puede usar pspara obtener el padre del padre, etc.

derobert
fuente