Verhindern Sie, dass Terminal beim Beenden Einstellungen überschreibt

Wenn ein Benutzer mein C++-Programm lädt, möchte ich, dass Terminal auf eine bestimmte Weise aussieht. Ich habe dies gelöst, indem ich mein Programm in eine AppleScript .app gepackt habe, die überschreibt ~/Library/Preferences/com.apple.Terminal.plist(zuerst eine Sicherungskopie erstellt), bevor das Programm geöffnet wird. Mit einem nachfolgenden killall cfprefsdfunktioniert das (wenn Terminal nicht von vornherein geöffnet war!), aber ich möchte nicht die eigenen Terminal-Einstellungen des Benutzers durcheinander bringen. Also überschreibe ich nach Aufruf meines Programms ...Terminal.plistwieder mit der Sicherung der Originaleinstellungen.

Das Problem ist, dass, wenn mein Programm fertig ist und Terminal geschlossen wird, seine Einstellungen automatisch mit denen des aktuellen Fensters überschrieben werden, was bedeutet, dass der Benutzer bei dem Aussehen bleibt, das ich für mein Programm festgelegt habe. Ich habe versucht, dem entgegenzuwirken, indem ich das AppleScript warten ließ, bis Terminal geschlossen wurde, und dann die Plist erneut mit dem Backup überschrieb, was funktioniert, aber wenn meine App vor dem Terminal geschlossen werden sollte, schlägt dies natürlich fehl. Und der ganze Prozess scheint zunächst ziemlich hacky zu sein.

Kann ich verhindern, dass Terminal seine Einstellungen beim Schließen überschreibt? Oder noch besser, kann ich meinen Code in einem Terminal ausführen lassen, das so aussieht, wie ich es möchte, ohne die Einstellungen des Benutzers zu verändern? Vorzugsweise würde ich Terminal überhaupt nicht verwenden, um meinen Code auszuführen (damit es auch nicht fehlschlägt, wenn Terminal bereits geöffnet war), aber ich denke, die einzige Alternative besteht darin, mein eigenes zu schreiben ...

Warum verwenden Sie das Terminal, anstatt den erforderlichen Unix-Befehl direkt auf macOS auszuführen? In Applescript verwenden Sie das do Shell-Skript. Sie könnten stattdessen iterm2 verwenden.
Das AppleScript dient als Wrapper für meine ausführbare Datei, die Dinge in einem Terminalfenster anzeigt. Da ich den Wrapper sowieso dort hatte, war es für mich sinnvoll, ihn zum Einrichten von Terminal zu verwenden, bevor ich das Programm selbst startete. Ich habe iterm2 ausprobiert, konnte es aber auch nicht so zum Laufen bringen, wie ich es mir erhofft hatte.
Was passiert mit anderen Verwendungen des Terminals, funktionieren sie mit Ihren Einstellungen? Wenn Sie so viel Kontrolle brauchen, schreiben Sie eine GUI-App

Antworten (1)

Ich würde untersuchen, was mit Applescript mit dem Skriptwörterbuch getan werden kann.

Skripteditor > Datei > Skriptwörterbuch öffnen

Ich kenne die Details dessen, was Sie tun, nicht, aber hier sind einige Farboptionen.

Geben Sie hier die Bildbeschreibung ein

Danke! Soweit ich das beurteilen kann, verwendet FISH jedoch immer noch Terminal unter MacOS. Aber das Aussehen des Terminals durch AppleScript zu ändern ist eine gute Idee, ich wusste nicht, dass das möglich ist.
Ich werde das Zeug auf FISH löschen. Sie haben Recht, "fish.app bündelt die Fischschale mit einem AppleScript, das sie im Terminal startet. Es wird nichts installiert."