Открыть новое окно терминала в текущем пространстве, независимо от других открытых терминалов в других пространствах

14

При использовании пробелов в Mac OS X попытка открыть новый экземпляр терминала приводит к тому, что фокус перетягивается на то пространство, которое имеет последнее доступное окно терминала. С Finder я могу нажать на рабочем столе, а затем использовать -, Nчтобы создать новое окно Finder. То, что я ищу, это метод выполнения той же функции для окон терминала.

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

Благодарю.

Марк Николс
источник
Мне нравится вопрос, но думаю, что это должно быть на супер пользователя.

Ответы:

4

Вы можете создать новый сервис с помощью Automator (из папки приложений). В верхней части окна автоматизатора введите: Сервис не получает никакого ввода в «любое приложение». Затем в рабочем процессе добавьте «Выполнить яблочный скрипт». Заставьте яблочный скрипт содержать следующее:

on run {input, parameters}

    tell application "Terminal"
        do script ""
        activate
    end tell

    return input
end run

(Вы можете добавить любую понравившуюся вам команду в строку сценария do между "" (например, что-то полезное для запуска при первом открытии терминала, например, uptimeесли хотите, или просто оставить это поле пустым).

Сохраните услугу как «Открытый терминал» или как угодно. Теперь он должен появиться в меню ваших услуг.

Затем, если вы хотите добавить сочетание клавиш, вам просто нужно перейти на вкладку «Системные настройки» -> «Клавиатура» -> «Сочетания клавиш», выбрать службы в меню слева и найти новый (вероятно, в нижней части). Просто нажмите на пробел справа от названия вашего сервиса и назначьте ему любое сочетание клавиш, какое вам нравится, и привет! все должно работать

tmdavison
источник
1
Следует отметить, что это действительно обеспечивает запрошенную функциональность. Как незначительное редактирование, вам нужна do shell script " "строка для открытия нового окна в текущем пространстве, но нет необходимости, чтобы сценарий оболочки был пустым пространством. Если это пробел, он заставляет Терминал запускать пробел в качестве команды, что приводит к задержкам выполнения и появлению лишней строки в новом окне Терминала. Просто сделайте его полностью пустой строкой: do shell script ""и тогда он откроет новое окно терминала, но не выдаст никаких команд в нем.
Дакота
Да, ты прав. Я обновил ответ, чтобы удалить пробел между кавычками. Однако для того, чтобы работать, нужно do script "", а не так do shell script "", как предложил
@dakota
3

В назначениях приложения в Системных настройках -> Пробелы либо установите для терминала значение «Каждый пробел», либо удалите запись. Тогда не должно быть никаких проблем, чтобы открыть новое окно терминала, где вы хотите, например, нажав на контекстное меню дока «Новое окно» (работает, даже если у вас есть «При переключении в приложение, переключитесь на пространство с открытыми окнами из этого приложение "опция включена).

WM
источник
Насколько я могу судить, первое предложение не имеет значения. Если для него задано значение «Каждый пробел», пробел при открытии нового окна с помощью чего-то вроде AppleScript или связывания клавиш по-прежнему изменяет пробел, а контекстное меню панели никогда не меняет пробел независимо от этого параметра. Одна интересная вещь в этом ответе - опция «При переключении в приложение, переключитесь на пространство с открытыми окнами из этого приложения». Отключение «исправляет» привязку клавиш / AppleScript, но, к сожалению, «ломает» командную вкладку. Если бы только OS-X имел правильную привязку клавиш «циклические окна», которая работала во всех окнах во всех приложениях во всех пространствах.
Лоуренс Гонсалвес
@LaurenceGonsalves, вы можете циклически проходить через все окна Терминала во всех Пространствах с помощью Command-Left / Right Arrow. Это помогает?
Крис Пейдж
@Chris Это интересный набор ярлыков, спасибо, но они не решают проблему, о которой я говорю. Если параметр «При переключении в приложение ...» отключен, и вы находитесь в пространстве без окон Терминала и на вкладке команд в «Терминале» он не переключается в пространство с окном Терминала, и команда backtick ничего не сделает. Удивительно, но команда left / right-arrow ничего не делает в этом случае (по крайней мере, для Snow Leopard). Эти клавиши будут циклически переключаться между окнами через пробелы, если окно в текущем приложении имеет фокус, но если ни одно окно не имеет фокуса, они ничего не делают.
Лоуренс Гонсалвес
2
tell application "Terminal"
    do script ""
    activate
end tell

Чтобы это работало в Lion, введите приведенное выше в новом окне AppleScript и сохраните его. Запустите сценарий через панель запуска, например QuickSilver, или назначьте его для сочетания клавиш. Это должно работать, даже если вы установили параметр «При переключении в приложение, переключитесь на пространство с открытыми окнами для приложения», включенного в Mission Control. Хитрость заключается в том, чтобы сделать команду активации последней, а не в начале.

Стефан Людвиг
источник
В качестве альтернативы, создайте Сервис с помощью Automator и активируйте его с помощью сочетания клавиш, установленного в Системных настройках: apple.stackexchange.com/a/13655/36722
Дакота,
0

Если вы используете док-меню для открытия нового окна, оно открывается в текущем пространстве.


источник
Есть ли способ сделать это с клавиатуры?
Лоуренс Гонсалвес
Control-F3 - «Переместить фокус на док». Вы можете использовать клавиши со стрелками, чтобы перемещаться по значку Dock в терминале. Вы также можете набрать, чтобы выбрать пункты меню по имени, например, введите «N» или «Новый W». См. Системные настройки> Клавиатура> Сочетания клавиш> Ввод клавиатуры и текста, чтобы увидеть все сочетания клавиш для выбора и навигации по пользовательскому интерфейсу.
Крис Пейдж
Это возможно сделать. Вам необходимо создать специальную службу с помощью Automator, которую затем можно привязать к сочетанию клавиш из «Системных настроек»: apple.stackexchange.com/a/13655/36722
Дакота,
0

Вы можете отключить переключение между OSX автоматически при переключении приложений с помощью следующих команд:

defaults write com.apple.dock workspaces-auto-swoosh -bool NO
killall Dock

Работает на 10.6.8

OrangeBox
источник
Для этого тоже есть настройка GUI, она находится в «Mission Control».
Серебряный Волк - Восстановить Монику