So stellen Sie Terminal-Design/-Profil programmgesteuert ein

Kontext für diese Frage: Ich schreibe ein Bash-Skript, um jeden Mac automatisch mit meinen Tools/Einstellungen einzurichten, idealerweise mit einem Befehl, wenn möglich.

Die Frage: Ich habe eine .terminalThemendatei, die ich verwende, und ich möchte, dass das Skript sie als Standard-Terminalprofil festlegen kann, ohne dies nach dem Ausführen meines Skripts über die GUI tun zu müssen. Gibt es dafür einen Befehl?

Wie ich sehe, wurde ich herabgestuft. Bitte hinterlassen Sie einen Kommentar, in dem Sie erklären, ob Sie der Meinung sind, dass dies eine schlechte Frage ist.
Ich weiß nicht, wer das abgelehnt hat, aber ich hasse es, wenn Leute ohne Erklärung ablehnen. IMO sollte es eine Anforderung geben, Downvotes zu erklären. Das scheint mir eine absolut vernünftige Frage zu sein. Wenn jemand anders denkt, hoffe ich, dass er erklärt, warum.
@TJLuoma Danke. Ich weiß, dass ich neu in dieser speziellen Community bin, also bin ich offen für Kritik, wenn dies eine schlechte / fehl am Platze Frage ist.
Ich verwende iTerm, nicht Terminal, also kann ich nicht helfen, aber ich würde DuckDuckGo überprüfen, um zu sehen, ob es eine AppleScript-Methode zum Aktivieren von Themen gibt.
Welche Tools und Einstellungen und wie oft ausgeführt werden sollen. Warum reichen die bsh-Startdateien nicht aus?
@Mark Ich sollte klarstellen, dass der Gesamtzweck des Skripts beim Festlegen von Tools und Einstellungen nur für den Kontext dieser Frage bereitgestellt wurde. Die Frage selbst betrifft speziell das programmgesteuerte Festlegen des Terminaldesigns. Wenn Sie nur neugierig auf das Skript insgesamt sind, hier ist es github.com/JemarJones/mac-os-config/blob/master/setup.sh . Es soll nur einmal auf einem neuen Mac laufen. Was ich suche, ist eine Möglichkeit, dies effektiv zu tun apple.stackexchange.com/a/27888/312455 + set default in meinem Bash-Skript. Gibt es eine Möglichkeit, dies mit Startdateien zu tun?
siehe apple.stackexchange.com/questions/63062/… Sie benötigen Standardwerte, schreiben Sie com.apple.terminal

Antworten (1)

Okay, ich habe eine Lösung gefunden:

Um das Terminaldesign programmgesteuert festzulegen, müssen Sie in Ihre Systemeinstellungen schreiben. Der einfachste Weg, den ich gefunden habe, war, zuerst die Benutzereinstellungen von einem vorhandenen Mac zu extrahieren. Dies setzt voraus, dass Sie Ihre .terminalDatei bereits in die Profile des Terminals auf Ihrem vorhandenen Computer importiert haben. Also müssen Sie zuerst auf dem vorhandenen Mac Folgendes ausführen (Mein Thema heißt Material-Theme, ersetzen Sie diesen Teil durch Ihren eigenen) :

plutil -extract Window\ Settings.Material-Theme xml1 -o - ~/Library/Preferences/com.apple.Terminal.plist > theme.xml

Dadurch wird eine Datei erstellt theme.xml, die Sie in Ihrem Skript verwenden können. Als nächstes bearbeiten Sie die Datei ein wenig. Dies könnte automatisiert werden, aber wenn Sie wie ich sind, müssen Sie diesen Teil nur einmal machen, also habe ich das manuell gemacht. Öffnen Sie die Datei und entfernen Sie das umgebende XML oben und unten, sodass Sie nur noch das Diktat haben. Meins sah als Referenz so aus: https://pastebin.com/zfXFRY2e .

Jetzt können Sie in Ihrem Skript auf dem neuen Computer einfach Folgendes ausführen, um dieses Thema in Ihre Benutzereinstellungen einzufügen:

theme=$(<theme.xml)
plutil -replace Window\ Settings.Material-Theme -xml "$theme" ~/Library/Preferences/com.apple.Terminal.plist
defaults write com.apple.Terminal "Default Window Settings" -string "Material-Theme"
defaults write com.apple.Terminal "Startup Window Settings" -string "Material-Theme"

Nachdem Sie das obige ausgeführt haben, wenn Sie die Terminal-App vollständig schließen und neu starten, sollte Ihr Design der Standard sein. Dieser Prozess kann wahrscheinlich verbessert werden, aber das hat bei mir funktioniert!

Beachten Sie, dass Sie möglicherweise auch ausführen defaults read com.apple.Terminalund prüfen möchten, ob es andere Schlüssel gibt, die für Ihr Design relevant sind. In meinem Fall habe ich festgestellt, "NSWindow Frame TTWindow Material-Theme" = "0 327 640 450 0 0 1280 777 ";dass mein Skript dies auch enthältdefaults write com.apple.Terminal "NSWindow Frame TTWindow Material-Theme" -string "0 327 640 450 0 0 1280 777 "