Erstens ein paar Punkte zu Ihrem AppleScript, nur zu Lernzwecken:
- Sie müssen keine
tell
Befehle in einem tell
Block haben, wenn beide Befehle an dasselbe Objekt senden (z. B. Terminal ). Der tell
Block ist ausreichend; Lassen Sie die darin enthaltenen tell
Anweisungen aus, die sich mit Terminal befassen (behalten Sie jedoch diejenige bei, die Systemereignisse behandelt ), und die Befehle werden an das Terminal gesendet . - Ich würde keine Systemereignis- Tastatureingaben zum Erstellen neuer Registerkarten verwenden. Zum einen können sich die Verknüpfungen ändern, oder die App kann aus irgendeinem Grund den Fokus verlieren und das Tastenanschlagereignis verpassen. Wenn Sie Ihr Ziel nicht
do script
auf Fenster 1 ausrichten und es stattdessen unangetastet lassen, erstellt das Terminal von alleine ein neues Register. Dadurch entfallen einige Codezeilen.
Wenn Sie also nur an verschiedenen Stellen mehrere Registerkarten erstellen müssen, wäre dies so einfach wie:
-- Launch terminal without creating any windows launch -- Create a bunch of tabs at desired path locations -- then clear the window to neaten its appearance do script "cd ~; clear" do script "cd /; clear" do script "cd /Applications; clear"
(Sie können all dies in einem tell
Block mit Targeting- Terminal einschließen ; ich habe den Skript-Editor einfach so eingestellt, dass er dies in der Navigationsleiste für mich erledigt).
Um die Titel der einzelnen Registerkarten festzulegen, nachdem alle Registerkarten gleichzeitig erstellt wurden, muss darauf geachtet werden, dass wir das richtige Fensterobjekt für jede Registerkarte festlegen. Diese zusätzlichen Codezeilen führen direkt nach den obigen Zeilen und benennen die Registerkarten "Tab 1", "Tab 2" usw. in der Reihenfolge, in der sie entstanden sind:
-- Get window ("tab") id's and sort numerically -- with the help of bash functionality set IDs to id of every window set AppleScript's text item delimiters to " " do shell script ({¬ "echo", ¬ IDs, ¬ "| tr ' ' '\n'", ¬ "| sort -n", ¬ "| tr '\n' ' '"} as string) set IDs to the words of result -- Give each tab a new custom title repeat with n from 1 to number of windows set custom title of tab 1 of ¬ window id (item n in IDs) to ¬ {"Tab", n} as string end repeat
Fenstergruppen
Zweitens - und vor allem, da dies Ihre ursprüngliche Frage tatsächlich direkt beantwortet - ist AppleScript überhaupt nicht erforderlich, um das zu erreichen, was Sie möchten. Das Terminal verfügt über eine integrierte Methode, um eine Gruppe von Fenstern (Registerkarten) zu speichern und jedes Mal bei jedem Start von Terminal neu zu starten . Hier ist wie:
- Erstellen Sie die gewünschten Registerkarten.
cd
jede Registerkarte in den gewünschten Ort (oder führen Sie einen beliebigen Befehl in den gewünschten Registerkarten aus). - Vom Fenster Wählen Sie im Menü Speicher Windows als Gruppe ... . Geben Sie im angezeigten Dialogfeld den Namen für diese Gruppe ein und legen Sie fest, ob diese Fenster bei jedem Start von Terminal geöffnet werden sollen .
- Jetzt werden sie es tun. Sie können mehrere Gruppen von Fenstern, speichern und sie aus dem Zugriff auf Fenster - Menü, indem Sie Open Window - Gruppe .
- Um diese gespeicherten Gruppen zu verwalten, gehen Sie zu Voreinstellungen> Fenstergruppen . Dort können Sie Gruppen löschen, die Sie nicht mehr benötigen.
Der Nachteil ist, dass die Registerkartentitel nicht automatisch festgelegt werden. Sie können jedoch festlegen, welche Informationen die Registerkartentitel generell unter Voreinstellungen> Profile> Fenster / Registerkarte enthalten .