Apple - Open a new Safari window in the current Space from Terminal with multiple tabs (URLs)

Here is an AppleScript that should help you. Open AppleScript Editor and save this as a script. I have modified the source that I found here to support taking arguments on the command line.

Use it like this:

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

Of course, replace the URLs above with your own URLs.


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

You could even create an alias for this in Terminal and be able to use it easier. I would add the following to ~/.bash_profile:

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

Call newwindow whatever you want. Save .bash_profile and restart Terminal for it to work.


In case anyone is looking for a similar solution for Google Chrome, here is a different take on the same idea.

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

What about this answer by user markhunte.

You can place the below function with the osascript code in your .profile.

code:

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

}

In terminal:

cd to your home directory.

Run:

nano .profile

If you already have a .profile file it will open and there will be some code there already.

Enter the code into it below any other code.

If you did not have one, a blank .profile file will be opened.

Enter the code into it.


After entering the code:

Hold down Ctrl and press the x key.

At the bottom of the window you will be asked to save the changes.

Hit the y key for yes.

You will now be asked to save it with the current name of .profile.

Just hit the enter key to save it.

Run :

. ~/.profile

This will update the environment.

now you can run:

Safari "http://stackoverflow.com" Note the Cap "S" in Safari.