Perintah Terminal OS X untuk mengubah tema warna

17

Apakah ada perintah yang dapat digunakan untuk mengubah skema warna Terminal Mac OS X? Saya suka gagasan bisa mengubah warna tergantung pada skrip yang saya jalankan. Sejauh ini saya hanya mengubah warna bash prompt saya dengan PS1 yang baik-baik saja tetapi tidak begitu terlihat seperti yang saya inginkan.

saturinnine
sumber
Yang ingin saya lakukan adalah mengubah warna latar belakang terminal seperti itu akan diubah dengan cara yang sama seperti Terminal -> Preferences -> Settingskecuali saya ingin melakukan ini dengan perintah. Saya ingin membuat sebuah script yang akan terlihat seperti ini: changeBackgroundTheme; ssh; changeBackgroundTheme. Ini akan membantu mengingatkan saya di jendela mana saat ini ssh.
sixtyfootersdude

Jawaban:

18

Tergantung pada apa yang sebenarnya ingin Anda capai, inilah beberapa ide dalam AppleScript menggunakan gaya Terminal Anda. Ini lebih kuat daripada tput, karena ini akan direset oleh prompt berwarna. dll (setidaknya untuk saya).

Ini menetapkan semua tab yang menjalankan Python (tidak ada server SSH yang tersedia untuk pengujian sekarang) ke Homebrew, yang lain ke 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

simpan sebagai skrip dan jalankan osascript Name.scptkapan saja Anda ingin mewarnai ulang cangkang Anda (tentu saja Anda dapat membungkus ini sebagai skrip shell atau sesuatu).

Jika Anda ingin menampilkan semua proses jangka panjang secara berbeda, gunakan kondisi berikut:

if busy of tab t of window w is true then


Atau, Anda dapat mengatur gaya satu tab, dipilih secara manual:

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

Jalankan seperti ini:

osascript StyleTerm.scpt 3 Homebrew

-> Tab ketiga dari jendela Terminal paling depan mendapat gaya Homebrew!

Jika Anda ingin memodifikasi jendela latar belakang, ganti "jendela depan" dengan ekspresi yang disisipkan seperti "tab". Jika Anda selalu ingin memodifikasi "tab saat ini" yang dipilih, gunakan selected tabsebagai ganti tab (item 1 of argv as number).


Tambahkan yang berikut ke Anda .bash_profilejika solusi pertama adalah tenaga kerja manual untuk Anda:

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

Sekarang dieksekusi sebelum setiap prompt (satu-satunya masalah: bukan setelah memulai sesuatu, yaitu ssh. Tapi topik ini bukan tentang trik bash mewah. Ini hanya sebuah pointer.)

Daniel Beck
sumber
6

Script Anda dapat menggunakan tputperintah untuk mengatur warna secara portabel. Coba skrip berikut dan Anda akan melihat terminal bersih ke latar belakang cyan gelap dengan beberapa teks cyan cerah.

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

Anda dapat melihat informasi lebih lanjut tentang ini di man 5 terminfodalam bagian yang disebut "Penanganan Warna".

Anda dapat melakukan hal yang sama dengan mengulangi urutan pelarian yang diakui terminal Anda secara langsung. Ini akan lebih cepat, tetapi mungkin tidak berfungsi menggunakan program terminal lain. Banyak dari mereka yang mengenali urutan xterm dan inilah yang akan terlihat seperti script di atas.

#!/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

Ada informasi lebih lanjut tentang urutan kontrol xterm di sini .

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Ini tampaknya memiliki efek pada warna tetapi setaf tampaknya tidak melakukan apa pun untuk saya. Apa yang saya benar-benar suka adalah sesuatu untuk mengubah tema terminal Mac OS seperti waiwai menyarankan tetapi secara terprogram dan tidak menggunakan GUI.
satur9nine
Apakah ada cara untuk mengubah tema yang sedang digunakan serupa Terminal -> Preferences -> Settings?
sixtyfootersdude
@sixtyfootersdude: Mungkin ada cara untuk melakukan itu osascript, tapi saya tidak terbiasa dengannya.
Dijeda sampai pemberitahuan lebih lanjut.
1

Anda dapat menggunakan applescript untuk memberikan tema acak pada setiap terminal baru.

Edit .bash_profiledan tambahkan perintah ini

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

Jika Anda mendapatkan terminal tema acak yang sama, Anda selalu dapat menekan ⌘Idan mengaturnya secara manual.

Ini lebih berguna jika Anda mendapatkan banyak tema terminal dengan tampilan berbeda. Ada banyak situs untuk itu, jika Anda melihat-lihat.

G_Gus
sumber
Suka itu. Saya membuat alias dari perintah ini sehingga saya dapat secara acak mengubah ke pengaturan baru secara manual.
WeakPointer