Comando Terminale OS X per modificare i temi di colore


17

Esiste un comando che può essere utilizzato per modificare la combinazione di colori del terminale Mac OS X? Mi piace l'idea di poter cambiare i colori a seconda degli script che eseguo. Finora sto solo cambiando il colore del mio prompt di bash con PS1, il che va bene ma non è così evidente come vorrei.


Quello che voglio fare è cambiare il colore di sfondo del terminale come se fosse cambiato come Terminal -> Preferences -> Settingsse volessi farlo con un comando. Voglio creare uno script che sarà simile a questa: changeBackgroundTheme; ssh; changeBackgroundTheme. Questo mi aiuterà a ricordarmi in quali finestre sono attualmente presenti ssh.
sixtyfootersdude,

Risposte:


18

A seconda di cosa esattamente vuoi realizzare, ecco alcune idee in AppleScript che usano i tuoi stili Terminale. Questi sono più robusti di tput, perché vengono ripristinati da prompt colorati. ecc. (almeno per me).

Questo imposta tutte le schede che eseguono Python (nessun server SSH disponibile per il test in questo momento) su Homebrew, le altre su 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

salva come script ed eseguilo come osascript Name.scptogni volta che vuoi ricolorare le tue shell (ovviamente puoi avvolgerlo come uno script di shell o qualcosa del genere).

Se si desidera visualizzare tutti i processi di lunga durata in modo diverso, utilizzare la seguente condizione:

if busy of tab t of window w is true then


Oppure, puoi impostare lo stile di una singola scheda, selezionata manualmente:

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

Eseguilo in questo modo:

osascript StyleTerm.scpt 3 Homebrew

-> La terza scheda della finestra Terminale in primo piano diventa stile Homebrew!

Se si desidera modificare le finestre di sfondo, sostituire "finestra anteriore" con un'espressione tra parentesi come subito dopo "tab". Se si desidera sempre modificare la "scheda corrente" selezionata, utilizzare selected tabinvece di tab (item 1 of argv as number).


Aggiungi quanto segue al tuo .bash_profilese la prima soluzione è troppo lavoro manuale per te:

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

Ora viene eseguito prima di ogni prompt (unico problema: non dopo aver avviato qualcosa, ovvero ssh. Ma questo argomento non riguarda comunque i trucchi bash di fantasia. Questo è solo un puntatore.)


6

Gli script possono utilizzare il tputcomando per impostare i colori in modo portatile. Prova il seguente script e vedrai il terminale chiaro su uno sfondo ciano scuro con del testo ciano brillante.

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

Puoi trovare maggiori informazioni a riguardo man 5 terminfonella sezione chiamata "Gestione del colore".

Puoi fare le stesse cose facendo eco alle sequenze di escape che il tuo terminale riconosce direttamente. Sarà più veloce, ma potrebbe non funzionare con un altro programma terminale. Molti di loro riconoscono le sequenze di xterm ed ecco come dovrebbe apparire lo script sopra.

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

Ci sono maggiori informazioni sulle sequenze di controllo xterm qui .


Questo sembra avere qualche effetto sul colore, ma setaf non sembra fare nulla per me. Quello che mi piacerebbe davvero è qualcosa per cambiare il tema del terminale Mac OS come suggerisce waiwai ma a livello di programmazione e non usando la GUI.
satur9nine,

C'è un modo per cambiare il tema che viene utilizzato in modo simile Terminal -> Preferences -> Settings?
sixtyfootersdude,

@sixtyfootersdude: Probabilmente c'è un modo per farlo osascript, ma non ne ho familiarità.
In pausa fino a nuovo avviso.

1

Puoi usare applecript per assegnare a ogni nuovo terminale un tema casuale.

Modifica il tuo .bash_profilee aggiungi questo comando

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

Se ottieni lo stesso terminale a tema casuale puoi sempre colpire ⌘Ie impostarlo manualmente.

Questo è più utile se ottieni molti temi terminali dall'aspetto diverso. Ci sono molti siti per questo, se ti guardi intorno.


Mi piace. Ho creato un alias da questo comando in modo da poter passare casualmente a una nuova impostazione manualmente.
WeakPointer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.