Откройте новое окно Safari в текущем Пространстве из Терминала с несколькими вкладками (URL-адресами)

Как открыть новое окно Safari из терминала в текущем пространстве?

Теперь, когда команда open http://example.com, она открыла URL как последнюю вкладку в моем первом окне Safari.

Я ищу способ открыть:

  • Новое окно Safari (независимо от того, сколько я открыл).
  • В текущем пространстве
  • От терминала с указанным URL.

Вероятно, потребуется некоторый скрипт osascript, но мои знания AppleScript почти равны нулю.

Бонус может быть открыт двумя URL-адресами в двух вкладках в новом окне текущего Пространства.

Может ли кто-нибудь помочь?

6 голосов | спросил jm666 12 AM00000020000003131 2014, 02:58:31

2 ответа


6

Вот AppleScript, который должен вам помочь. Откройте редактор AppleScript и сохраните его как скрипт. Я изменил источник, который нашел здесь для поддержки принятия аргументов в командной строке.

Используйте его следующим образом:

osascript new_window.scpt http://www.google.com http://www.stackoverflow.com

Конечно, замените URL-адреса выше своими URL-адресами.


new_window.scpt

on run argv
    tell application "Safari"
        if (count argv) = 0 then
            -- If you dont want to open a new window for an empty list, replace the
            -- following line with just "return"
            set {first_url, rest_urls} to {"", {}}
        else
            -- `item 1 of ...` gets the first item of a list, `rest of ...` gets
            -- everything after the first item of a list.  We treat the two
            -- differently because the first item must be placed in a new window, but
            -- everything else must be placed in a new tab.
            set {first_url, rest_urls} to {item 1 of argv, the rest of argv}
        end if

        make new document at end of documents with properties {URL:first_url}
        tell window 1
            repeat with the_url in rest_urls
                make new tab at end of tabs with properties {URL:the_url}
            end repeat
        end tell
        activate
    end tell
end run

Вы даже можете создать псевдоним для этого в терминале и сможете использовать его проще. Я бы добавил следующее к ~/.bash_profile:

alias newwindow='osascript /path/to/new_window.scpt'

Вызвать newwindow, что вы хотите. Сохраните .bash_profile и перезапустите терминал, чтобы он работал.


В случае, если кто-то ищет аналогичное решение для Google Chrome, здесь возникает другая идея.

chrome_new_window.scpt

on run argv
    tell application "Google Chrome"
        if (count argv) = 0 then
            make new window
        else
            tell (make new window)
                set URL of active tab to item 1 of argv
                repeat with the_url in the rest of argv
                    open location the_url
                end repeat
            end tell
        end if
        set active tab index of first window to 1
        activate
    end tell
end run
ответил aglasser 12 AM00000050000003731 2014, 05:36:37
4

Как насчет этого ответа пользователем markhunte.

Вы можете разместить функцию ниже с кодом osascript в .profile.

код:

function Safari {
  # Will open a New Safari window with argument 1.

osascript <<EOD
tell application "Safari" to make new document with properties {URL:"$1"}
return
EOD

}

В терминале:

cd в ваш домашний каталог.

Run:

nano .profile

Если у вас уже есть файл .profile, он откроется, и там уже будет какой-то код.

Введите код в него под любым другим кодом.

Если у вас его нет, откроется пустой файл .profile.

Введите в него код.


После ввода кода:

Удерживайте Ctrl и нажмите клавишу x .

В нижней части окна вам будет предложено сохранить изменения.

Нажмите клавишу y для да.

Теперь вам будет предложено сохранить его с текущим именем .profile.

Просто нажмите клавишу ввода, чтобы сохранить ее.

Запуск:

. ~/.profile

Это обновит среду.

теперь вы можете запустить:

Safari " http://stackoverflow.com " Обратите внимание на шапку «S» в Safari.

ответил Vincent 12 AM00000060000003631 2014, 06:33:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132