Apri una nuova finestra di Safari nello spazio corrente da Terminal con più schede (URL)

6

Come si apre una nuova finestra di Safari da Terminal nello spazio corrente?

Ora quando si utilizza il comando open http://example.com ha aperto l'URL come ultima scheda sulla mia prima finestra di Safari.

Sto cercando un modo per aprire:

  • Nuova finestra Safari (indipendentemente da quante ne ho aperte).
  • Nello spazio corrente
  • Da terminale con l'URL fornito.

Probabilmente avrà bisogno di qualche script osascript , ma la mia conoscenza di AppleScript è quasi nulla ...

Il bonus potrebbe essere aperto con due URL, in due schede, in una nuova finestra nello Spazio corrente.

Qualcuno potrebbe aiutare?

    
posta jm666 12.08.2014 - 00:58
fonte

2 risposte

7

Ecco un AppleScript che dovrebbe aiutarti. Apri AppleScript Editor e salvalo come script. Ho modificato la fonte che ho trovato qui per supportare l'assunzione di argomenti sulla riga di comando.

Usalo in questo modo:

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

Ovviamente, sostituisci gli URL in alto con i tuoi 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

Potresti anche creare un alias per questo in Terminal e poterlo usare più facilmente. Vorrei aggiungere quanto segue a ~/.bash_profile :

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

Chiama newwindow come vuoi. Salva .bash_profile e riavvia Terminal affinché funzioni.

Nel caso qualcuno stia cercando una soluzione simile per Google Chrome, ecco un approccio diverso alla stessa 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
    
risposta data 12.08.2014 - 03:36
fonte
4

Che cos'è questa risposta dall'utente markhunte.

Puoi inserire la funzione qui sotto con il codice osascript in .profile .

codice:

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

}

Nel terminale:

cd nella tua home directory.

Esegui:

nano .profile

Se hai già un file .profile si aprirà e ci sarà già del codice.

Inserisci il codice al di sotto di qualsiasi altro codice.

Se non ne avevi uno, verrà aperto un file .profile vuoto.

Inserisci il codice in esso.

Dopo aver inserito il codice:

Tieni premuto Ctrl e premi il tasto x .

Nella parte inferiore della finestra ti verrà chiesto di salvare le modifiche.

Premi il tasto y per yes.

Ti verrà chiesto di salvarlo con il nome corrente di .profile .

Premi il tasto Invio per salvarlo.

Esegui:

. ~/.profile

Questo aggiornerà l'ambiente.

ora puoi eseguire:

Safari " link " Nota il cappuccio "S" in Safari.

    
risposta data 12.08.2014 - 04:33
fonte

Leggi altre domande sui tag