Как программно установить заголовок вкладки «Терминал Mac OS X 10.6»? - PullRequest
5 голосов
/ 18 июля 2011

Я пытаюсь изучить Applescript так, как мне хотелось бы, в конце концов, программно установить заголовок вкладки в терминале в соответствии с тем контекстом, в котором я сейчас работаю. Должно быть простая задача, и я ее почти получил правильно я думаю. Пока это мой экспериментальный код ...

tell application "Terminal"
    activate
    set frontIndex to index of the first window whose frontmost is true
    tell window frontIndex
        set title displays custom title of selected tab to true
        set custom title of selected tab to "Bazzy"
    end tell
end tell

Проблема в том, что когда я устанавливаю заголовок вкладки, также устанавливается заголовок всех других вкладок. Однако , если я щелкну правой кнопкой мыши и осмотрю вкладку, а затем установлю заголовок на этой вкладке вручную, при запуске кода не будет затронут ее заголовок, а заголовок, введенный вручную, останется. Это как если бы свойство title displays custom title не читалось или, возможно, это свойство не делает то, что я думаю, оно делает.

Как мне установить для заголовка ровно одной вкладки пользовательское значение?

Ответы [ 7 ]

7 голосов
/ 25 февраля 2014

Если вы выполняете скрипт из самого Терминала, вы можете использовать простой echo, например:

echo -n -e "\033]0;Tech-Recipes rules\007"

Это событие работает, есливы помещаете его внутрь $PS1, чтобы оно менялось при каждом отображении приглашения.

source: Как программно установить заголовок вкладки «Терминал» в Mac OS X 10.6?

2 голосов
/ 19 июля 2011

Я только что попробовал это, и все работало нормально:

tell application "Terminal"
    set custom title of tab 2 of window 1 to "beta"
    set custom title of tab 1 of window 1 to "alpha"
end tell

Я признаю, что не использовал 10.6, поэтому, возможно, Apple изменила его.

1 голос
/ 08 июня 2016

Я искал это некоторое время, и, как упомянуто в его комментарии @ tponthieux , все эти сценарии изменяют заголовок окна терминала, а не заголовок вкладки. К сожалению, кажется, что нет возможности изменить заголовок вкладки с помощью готового сценария Apple, поэтому я сделал это с помощью клавиш, и это работает без проблем на OSX El Capitan.

tell application "Terminal"
    activate
tell application "System Events"
    keystroke "i" using {shift down,command down}
    keystroke Tab
    keystroke "yourtitlehere"
    key code 53 
end tell
1 голос
/ 08 ноября 2011

Начиная с Mac OS X Lion 10.7, Terminal только устанавливает свойство custom title целевой вкладки / окна вместо изменения профиля настроек (который влияет на все терминалы с этим профилем).До 10.7 большинство - но не все - свойств терминала применялись только к целевому терминалу;однако некоторые из них применяются к профилю настроек, используемому терминалом.Они были изменены в 10.7, чтобы влиять только на целевой терминал.

1 голос
/ 08 ноября 2011

При использовании этих команд при вводе правильного окна / вкладки происходит странное поведение, но в 10.5.8 (Terminal v2.0.2) у меня это сработало

tell application "Terminal"
    do script
    set currWin to index of first window

    tell window currWin 
        set custom title of first tab to "A Custom Title"
    end tell

    set current settings of window currWin to settings set "Grass"
end tell

Ключ в том, что do script открывает новое окно терминала, заставляя его быть «первым» (do script также возвращает созданный индекс вкладки, но я не смог его использовать).

Затем применяется пользовательский заголовоктолько в это окно.Также добавили строку, чтобы установить профиль для вкладки терминала.

(Ссылка: AppleScript, чтобы открыть именованное окно терминала )

Дополнительно Примерстранного поведения: удаление строки do script приводит к тому, что пользовательский заголовок применяется к всем окнам, но только одно окно получает изменение набора настроек!

1 голос
/ 18 июля 2011

Это свойство не делает то, что вы думаете, что оно делает. Установка пользовательского заголовка для одной вкладки применяется к всем вкладкам в всех окнах, согласно этому коду:

tell application "Terminal"
    tell window 1
        set title displays custom title of tab 1 to true
        set custom title of selected tab to "foo"
    end tell
    tell window 2
        set title displays custom title of tab 2 to true
        set custom title of selected tab to "bar"
    end tell
end tell
--> RESULT: All tabs in all windows show "bar"

Интересно, имеет ли это отношение к названию, относящемуся к среде - то есть bash, csh, zsh, ksh, а не к отдельным вкладкам. Даже если я выйду из Терминала и вернусь, «бар» все равно будет показываться везде. Я свободно признаю, что недостаточно знаю, как работает интерфейс CL, чтобы знать наверняка.

В то же время, если вы изучаете Applescript, я бы посоветовал изучить его на чем-то менее удачном, таком как Finder или что-то в этом роде. Там можно сделать гораздо больше полезных вещей, чем в Terminal с Applescript.

0 голосов
/ 21 марта 2019

Названия для OSX Terminal взяты из нескольких разных источников.

1) Предпочтения> Окно: выберите Терминал> Предпочтения> Окно (вкладка).Здесь вы найдете все виды конфигурации для заголовка окна.

2) Предпочтения> Вкладка: Выберите Терминал> Предпочтения> Вкладка (вкладка).Здесь вы найдете все виды конфигурации для заголовка вкладки.

3) Коды консоли: Команды VT100, которые вы можете использовать ( больше информации, ища OSC здесь )

echo -n -e "\033]0;Set icon name (tab) and window title to this.\007"
echo -n -e "\033]1;Set the icon name (tab) to this\007"
echo -n -e "\033]2;Set window title to this\007"

ПРИМЕЧАНИЕ: как сказала Элия Шито , вы можете поместить эти коды консоли в $ PS1, чтобы она обновляла каждую введенную вами команду.

...