ฉันจะกำหนดค่าตัวจัดการ URL ที่กำหนดเองบน OS X ได้อย่างไร


64

ฉันได้อ่านออนไลน์เกี่ยวกับตัวจัดการ URL ที่กำหนดเอง / ตัวจัดการโปรโตคอลที่กำหนดเองเช่นออนไลน์:

ฉันเข้าใจว่าคุณสามารถบอกระบบว่าโปรแกรมใดโปรแกรมหนึ่งสามารถจัดการกับโครงร่าง / โปรโตคอลด้วยInfo.plistไฟล์:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Local File</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>local</string>
        </array>
    </dict>
</array>
<key>NSUIElement</key>
<true/>

แต่ถ้ามีแอปพลิเคชั่นหลายตัวที่สามารถเปิดตัวจัดการ URL เดียวกันได้เช่นmailto:คุณจะระบุว่าคุณต้องการใช้ระบบใด

มีการอ้างอิงถึงระบบสาธารณูปโภคบางอย่างเช่นMore Internet preference paneที่ดูเหมือนจะไม่พร้อมใช้งานจากไซต์ของผู้เขียน ฉันพบว่ามันออนไลน์โดย Googling แต่ดูเหมือนสั่นเล็กน้อย - เหมือนถูกเขียนขึ้นสำหรับ OSX รุ่นเก่า - อาจเป็น Tiger

ฉันไม่สามารถค้นหาข้อมูลเกี่ยวกับวิธีตั้งค่าตัวจัดการ URL สำหรับโปรโตคอลและโปรโตคอลที่กำหนดเองได้ ฉันสมมติว่ามีplistไฟล์ที่ฉันสามารถแก้ไขได้หรืออาจจะมียูทิลิตี้รุ่นใหม่ที่ดีกว่าที่ทำงานได้ดีกับ Mountain Lion

คำตอบ:


55

~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plistไฟล์ที่คุณแสวงหาก็คือ

มันถืออาร์เรย์เรียกLSHandlersและเด็กพจนานุกรมที่กำหนดสามารถปรับเปลี่ยนได้ตามความเหมาะสมกับLSHandlerURLSchemeLSHandlerRole

แทนที่จะแก้ไขไฟล์นี้ด้วยตนเองคุณยังสามารถใช้RCDefaultAppซึ่งให้บานหน้าต่างการตั้งค่าที่ดี มีการกล่าวว่าจะไม่ทำงานกับ macOS 10.12 ขึ้นไป แต่ฉันสามารถยืนยันได้ว่าทำงานภายใต้ macOS 10.14

ทางเลือกคือSwiftDefaultApps

ตัวอย่างเช่นนี่คือ SVN และ SSH:

…และใน RCDefaultApp:


35
4 นาที 19 วินาที อย่างจริงจัง?
Daniel Beck

2
ขอบคุณสำหรับคำตอบที่รวดเร็วและละเอียด ดูดี! คำถามแม้ว่า - ฉันคิดว่าฉันลอง RCDefaultApp มาก่อนและมีปัญหากับมัน มันทำงานได้อย่างราบรื่นสำหรับคุณหรือไม่?
cwd

@cwd ฉันต้องพูดโดยสุจริตว่าฉันไม่ได้ใช้บ่อย เพิ่มเติมสำหรับภาพหน้าจอสำหรับผู้ใช้ระดับสูงกว่าอย่างอื่น :) เมื่อใดก็ตามที่ฉันต้องการเปลี่ยนการเชื่อมโยงไฟล์ฉันทำผ่านไดอะล็อกรับข้อมูล ...ใน Finder ฉันไม่เคยต้องการเปลี่ยนโพรโทคอลและตัวจัดการ MIME แต่มันก็ดูดีพอสำหรับฉัน
slhck

ดูเหมือนว่าจะเป็นการเปิด "แอพ" ที่แท้จริง ถ้าฉันต้องการทำการประมวลผลแบบกำหนดเองโดยใช้คำสั่งเทอร์มินัลเป็นต้น
ตอนเย็น

1
@ เพียงแค่จากส่วนบนของหัวฉันไม่แน่ใจ บางทีแอปที่สร้างขึ้นด้วย Automator ที่ล้อมรอบเชลล์สคริปต์
slhck

14

อัปเดตกรกฎาคม 2560: RCDefaultApp และlstoolไม่ทำงานบน macOS 10.12 หรือใหม่กว่า เราจะต้องหาทางออกใหม่

แก้ไข Mar 2018
ฉันพบSwiftDefaultAppsแต่ไม่สามารถทดสอบได้เนื่องจากฉันยังไม่ได้อยู่ใน High Sierra


ต่อไปคำตอบก่อนหน้าถ้าคุณต้องการที่จะทำเช่นนี้ในบรรทัดคำสั่งคุณสามารถใช้lstoolคำสั่งซึ่งเป็นหลักของ RCDefaultApp RCDefaultApp.prefPane/Contents/Resources/lstoolพบภายใต้

การใช้งานตรงไปตรงมา:

[~]$lstool --help
Usage:

lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps

-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up

2
ฉันพบสิ่งทดแทนที่เป็นไปได้สำหรับ RCDefaultApp ที่github.com/Lord-Kamina/SwiftDefaultAppsแม้ว่าคุณจะต้องสร้างด้วยตัวเองด้วย Xcode
luckman212

