Thay đổi chủ đề Zsh trong Android Studio


14

Gần đây tôi đã nhảy tàu zshvà tôi đang sử dụng Oh my Zsh! chủ đề blinks. Nó trông rất đẹp trong Terminal OSX, nhưng trông rất tệ trong terminal của Android Studio.

Vì vậy, câu hỏi của tôi là có cách nào để kiểm tra xem phiên này đã được mở trong Android Studio chứ không phải trong OSX Terminal và thay đổi zshchủ đề theo đó?

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


1
Tôi không có câu trả lời, nhưng tôi nghĩ rằng đây chỉ là một vấn đề với Intellij nói chung. Tôi đã đăng bài này lên diễn đàn của họ cách đây một thời gian. Rất muốn biết câu trả lời cho mình.
jktravis

Tôi không chắc là tôi hiểu vấn đề, nhưng thật dễ dàng khi chỉ cần chạy một đoạn script nhỏ để thay đổi 'PS1' từ bất cứ điều gì thành bất cứ điều gì. Có vẻ như bạn muốn thay đổi màu nền là chủ yếu.
Ray Andrew

2
Là một loại bùn, bạn có thể thử di chuyển qua cây PID bắt đầu từ quy trình cha mẹ của bạn ($ PPID) cho đến chính PID 1. Nếu bạn thấy có java, hãy chuyển chủ đề.
drdaeman

Câu trả lời:


2

Vì không ai khác đưa ra câu trả lời cho bạn, tôi đang cố gắng mặc dù có phần mềm hoàn toàn khác. Vì vậy, đây là một câu trả lời chung chung về cách làm điều đó với bất kỳ phần mềm. Có hai cách tiếp cận mà bạn nghĩ đến:

1. Môi trường khác nhau

Mở Terminal và chạy env > env.terminal. Mở Android Studio và chạy env > env.studio. Bây giờ, trong một trong hai thiết bị đầu cuối, bạn có thể chạy diff -dby --suppress-common-lines env.terminal env.studio(nếu Mac OS X diff có các tùy chọn đó; nếu không -U1hoạt động đủ tốt).

Ví dụ, đây là sự khác biệt giữa xtermkonsoletrên hộp Linux của tôi (lưu ý: khoảng cách được sửa đổi để phù hợp trên trang):

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

Một số thứ đó rõ ràng là tiếng ồn từ cách tôi khởi chạy hai thiết bị đầu cuối khác nhau. Nhưng những người khác thì không. Nếu tôi muốn một cái gì đó chỉ trong XTerm, thì if [ -n "$XTERM_VERSION" ]có vẻ là một cách khá tốt để làm điều đó. Tương tự, đối với Konsole, $KONSOLE_PROFILE_NAMEsẽ là một điều tốt (và có lẽ một vài trong số những người khác nữa).

2. Các quá trình cha mẹ khác nhau

Một shell biết ID tiến trình riêng của nó, nó có thể được truy cập thông qua $$. POSIX cũng $PPIDphải nhận được bộ cha mẹ trực tiếp, vì vậy tôi nghi ngờ bạn cũng có cái đó trong zsh. Nếu không, pscó thể lấy nó cho bạn : ppid=$(ps -o ppid= $$). Sau đó, bạn có thể nhận được lệnh chạy, cũng với ps:

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

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

(Bạn cũng có thể thử -o comm=).

Trong một kịch bản shell, nó sẽ trông giống như:

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

Nếu bạn cần đi xa hơn lên cây quy trình, bạn có thể sử dụng psđể lấy cha mẹ của cha mẹ, v.v.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.