OS X-Terminalbefehl zum Ändern von Farbthemen

OS X-Terminalbefehl zum Ändern von Farbthemen

Gibt es einen Befehl, mit dem man das Farbschema des Mac OS X-Terminals ändern kann? Mir gefällt die Idee, die Farben je nach den ausgeführten Skripts ändern zu können. Bisher ändere ich nur die Farbe meiner Bash-Eingabeaufforderung mit PS1, was in Ordnung ist, aber nicht so auffällig, wie ich es gerne hätte.

Antwort1

Je nachdem wasgenauSie erreichen möchten, hier sind einige Ideen in AppleScript unter Verwendung Ihrer Terminalstile. Diese sind robuster als tput, da dies durch farbige Eingabeaufforderungen zurückgesetzt wird. usw. (zumindest für mich).

Dadurch werden alle Tabs, auf denen Python ausgeführt wird (derzeit ist kein SSH-Server zum Testen verfügbar), auf Homebrew und die anderen auf Ocean eingestellt:

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

Speichern Sie es als Skript und führen Sie es aus, osascript Name.scptwann immer Sie Ihre Shells neu einfärben möchten (natürlich können Sie dies als Shell-Skript oder etwas Ähnliches verpacken).

Wenn Sie alle Prozesse mit langer Laufzeit anders anzeigen möchten, verwenden Sie die folgende Bedingung:

if busy of tab t of window w is true then


Oder Sie können den Stil einer einzelnen, manuell ausgewählten Registerkarte festlegen:

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

Führen Sie es wie folgt aus:

osascript StyleTerm.scpt 3 Homebrew

-> Die dritte Registerkarte des vordersten Terminalfensters erhält den Homebrew-Stil!

Wenn Sie Hintergrundfenster ändern möchten, ersetzen Sie „Frontfenster“ durch einen in Klammern gesetzten Ausdruck, wie direkt nach „Tab“. Wenn Sie immer den ausgewählten „aktuellen Tab“ ändern möchten, verwenden Sie selected tabanstelle von tab (item 1 of argv as number).


.bash_profileWenn Ihnen die erste Lösung zu viel Handarbeit ist, fügen Sie Ihrer Liste Folgendes hinzu :

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

Jetzt wird es vor jeder Eingabeaufforderung ausgeführt (einziges Problem: nicht nach dem Starten von etwas, d. h ssh. Aber in diesem Thema geht es sowieso nicht um ausgefallene Bash-Tricks. Dies ist nur ein Hinweis.)

Antwort2

Ihre Skripte können den tputBefehl verwenden, um Farben auf portable Weise festzulegen. Probieren Sie das folgende Skript aus und Sie werden sehen, dass das Terminal einen dunkelcyanfarbenen Hintergrund mit hellcyanfarbenem Text aufweist.

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

Weitere Informationen hierzu finden Sie inman 5 terminfoim Abschnitt „Farbhandhabung“.

Sie können dasselbe tun, indem Sie die Escape-Sequenzen, die Ihr Terminal erkennt, direkt wiederholen. Das geht zwar schneller, funktioniert aber möglicherweise nicht mit einem anderen Terminalprogramm. Viele davon erkennen xterm-Sequenzen und so würde das obige Skript aussehen, wenn Sie sie verwenden.

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

Weitere Informationen zu xterm-Steuersequenzen finden Sie hierHier.

Antwort3

Sie können Applescript verwenden, um jedem neuen Terminal ein zufälliges Design zuzuweisen.

Bearbeiten Sie Ihre .bash_profileund fügen Sie diesen Befehl hinzu

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

Wenn Sie das gleiche zufällige Thementerminal erhalten, können Sie ⌘Ies jederzeit manuell auswählen und einstellen.

Dies ist nützlicher, wenn Sie viele unterschiedlich aussehende Terminalthemen haben. Wenn Sie sich umsehen, gibt es viele Websites dafür.

Antwort4

Dieses AppleScript funktioniert bei mir unter OS X 14.3 (die anderen Antworten nicht).

tell application "Terminal"
    repeat with i in windows
        try
            set current settings of tabs in i to settings set "Solarized Dark"
        end try
    end repeat
end tell

Die Terminal-Anwendung scheint die Art und Weise geändert zu haben, wie sie ihre Tabs und Fenster in OS X 14.3 anzeigt, sodass Sie beim Durchlaufen der Tabs einiger ihrer Fenster zuverlässig Fehlermeldungen erhalten. Dies scheinen jedoch keine echten Fenster zu sein, sodass Sie sie einfach ignorieren können (was ich mit dem try ... end tryBlock tue).

Ich neige dazu, kleine Skripte wie dieses in meine Shell-Skripte einzubinden, und zwar etwa so:

osascript -e "tell application \"Terminal\"
    repeat with i in windows
        try
            set current settings of tabs in i to settings set \"Solarized Dark\"
        end try
    end repeat
end tell"

Ich persönlich verwende dies, um in meinem Terminal automatisch zwischen hellen und dunklen Themen zu wechseln (ich muss nur eine neue Registerkarte im Terminal öffnen oder meine color_modeFunktion ausführen). Sie können meinen vollständigen Code dafür sehenin meinem Dotfiles-Repo.

verwandte Informationen