Zmień motyw Zsh w Android Studio


14

Niedawno wskoczyłem na statek zshi używam Oh my Zsh! motyw blinks. Wygląda bardzo ładnie w terminalu OSX, ale bardzo źle wygląda w terminalu Android Studio.

Więc mam pytanie, czy istnieje sposób, aby sprawdzić, czy ta sesja została otwarta w Android Studio, a nie w Terminalu OSX, i zmienić zshmotyw zgodnie z tym?

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj


1
Nie mam odpowiedzi, ale myślę, że to tylko problem z Intellij w ogóle. Jakiś czas temu opublikowałem to na forach. Chciałbym sam poznać odpowiedź.
jktravis,

Nie jestem pewien, czy rozumiem problem, ale wystarczy uruchomić krótki skrypt, aby zmienić „PS1” z dowolnego na inny. Wygląda na to, że chcesz głównie zmienić kolor tła.
Ray Andrews,

2
Jako rodzaj kludge, możesz spróbować przejść przez drzewo PID, zaczynając od procesu nadrzędnego ($ PPID) aż do samego PID 1. Jeśli widzisz java, przełącz motyw.
drdaeman,

Odpowiedzi:


2

Ponieważ nikt inny nie dał ci odpowiedzi, próbuję pomimo posiadania zupełnie innego oprogramowania. Jest to więc ogólna odpowiedź na pytanie, jak to zrobić za pomocą dowolnego oprogramowania. Przychodzą mi na myśl dwa podejścia:

1. Różne środowiska

Otwórz terminal i uruchom env > env.terminal. Otwórz Android Studio i uruchom env > env.studio. Teraz możesz uruchomić dowolny terminal diff -dby --suppress-common-lines env.terminal env.studio(jeśli Mac OS X diff ma te opcje; jeśli nie -U1działa wystarczająco dobrze).

Na przykład, tutaj jest różnica pomiędzy xtermi konsolena moim Linux-ie (uwaga: odstępy zmodyfikowano, aby pasowały do ​​strony):

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

Niektóre z tych rzeczy są wyraźnie szumem z powodu uruchomienia dwóch różnych terminali. Ale inni nie są. Gdybym chciał czegoś tylko w XTerm, if [ -n "$XTERM_VERSION" ]wydaje się to całkiem dobrym sposobem na zrobienie tego. Podobnie dla Konsoli $KONSOLE_PROFILE_NAMEbyłby dobry (i prawdopodobnie także kilku innych).

2. Różne procesy nadrzędne

Powłoka zna swój własny identyfikator procesu, do którego można uzyskać dostęp za pośrednictwem $$. POSIX musi również $PPIDuzyskać bezpośrednio PID nadrzędny, więc podejrzewam, że masz go również w Zsh. Jeśli nie, to psmoże się to dla Ciebie: ppid=$(ps -o ppid= $$). Następnie możesz uruchomić polecenie, również za pomocą ps:

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

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

(Możesz także spróbować -o comm=).

W skrypcie powłoki wyglądałoby to tak:

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

Jeśli chcesz przejść dalej w górę drzewa procesów, możesz użyć, psaby uzyskać rodzica rodzica itp.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.