Cambia il tema Zsh in Android Studio


14

Di recente ho saltato la nave zshe sto usando l' Oh mio Zsh! tema blinks. Sembra molto bello nel terminale OSX, ma sembra molto male nel terminale di Android Studio.

Quindi la mia domanda è : c'è un modo per verificare che questa sessione sia stata aperta in Android Studio e non nel Terminale OSX e cambiare il zshtema in base a quello?

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


1
Non ho una risposta, ma penso che questo sia solo un problema con Intellij in generale. Ho postato questo sul loro forum qualche tempo fa. Mi piacerebbe conoscere la risposta da solo.
jktravis,

Non sono sicuro di aver capito il problema, ma è abbastanza semplice eseguire un piccolo script per cambiare 'PS1' da qualunque cosa. Sembra che tu voglia cambiare il colore di sfondo per lo più.
Ray Andrews,

2
Come una sorta di kludge, puoi provare a attraversare l'albero PID a partire dal processo principale ($ PPID) fino al PID 1. Se vedi che c'è java, cambia il tema.
drdaeman,

Risposte:


2

Dal momento che nessun altro ti ha dato una risposta, ci sto provando nonostante abbia un software completamente diverso. Quindi questa è una risposta generica su come farlo con qualsiasi software. Ci sono due approcci che vengono in mente:

1. Ambienti diversi

Apri Terminale ed esegui env > env.terminal. Apri Android Studio ed esegui env > env.studio. Ora, in entrambi i terminali, puoi eseguire diff -dby --suppress-common-lines env.terminal env.studio(se Mac OS X diff ha queste opzioni; se non -U1funziona abbastanza bene).

Ad esempio, ecco la differenza tra xterme konsolesulla mia scatola di Linux (nota: spaziatura modificata per adattarsi alla pagina):

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

Alcune di queste cose sono chiaramente rumorose da come ho lanciato i due diversi terminali. Ma altri no. Se volessi qualcosa solo in XTerm, if [ -n "$XTERM_VERSION" ]sembrerebbe essere un buon modo per farlo. Allo stesso modo, per Konsole, $KONSOLE_PROFILE_NAMEsarebbe una buona idea (e probabilmente anche alcune delle altre).

2. Diversi processi padre

Una shell conosce il proprio ID processo, a cui è possibile accedere tramite $$. POSIX deve anche $PPIDottenere direttamente il PID genitore, quindi sospetto che lo possiate anche in zsh. In caso contrario, pssi può ottenere per voi: ppid=$(ps -o ppid= $$). È quindi possibile ottenere il comando eseguito, anche con ps:

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

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

(Puoi anche provare -o comm=).

In uno script di shell, sarebbe simile a:

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

Se hai bisogno di andare oltre l'albero del processo, puoi usare psper ottenere il genitore del genitore, ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.