Ändern Sie das Zsh-Thema in Android Studio

13

Ich bin kürzlich zum Schiff gesprungen zshund benutze das Oh my Zsh! Thema blinks. Im OSX-Terminal sieht es sehr gut aus, aber im Android-Studio-Terminal sieht es sehr schlecht aus.

Meine Frage ist also, ob es eine Möglichkeit gibt, zu überprüfen, ob diese Sitzung in Android Studio und nicht im OSX-Terminal geöffnet wurde, und das zshThema entsprechend zu ändern .

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Sheharyar
quelle
1
Ich habe keine Antwort, aber ich denke, dies ist nur ein Problem mit Intellij im Allgemeinen. Ich habe dies vor einer Weile in ihren Foren gepostet . Würde die Antwort gerne selbst erfahren.
Jktravis
Ich bin mir nicht sicher, ob ich das Problem verstehe, aber es ist einfach genug, ein kleines Skript auszuführen, um 'PS1' von was auch immer in was auch immer zu ändern. Sieht aus wie Sie die Hintergrundfarbe meistens ändern möchten.
Ray Andrews
2
Als eine Art Trick können Sie versuchen, den PID-Baum von Ihrem übergeordneten Prozess ($ PPID) bis zur eigentlichen PID 1 zu durchlaufen java.
Drdaeman

Antworten:

2

Da Ihnen sonst niemand eine Antwort gegeben hat, versuche ich es trotz völlig anderer Software. Das ist also eine generische Antwort darauf, wie man es mit jeder Software macht. Es gibt zwei Ansätze, die in den Sinn kommen:

1. Unterschiedliche Umgebungen

Öffnen Sie das Terminal und führen Sie es aus env > env.terminal. Öffnen Sie Android Studio und führen Sie es aus env > env.studio. Jetzt können Sie in beiden Terminals ausführen diff -dby --suppress-common-lines env.terminal env.studio(wenn Mac OS X diff diese Optionen hat; wenn dies nicht -U1gut genug funktioniert).

Als Beispiel ist hier der Unterschied zwischen xtermund konsoleauf meiner Linux-Box (Hinweis: Abstand geändert, um auf die Seite zu passen):

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

Einiges davon ist eindeutig ein Geräusch von dem Start der beiden verschiedenen Terminals. Andere aber nicht. Wenn ich etwas nur in XTerm wollte, dann if [ -n "$XTERM_VERSION" ]wäre das anscheinend ein ziemlich guter Weg, dies zu tun. Ähnlich $KONSOLE_PROFILE_NAMEwäre es für Konsole gut (und wahrscheinlich auch für einige andere).

2. Unterschiedliche übergeordnete Prozesse

Eine Shell kennt ihre eigene Prozess-ID, über die auf sie zugegriffen werden kann $$. POSIX muss auch $PPIDdie übergeordnete PID direkt abrufen, also habe ich den Verdacht, dass Sie diese auch in zsh haben. Wenn nicht, pskann es für Sie: ppid=$(ps -o ppid= $$). Sie können dann den Befehl ausführen lassen, auch mit ps:

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

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

(Du kannst es auch versuchen -o comm=).

In einem Shell-Skript würde es ungefähr so ​​aussehen:

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

Wenn Sie den Prozessbaum weiter nach oben verschieben möchten, können Sie psden übergeordneten Teil des übergeordneten Teils usw. abrufen.

derobert
quelle