ฉันใช้ RCDefaultApp เวอร์ชัน 2.1 และใช้งานได้ดีกับฉันในวันที่ 10.12 อย่างน้อยก็ยังคงมีรายการทั้งหมด หรือเฉพาะการดำเนินการบางอย่างไม่ทำงานอีกต่อไป? โปรดอธิบายอย่างละเอียด
SuperTempel

@SuperTempel lstoolเครื่องมือบรรทัดคำสั่งแสดงข้อผิดพลาดนี้เมื่อคุณพยายามเรียกใช้: objc[1049]: Objective-C garbage collection is no longer supported.( lstoolเป็นโปรแกรมภายในที่ใช้โดยบานหน้าต่างการกำหนดค่าตามความชอบของ RCDefaultApp ในขณะที่บานหน้าต่างการตั้งค่าปรากฏขึ้นให้ทำงานฉันไม่คิดว่ามันจะทำอะไรเพราะlstoolเสีย )
Quinn Comendant

SwiftDefaultApps เห็นได้ชัดว่าไม่ทำงานบนโปรเซสเซอร์ของ Intel ยังไม่มีการแก้ไขจนกว่าอย่างน้อยเมษายน 2018
Quinn Comendant

3
ฉันเป็นผู้พัฒนา SwiftDefaultApps, SWDA ถูกเขียนขึ้นตั้งแต่เริ่มต้นด้วย macOS Sierra และสูงกว่าในใจ (อันที่จริงฉันเริ่มทำงานกับมันหลังจากความยุ่งยากในการอ่านคำถามนี้และคำถามที่คล้ายกัน) มันไม่ทำงานใน 10.13 ส่วนใหญ่เนื่องจากข้อผิดพลาดใน Swift หรือ macOS เอง แต่ดูเหมือนว่าจะได้รับการแก้ไขด้วยการอัปเดตเป็น 10.13.4 / Swift 4.1
Gregorio Litenstein

11

การแสดงรายการการตั้งค่าตัวจัดการ URL ของ LaunchServices ปัจจุบันบน Apple OS X 10.10 (Yosemite):

defaults read com.apple.LaunchServices/com.apple.launchservices.secure

Yay สำหรับการใช้เครื่องมือบิวอินที่ไม่ทำลายหรือกำหนดให้คุณต้องดาวน์โหลดบางสิ่ง
xdhmoore

นี่ไม่ได้แสดงรายการค่าเริ่มต้นทั้งหมดสำหรับทุกโปรโตคอล แต่บางรายการเท่านั้น
Vadim Peretokin

5

ฉันเขียนแอปพลิเคชั่นที่ทำให้การลงทะเบียนโปรโตคอล URL ที่กำหนดเองง่ายขึ้นถ้าใครสนใจ มันเรียกว่า LinCastor ( http://onflapp.wordpress.com/lincastor/ ) ตัวจัดการสามารถกำหนดเป็น AppleScript หรือเชลล์สคริปต์ (ซึ่งสามารถ perl, python หรืออะไรก็ได้)


แนวคิดที่ดีมาก แต่ฉันเกรงว่าฉันจะไม่สามารถใช้สคริปต์ตัวอย่างที่ให้มาได้ เพิ่มเติมเกี่ยวกับบล็อกของคุณกำลังรอการกลั่นกรอง: getitdoneapps.wordpress.com/lincastor-browser/support/…
Flash Sheridan

ที่ดูเหมือนจะเป็นความผิดปกติของการแบ่งบรรทัดที่ยุ่งเหยิงในไฟล์ตัวอย่างซึ่งได้รับการวินิจฉัยโดยการเรียกใช้สคริปต์จากบรรทัดคำสั่ง (“ / bin / sh: ล่ามที่ไม่ดี: ไม่อนุญาตให้ใช้งาน”) บันทึกสำเนาใน BBEdit และเปลี่ยนและชาร์จตัวแบ่งบรรทัดไปยัง / จาก Windows เพื่อแก้ไขปัญหา
Flash Sheridan

5

เปิดไฟล์ด้วย XCode ใช้งานได้ง่ายมาก

การใช้คำสั่ง build in plutilดังอธิบายในคำตอบบนhttps://discussions.apple.com/thread/5815759เพื่อแปลงระหว่างรูปแบบ xml1 หรือ binary1 ทำงานคล้ายกัน

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

ไม่จำเป็นต้องใช้เครื่องมือ 'เอเลี่ยน' :-)



0

ฉันเพิ่งลองใช้อินเทอร์เน็ตเก่า ๆ ภายใต้ El Capitan

มันเป็นวิธีที่สนุกและวิธีเดียวที่ใช้งานได้คือการใช้ปุ่มลูกศรขึ้นและลงเพื่อเลือกโปรโตคอลและการลาก / วางไอคอน APP ลงในหน้าต่างเพื่อทำการเปลี่ยนแปลง

ฉันเปลี่ยนค่าเริ่มต้นจาก Safari เป็น Chrome และการเปลี่ยนแปลงติดขัดดังนั้นจึงยังใช้งานได้


นี่คืออะไร? คำตอบของคุณไม่ชัดเจน
lacostenycoder

0

อีกวิธีในการแสดงรายการการตั้งค่าเครื่องมือจัดการ URL ของ LaunchServices ปัจจุบันด้วย Xcode บน Apple OS X 10.10+ (Yosemite):

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.