เปิดหน้าต่าง Safari ใหม่ใน Space ปัจจุบันจาก Terminal ที่มีหลายแท็บ (URL)


6

จะเปิดหน้าต่าง Safari ใหม่จาก Terminal ใน Space ปัจจุบันได้อย่างไร

ตอนนี้เมื่อใช้open http://example.comคำสั่งมันเปิด URL เป็นแท็บสุดท้ายในหน้าต่าง Safari แรกของฉัน

ฉันกำลังมองหาวิธีเปิด:

  • หน้าต่าง Safari ใหม่ (ไม่ว่าฉันจะเปิดไว้เท่าไหร่)
  • ในอวกาศปัจจุบัน
  • จาก Terminal ด้วย URL ที่ให้ไว้

มันอาจจะต้องมีosascriptสคริปต์ แต่ความรู้ AppleScript ของฉันเกือบเป็นศูนย์ ...

โบนัสอาจจะเปิดสอง URL ในสองแท็บในหน้าต่างใหม่ในพื้นที่ปัจจุบัน

ใครช่วยได้บ้าง

คำตอบ:


7

นี่คือ AppleScript ที่จะช่วยคุณ เปิด AppleScript Editor และบันทึกเป็นสคริปต์ ฉันได้แก้ไขซอร์สที่พบที่นี่เพื่อรองรับการโต้แย้งในบรรทัดคำสั่ง

ใช้แบบนี้:

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และรีสตาร์ท Terminal เพื่อให้ใช้งานได้


ในกรณีที่ทุกคนกำลังมองหาโซลูชันที่คล้ายกันสำหรับ 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

น่าอัศจรรย์อย่างยิ่ง ฉันสร้างสคริปง่ายๆที่ชื่อว่า Safari ในตัวฉัน$PATHด้วย shebang #!/usr/bin/osascriptและทำงานเหมือนมีเสน่ห์ ขอบคุณ!
jm666

1
ไม่ทราบว่าคุณสามารถทำได้ด้วย#!/usr/bin/osascript! ดีใจที่ได้ช่วยเหลือ (และขอขอบคุณสำหรับความรู้ใหม่!)
aglasser

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 ไปยังไดเรกทอรีบ้านของคุณ

วิ่ง:

nano .profile

หากคุณมี.profileไฟล์อยู่แล้วมันจะเปิดขึ้นและจะมีรหัสบางส่วนอยู่แล้ว

ป้อนรหัสลงใต้รหัสอื่น ๆ

หากคุณไม่มี.profileไฟล์ไฟล์ว่างจะเปิดขึ้น

ใส่รหัสเข้าไป


หลังจากป้อนรหัส:

ค้างไว้Ctrlและกดxคีย์

ที่ด้านล่างของหน้าต่างคุณจะถูกขอให้บันทึกการเปลี่ยนแปลง

กดyปุ่มใช่ใช่

.profileตอนนี้คุณจะถูกขอให้บันทึกด้วยชื่อปัจจุบันของ

เพียงกดปุ่ม Enter เพื่อบันทึก

วิ่ง :

. ~/.profile

สิ่งนี้จะอัพเดตสภาพแวดล้อม

ตอนนี้คุณสามารถเรียกใช้:

Safari " http://stackoverflow.com " หมายเหตุ Cap "S" ใน Safari


ขอบคุณเช่นกันฉันชอบvimแก้ไขมากขึ้น ;) ยอมรับคำตอบของ aglasser เพราะแก้ไขปัญหาทั้งสองข้อ
jm666
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.