Lệnh OS X Terminal để thay đổi chủ đề màu


17

Có một lệnh có thể được sử dụng để thay đổi bảng màu của Mac OS X Terminal không? Tôi thích ý tưởng có thể thay đổi màu sắc tùy thuộc vào tập lệnh tôi chạy. Cho đến nay tôi chỉ thay đổi màu sắc của dấu nhắc bash của mình với PS1, nhưng không đáng chú ý như tôi muốn.


Những gì tôi muốn làm là thay đổi màu nền của thiết bị đầu cuối giống như nó sẽ được thay đổi theo cùng một cách như Terminal -> Preferences -> Settingsngoại trừ tôi muốn làm điều này bằng một lệnh. Tôi muốn tạo một kịch bản sẽ như thế này : changeBackgroundTheme; ssh; changeBackgroundTheme. Điều này sẽ giúp nhắc nhở tôi những cửa sổ hiện đang ở ssh.
Sixty feetersdude

Câu trả lời:


18

Tùy thuộc vào chính xác những gì bạn muốn thực hiện, đây là một vài ý tưởng trong AppleScript bằng cách sử dụng kiểu Terminal của bạn. Đây là mạnh mẽ hơn tput, bởi vì điều này được thiết lập lại bởi lời nhắc màu. vv (ít nhất là đối với tôi).

Điều này đặt tất cả các tab chạy Python (không có máy chủ SSH có sẵn để thử nghiệm ngay bây giờ) thành Homebrew, các tab khác cho Ocean:

tell application "Terminal"
    repeat with w from 1 to count windows
        repeat with t from 1 to count tabs of window w
            if processes of tab t of window w contains "Python" then
                set current settings of tab t of window w to (first settings set whose name is "Homebrew")
            else
                set current settings of tab t of window w to (first settings set whose name is "Ocean")
            end if
        end repeat
    end repeat
end tell

lưu dưới dạng tập lệnh và chạy như osascript Name.scptbất cứ lúc nào bạn muốn tô màu lại các shell của mình (tất nhiên bạn có thể gói nó thành tập lệnh shell hoặc một cái gì đó).

Nếu bạn muốn hiển thị tất cả các quy trình chạy dài khác nhau, hãy sử dụng điều kiện sau:

if busy of tab t of window w is true then


Hoặc, bạn có thể đặt kiểu của một tab, được chọn thủ công:

on run argv
    tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run

Chạy nó như thế này:

osascript StyleTerm.scpt 3 Homebrew

-> Tab thứ ba của cửa sổ Terminal trên cùng có kiểu Homebrew!

Nếu bạn muốn sửa đổi các cửa sổ nền, hãy thay thế "cửa sổ phía trước" bằng một biểu thức được ngoặc đơn giống như sau "tab". Nếu bạn luôn muốn sửa đổi "tab hiện tại" đã chọn, hãy sử dụng selected tabthay vì tab (item 1 of argv as number).


Thêm các mục sau vào .bash_profilenếu giải pháp đầu tiên quá sức lao động cho bạn:

PROMPT_COMMAND='osascript "/path/to/Name.scpt"'

Bây giờ nó được thực thi trước mỗi dấu nhắc (chỉ có vấn đề: không phải sau khi bắt đầu một cái gì đó, tức là ssh. Nhưng chủ đề này không phải là về các thủ thuật bash ưa thích nào. Đây chỉ là một con trỏ.)


6

Tập lệnh của bạn có thể sử dụng tputlệnh để đặt màu theo cách di động. Hãy thử đoạn script sau và bạn sẽ thấy thiết bị đầu cuối rõ ràng với nền màu lục lam đậm với một số văn bản màu lục lam sáng.

#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World

Bạn có thể xem thêm thông tin về điều này trong man 5 terminfophần "Xử lý màu".

Bạn có thể làm những điều tương tự bằng cách lặp lại các chuỗi thoát mà thiết bị đầu cuối của bạn nhận ra trực tiếp. Nó sẽ nhanh hơn, nhưng nó có thể không hoạt động bằng cách sử dụng chương trình đầu cuối khác. Nhiều người trong số họ nhận ra các chuỗi xterm và đây là kịch bản ở trên sẽ trông như thế nào khi sử dụng chúng.

#!/bin/bash
printf "\033[48;5;6m"  # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World

Có thêm thông tin về trình tự kiểm soát xterm ở đây .


Điều này dường như có một số ảnh hưởng đến màu sắc nhưng setaf dường như không làm gì cho tôi cả. Điều tôi thực sự muốn là một cái gì đó để thay đổi chủ đề thiết bị đầu cuối Mac OS như waiwai đề xuất nhưng lập trình và không sử dụng GUI.
satur9nine

Có cách nào để thay đổi chủ đề đang được sử dụng tương tự Terminal -> Preferences -> Settingskhông?
Sixty feetersdude

@sixtyfootersdude: Có lẽ có một cách để làm điều đó với osascript, nhưng tôi không quen với nó.
Tạm dừng cho đến khi có thông báo mới.

1

Bạn có thể sử dụng applescript để cung cấp cho mỗi thiết bị đầu cuối mới một chủ đề ngẫu nhiên.

Chỉnh sửa của bạn .bash_profilevà thêm lệnh này

osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"

Nếu bạn nhận được cùng một thiết bị đầu cuối chủ đề ngẫu nhiên, bạn luôn có thể nhấn ⌘Ivà đặt thủ công.

Điều này hữu ích hơn nếu bạn nhận được rất nhiều chủ đề thiết bị đầu cuối tìm kiếm khác nhau. Có rất nhiều trang web cho điều đó, nếu bạn nhìn xung quanh.


Thích nó Tôi đã tạo một bí danh từ lệnh này để tôi có thể thay đổi ngẫu nhiên sang cài đặt mới theo cách thủ công.
WeakPulum
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.