Polecenie Terminal OS X do zmiany motywów kolorów

17

Czy istnieje polecenie, za pomocą którego można zmienić schemat kolorów terminala Mac OS X? Podoba mi się pomysł zmiany kolorów w zależności od uruchamianych skryptów. Do tej pory zmieniam tylko kolor mojego monitu na PS1, co jest w porządku, ale nie tak zauważalne, jak bym chciał.

satur9nine
źródło
Chcę zmienić kolor tła terminala, tak jakby zmienił się w taki sam sposób, jak Terminal -> Preferences -> Settingsz wyjątkiem tego, że chcę to zrobić za pomocą polecenia. Chcę utworzyć skrypt, który będzie wyglądać następująco: changeBackgroundTheme; ssh; changeBackgroundTheme. Pomoże mi to przypomnieć, w których oknach jest obecnie ssh.
sixtyfootersdude

Odpowiedzi:

18

W zależności od tego , co dokładnie chcesz osiągnąć, oto kilka pomysłów w AppleScript przy użyciu stylów terminalu. Są one bardziej niezawodne niż tput, ponieważ są resetowane przez kolorowe monity. itp. (przynajmniej dla mnie).

Spowoduje to ustawienie wszystkich kart z uruchomionym Pythonem (obecnie brak serwera SSH do testowania) na Homebrew, pozostałe na 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

zapisz jako skrypt i uruchom tak, jak osascript Name.scpttylko chcesz zmienić kolor powłoki (oczywiście możesz to zawinąć jako skrypt powłoki lub coś takiego).

Jeśli chcesz wyświetlać wszystkie długotrwałe procesy inaczej, użyj następującego warunku:

if busy of tab t of window w is true then


Lub możesz ustawić styl pojedynczej karty, ręcznie wybrany:

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

Uruchom tak:

osascript StyleTerm.scpt 3 Homebrew

-> Trzecia zakładka okna Terminalu z przodu ma styl Homebrew!

Jeśli chcesz zmodyfikować okna w tle, zastąp „okno przednie” wyrażeniem w nawiasie, tak jak zaraz po „tab”. Jeśli zawsze chcesz zmodyfikować wybraną „bieżącą kartę”, użyj selected tabzamiast tab (item 1 of argv as number).


Dodaj następujące do swojego, .bash_profilejeśli pierwsze rozwiązanie jest dla Ciebie zbyt pracochłonne:

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

Teraz jest wykonywany przed każdym monitem (tylko problem: nie po uruchomieniu czegoś, tj ssh. Ale ten temat i tak nie dotyczy fantazyjnych sztuczek bashowych. To tylko wskaźnik).

Daniel Beck
źródło
6

Twoje skrypty mogą używać tputpolecenia do ustawiania kolorów w przenośny sposób. Wypróbuj poniższy skrypt, a zobaczysz, że terminal jest czysty na ciemnym cyjanowym tle z jasnym cyjanowym tekstem.

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

Więcej informacji na ten temat można znaleźć man 5 terminfow sekcji „Obsługa kolorów”.

Możesz zrobić to samo, powtarzając sekwencje specjalne, które terminal rozpoznaje bezpośrednio. Będzie to szybsze, ale może nie działać przy użyciu innego programu terminalowego. Wiele z nich rozpoznaje sekwencje xterm i oto, jak wyglądałby powyższy skrypt przy ich użyciu.

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

Więcej informacji na temat sekwencji sterujących xterm znajduje się tutaj .

Wstrzymano do odwołania.
źródło
Wydaje się, że ma to pewien wpływ na kolor, ale setaf wydaje się w ogóle nic dla mnie nie robić. Naprawdę chciałbym coś zmienić motyw terminala Mac OS, jak sugerują Waiwai, ale programowo i nie używając GUI.
satur9nine
Czy istnieje sposób zmiany używanego motywu Terminal -> Preferences -> Settings?
sixtyfootersdude
@sixtyfootersdude: Prawdopodobnie jest na to sposób osascript, ale nie znam się na tym.
Wstrzymano do odwołania.
1

Możesz użyć AppleScript, aby nadać każdemu nowemu terminalowi losowy motyw.

Edytuj .bash_profilei dodaj to polecenie

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

Jeśli otrzymasz ten sam losowy terminal tematyczny, zawsze możesz nacisnąć ⌘Ii ustawić go ręcznie.

Jest to bardziej przydatne, jeśli masz wiele różnych wyglądających motywów terminalowych. Istnieje wiele witryn do tego, jeśli się rozejrzysz.

G_Gus
źródło
Lubię to. Z tego polecenia utworzyłem alias, dzięki czemu mogę losowo zmienić ręcznie na nowe ustawienie.
WeakPointer,