在Android Studio中更改Zsh主题


14

我最近跳到了船上,zsh正在使用“ 噢,我的Zsh”!主题blinks。在OSX终端中看起来非常不错,但在Android Studio终端中看起来非常糟糕。

所以我的问题是,有没有办法检查此会话是否已在Android Studio中打开,而不是在OSX Terminal中打开,并zsh据此更改主题?

在此处输入图片说明

在此处输入图片说明


1
我没有答案,但是我认为这通常只是Intellij的问题。我不久前在他们的论坛上发布了这个。很想知道自己的答案。
jktravis

我不确定我是否理解问题,但是只需运行一个小脚本即可将“ PS1”从任何内容更改为任何内容就足够了。看起来您想主要更改背景颜色。
雷·安德鲁斯

2
作为一种麻烦,您可以尝试从父进程($ PPID)一直到PID 1遍历PID树。如果看到java,请切换主题。
drdaeman '16

Answers:


2

由于没有其他人给您答案,因此尽管拥有完全不同的软件,我仍在尝试。因此,这是如何使用任何软件进行通用回答。我想到两种方法:

1.不同的环境

打开终端,然后运行env > env.terminal。打开Android Studio,然后运行env > env.studio。现在,您可以在任一终端上运行diff -dby --suppress-common-lines env.terminal env.studio(如果Mac OS X diff具有这些选项;如果不能-U1很好地运行)。

例如,这是Linux框xtermkonsoleLinux框之间的区别(请注意:间距已更改为适合页面大小):

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

这些东西显然是我启动两个不同终端的方式带来的噪音。但是其他人不是。如果我只想要XTerm中的内容,那么if [ -n "$XTERM_VERSION" ]这似乎是一个很好的方法。同样,对于Konsole来说,$KONSOLE_PROFILE_NAME将是一个不错的选择(也许还有其他一些选择)。

2.不同的父流程

Shell知道自己的进程ID,可以通过访问它$$。POSIX还必须$PPID直接获取父PID,因此我怀疑您在zsh中也有。如果没有,ps可以为您提供:ppid=$(ps -o ppid= $$)。然后,您也可以使用ps来运行命令:

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

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

(您也可以尝试-o comm=)。

在shell脚本中,它看起来像:

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

如果您需要进一步深入流程树,则可以使用ps获取父级的父级,等等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.