เปลี่ยนธีม Zsh ใน Android Studio


14

ฉันเพิ่งกระโดดขึ้นเรือมาzshและฉันใช้Oh my Zsh! blinksกระทู้ มันดูดีมากในเทอร์มินัล OSX แต่มันดูแย่มากในเทอร์มินัลของ Android Studio

ดังนั้นคำถามของฉันคือมีวิธีการตรวจสอบว่าเซสชั่นนี้ได้เปิดใน Android Studio และไม่ได้อยู่ใน Terminal OSX และเปลี่ยนzshชุดรูปแบบตามที่?

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันไม่มีคำตอบ แต่ฉันคิดว่านี่เป็นเพียงปัญหาของ Intellij โดยทั่วไป ฉันโพสต์สิ่งนี้ในฟอรัมของพวกเขาเมื่อไม่นานมานี้ ชอบที่จะรู้คำตอบเอง
jktravis

ฉันไม่แน่ใจว่าฉันเข้าใจปัญหานี้ แต่ก็ง่ายพอที่จะเรียกใช้สคริปต์เล็กน้อยเพื่อเปลี่ยน 'PS1' จากสิ่งใดก็ตามเป็นอะไรก็ตาม ดูเหมือนว่าคุณต้องการเปลี่ยนสีพื้นหลังเป็นส่วนใหญ่
Ray Andrews

2
ในรูปแบบของกระบองคุณอาจลองสำรวจต้นไม้ PID ที่เริ่มต้นจากกระบวนการหลักของคุณ ($ PPID) จนถึง PID ที่ 1 หากคุณเห็นนั่นjavaให้เปลี่ยนธีม
drdaeman

คำตอบ:


2

เนื่องจากไม่มีใครให้คำตอบกับคุณฉันจึงพยายามแม้จะมีซอฟต์แวร์ที่แตกต่างอย่างสิ้นเชิง ดังนั้นนี่คือคำตอบทั่วไปเกี่ยวกับวิธีการทำกับซอฟต์แวร์ใด ๆ มีสองวิธีที่อยู่ในใจ:

1. สภาพแวดล้อมที่แตกต่างกัน

เปิด Terminal env > env.terminalและวิ่ง เปิด Android สตูดิโอ, env > env.studioและเรียกใช้ ตอนนี้ในเทอร์มินัลทั้งสองคุณสามารถเรียกใช้diff -dby --suppress-common-lines env.terminal env.studio(หาก Mac OS X มีตัวเลือกเหล่านั้นถ้าไม่-U1ทำงานได้ดีพอ)

ตัวอย่างเช่นนี่คือความแตกต่างระหว่างxtermและkonsoleในกล่อง Linux ของฉัน (หมายเหตุ: การเว้นวรรคปรับเปลี่ยนเพื่อให้พอดีกับหน้า):

                                   > 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. กระบวนการผู้ปกครองที่แตกต่างกัน

เปลือกรู้กระบวนการ 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=เช่นกัน)

ในเชลล์สคริปต์ดูเหมือนว่า:

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เพื่อรับพาเรนต์ของพาเรนต์เป็นต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.