Alterar o tema Zsh no Android Studio

14

Recentemente fui para o navio zshe estou usando o Oh my Zsh! tema blinks. Parece muito bom no terminal OSX, mas parece muito ruim no terminal do Android Studio.

Portanto, minha pergunta é : existe uma maneira de verificar se esta sessão foi aberta no Android Studio e não no Terminal OSX e alterar o zshtema de acordo com isso?

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Sheharyar
fonte
1
Não tenho uma resposta, mas acho que esse é apenas um problema do Intellij em geral. Eu publiquei isso em seus fóruns há um tempo atrás. Gostaria de saber a resposta eu mesmo.
Jktravis
Não sei se entendi o problema, mas é fácil executar apenas um pequeno script para alterar o 'PS1' de qualquer coisa para qualquer coisa. Parece que você deseja alterar principalmente a cor do plano de fundo.
Ray Andrews
2
Como uma espécie de kludge, você pode tentar percorrer a árvore do PID a partir do processo pai ($ PPID) até o PID 1. Se você vir java, mude o tema.
Drdaeman 17/07/2016

Respostas:

2

Como ninguém mais lhe deu uma resposta, estou tentando, apesar de ter um software completamente diferente. Portanto, esta é uma resposta genérica sobre como fazê-lo com qualquer software. Há duas abordagens que vêm à mente:

1. Ambientes diferentes

Abra o Terminal e execute env > env.terminal. Abra o Android Studio e execute env > env.studio. Agora, em qualquer terminal, você pode executar diff -dby --suppress-common-lines env.terminal env.studio(se o diff do Mac OS X tiver essas opções; se não -U1funcionar bem o suficiente).

Como exemplo, aqui está a diferença entre xterme konsolena minha caixa Linux (nota: espaçamento modificado para caber na 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           <

Algumas dessas coisas são claramente ruídos de como lancei os dois terminais diferentes. Mas outros não são. Se eu quisesse algo apenas no XTerm, então if [ -n "$XTERM_VERSION" ]seria uma boa maneira de fazer isso. Da mesma forma, para o Konsole, $KONSOLE_PROFILE_NAMEseria bom (e provavelmente alguns outros também).

2. Processos pai diferentes

Um shell conhece seu próprio ID de processo e pode ser acessado via $$. O POSIX também precisa $PPIDobter o PID pai diretamente, então eu suspeito que você o tenha no zsh também. Se não, pspode obtê-lo para você: ppid=$(ps -o ppid= $$). Você pode então executar o comando, também com o ps:

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

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

(Você pode tentar -o comm=também).

Em um script de shell, seria algo 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

Se você precisar ir além na árvore de processos, poderá usar pspara obter o pai do pai, etc.

derobert
fonte