Lesen Sie programmgesteuert beide Terminal.app-Titel pro Tab

Wenn Sie den Inspektor (⌘I) in Terminal.app aufrufen, um den Titel (⇧⌘I) zu bearbeiten, können tatsächlich zwei Titel eingegeben werden. Der erste ist als Registerkartentitel bekannt und wirkt sich auf den Titel des Terminalfensters aus (jedoch nur, wenn diese Registerkarte ausgewählt ist). Der zweite ist der Tab-Untertitel und wirkt sich nur auf den Text in der Tab-Kopfzeile aus. [Die Benennung erscheint seltsam, wobei der Tab-Titel den Titel des Fensters und der Tab-Untertitel den Titel des Tabs beeinflusst.]

Da ich Osascript bevorzuge, aber offen für andere Ansätze bin, möchte ich diese beiden Titel für jede Registerkarte programmgesteuert abrufen. Beim Durchsuchen von AppleScript-Wörterbüchern, Cocoa-Framework-Dokumenten usw. habe ich nur herausgefunden, wie der Registerkartentitel gelesen wird, der als Eigenschaft "benutzerdefinierter Titel" (custom_title) der Registerkarte aufgetaucht ist. Auf diesen beziehen sich alle Suchtreffer beim Holen/Setzen des Titels per osascript. Obwohl es andere Titeleigenschaften in window und tab.current_settings gibt, scheinen sie alle nur auf dieses erste Titelfeld zu verweisen, und es gibt daher eine gewisse Redundanz.

Ich setze jeden Titel programmgesteuert mit Terminal-Escape-Sequenzen, da ich ebenfalls nicht weiß, wie man den Tab-Untertitel einstellt.

Obwohl es möglich ist, UI-Scripting zu verwenden, gehe ich davon aus, dass ein solcher Ansatz alle Terminal-Fenster/Registerkarten sichtbar durchlaufen muss, um sie alle zu lesen, wenn ich die gewünschte Gesamtausgabe erzeuge. Ich würde etwas bevorzugen, das an die Daten herankommt, ohne Auswahl- / Fokusänderungen zu verursachen.

Meine letzte Option scheint ein wenig schwergewichtig zu sein (obwohl sie möglicherweise immer noch dem UI-Skripting vorzuziehen ist), nämlich das Exportieren der Einstellungen (Shell > Einstellungen exportieren ...), wodurch eine große XML-Datei erstellt wird, die beide Felder enthält. Überraschenderweise stimmen die Datenstrukturen in dieser Datei fast identisch mit den AppleScript-Strukturen überein, außer dass sie das Feld enthält, das mir sonst fehlt.

Da ich ziemlich neu in der Programmierung auf der Apple-Plattform bin, kann mir jemand erklären, wie ich an diese Daten komme, die anscheinend an der Stelle existieren sollten, an der ich suche, die ich aber nicht finden kann?

Antworten (1)

Versuchen:

tell application "Terminal"
    set myTabs to every tab of window 1
    set myData to {}
    repeat with aTab in myTabs
        set aTab's selected to true
        delay 0.2
        set windowTitle to name of window 1
        set customTitle to aTab's custom title
        set end of myData to "Window:" & windowTitle & return & "Custom Title:" & customTitle & return & return
    end repeat
    display dialog (myData as text)
end tell