Changer le thème Zsh dans Android Studio

14

J'ai récemment quitté le navire zshet j'utilise le Oh my Zsh! thème blinks. Il a l'air très bien dans le terminal OSX, mais il a l'air très mauvais dans le terminal d'Android Studio.

Ma question est donc de savoir s'il existe un moyen de vérifier que cette session a été ouverte dans Android Studio et non dans le terminal OSX et de changer le zshthème en fonction de cela?

entrez la description de l'image ici

entrez la description de l'image ici

Sheharyar
la source
1
Je n'ai pas de réponse, mais je pense que c'est juste un problème avec Intellij en général. J'ai posté cela sur leurs forums il y a un moment. J'adorerais connaître la réponse moi-même.
jktravis
Je ne suis pas sûr de comprendre le problème, mais il est assez facile d'exécuter simplement un petit script pour changer la «PS1» de quoi que ce soit en quelque chose. Il semble que vous souhaitiez principalement modifier la couleur d'arrière-plan.
Ray Andrews
2
Comme une sorte de kludge, vous pouvez essayer de parcourir l'arborescence PID à partir de votre processus parent ($ PPID) jusqu'au PID 1. Si vous voyez java, changez de thème.
drdaeman

Réponses:

2

Puisque personne d'autre ne vous a donné de réponse, j'essaie malgré le fait d'avoir un logiciel complètement différent. C'est donc une réponse générique sur la façon de le faire avec n'importe quel logiciel. Deux approches me viennent à l'esprit:

1. Différents environnements

Ouvrez Terminal et exécutez env > env.terminal. Ouvrez Android Studio et exécutez env > env.studio. Maintenant, dans l'un ou l'autre terminal, vous pouvez exécuter diff -dby --suppress-common-lines env.terminal env.studio(si Mac OS X diff a ces options; sinon-U1 fonctionne assez bien).

A titre d'exemple, voici la différence entre xtermet konsolesur ma box Linux (note: espacement modifié pour tenir sur la page):

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

Certaines de ces choses sont clairement du bruit de la façon dont j'ai lancé les deux terminaux différents. Mais d'autres ne le sont pas. Si je voulais quelque chose uniquement dans XTerm, if [ -n "$XTERM_VERSION" ]cela semblerait être un très bon moyen de le faire. De même, pour Konsole, ce $KONSOLE_PROFILE_NAMEserait un bon (et probablement quelques-uns des autres aussi).

2. Différents processus parents

Un shell connaît son propre ID de processus, il est accessible via $$. POSIX doit également $PPIDobtenir le PID parent directement, donc je soupçonne que vous l'avez aussi en zsh. Dans le cas contraire, pspeut l' obtenir pour vous: ppid=$(ps -o ppid= $$). Vous pouvez ensuite exécuter la commande, également avec ps:

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

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

(Vous pouvez également essayer -o comm=).

Dans un script shell, cela ressemblerait à quelque chose comme:

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 vous avez besoin d'aller plus loin dans l'arborescence des processus, vous pouvez utiliser pspour obtenir le parent du parent, etc.

derobert
la source