OS X Terminal-Befehl zum Ändern von Farbthemen

17

Gibt es einen Befehl, mit dem Sie das Farbschema des Mac OS X Terminals ändern können? Ich mag die Idee, die Farben in Abhängigkeit von den von mir ausgeführten Skripten ä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.

satur9nine
quelle
Ich möchte die Hintergrundfarbe des Terminals so ändern, als würde sie auf die gleiche Weise geändert, Terminal -> Preferences -> Settingsaußer ich möchte dies mit einem Befehl tun. Ich möchte ein Skript erstellen , die wie folgt aussehen: changeBackgroundTheme; ssh; changeBackgroundTheme. Dies wird mir helfen, daran zu erinnern, in welchen Fenstern sich gerade etwas befindet ssh.
Sixtyfootersdude

Antworten:

18

Je nachdem, was genau Sie erreichen möchten, finden Sie hier einige Ideen in AppleScript, die Ihre Terminalstile verwenden. Diese sind robuster als tput, weil dies durch farbige Aufforderungen zurückgesetzt wird. etc (zumindest für mich).

Dies setzt alle Registerkarten, auf denen Python ausgeführt wird (derzeit ist kein SSH-Server zum Testen verfügbar), auf Homebrew, die anderen auf 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

Als Skript speichern und ausführen, osascript Name.scptwann immer Sie Ihre Shells neu einfärben möchten (Sie können dies natürlich auch als Shellskript oder Ähnliches verpacken).

Wenn Sie alle lang laufenden Prozesse unterschiedlich anzeigen möchten, verwenden Sie die folgende Bedingung:

if busy of tab t of window w is true then


Sie können auch den Stil einer einzelnen Registerkarte festlegen, die manuell ausgewählt wurde:

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 so aus:

osascript StyleTerm.scpt 3 Homebrew

-> Die dritte Registerkarte des vordersten Terminalfensters wird im Homebrew-Stil angezeigt!

Wenn Sie Hintergrundfenster ändern möchten, ersetzen Sie "Frontfenster" durch einen Ausdruck in Klammern wie direkt nach "Tabulator". Wenn Sie die ausgewählte "aktuelle Registerkarte" immer ändern möchten, verwenden Sie selected tabanstelle von tab (item 1 of argv as number).


Fügen Sie Ihrer .bash_profileersten Lösung Folgendes hinzu, wenn Ihnen die manuelle Arbeit zu viel ist:

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

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

Daniel Beck
quelle
6

Ihre Skripte können den tputBefehl verwenden, um Farben portabel festzulegen. Probieren Sie das folgende Skript aus und Sie werden sehen, dass das Terminal einen dunklen Cyan-Hintergrund mit hellem Cyan-Text aufweist.

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

Weitere Informationen hierzu finden Sie im man 5 terminfoAbschnitt "Farbverarbeitung".

Sie können das Gleiche tun, indem Sie die Escape-Sequenzen wiederholen, die Ihr Terminal direkt erkennt. Es ist zwar schneller, funktioniert jedoch möglicherweise nicht mit einem anderen Terminalprogramm. Viele von ihnen erkennen xterm-Sequenzen und hier ist, wie das obige Skript mit ihnen aussehen würde.

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

Bis auf weiteres angehalten.
quelle
Dies scheint einen gewissen Einfluss auf die Farbe zu haben, aber setaf scheint überhaupt nichts für mich zu tun. Was ich wirklich möchte, ist etwas, um das Mac OS-Terminal-Thema zu ändern, wie es Waiwai vorschlägt, aber programmgesteuert und ohne die GUI.
Samstag,
Gibt es eine Möglichkeit, das verwendete Thema zu ändern Terminal -> Preferences -> Settings?
Sixtyfootersdude
@sixtyfootersdude: Es gibt wahrscheinlich einen Weg, das zu tun osascript, aber ich kenne mich damit nicht aus.
Bis auf weiteres angehalten.
1

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

Bearbeiten Sie Ihren .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 dasselbe Terminal für zufällige Themen erhalten, können Sie es jederzeit ⌘Imanuell drücken und einstellen.

Dies ist nützlicher, wenn Sie viele verschiedene Terminal-Themen erhalten. Es gibt viele Websites dafür, wenn Sie sich umschauen.

G_Gus
quelle
Mag ich. Ich habe aus diesem Befehl einen Alias ​​erstellt, damit ich manuell nach dem Zufallsprinzip zu einer neuen Einstellung wechseln kann.
WeakPointer