मैं OS X पर कस्टम URL हैंडलर्स को कैसे कॉन्फ़िगर करूं?


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 - शायद टाइगर के लिए लिखा गया था।

मैं प्रोटोकॉल और कस्टम प्रोटोकॉल के लिए URL हैंडलर सेट करने के तरीके के बारे में जानकारी नहीं पा सका हूं। मैं मान रहा हूं कि एक plistफाइल कहीं है जिसे मैं संपादित कर सकता हूं - या शायद एक नई, बेहतर उपयोगिता है जो माउंटेन शेर के साथ अच्छी तरह से काम करती है?

जवाबों:


55

आपके द्वारा चाहा गया फ़ाइल है ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

यह एक सरणी कहलाता है LSHandlers, और डिक्शनरी बच्चों को परिभाषित किया LSHandlerURLSchemeजा सकता है जिसे तदनुसार संशोधित किया जा सकता है LSHandlerRole

इस फ़ाइल को मैन्युअल रूप से संपादित करने के बजाय, आप RCDefaultApp का उपयोग भी कर सकते हैं , जो आपको एक अच्छा प्राथमिकता देता है। यह कहा जाता है कि macOS 10.12 और उसके बाद के लिए काम नहीं कर रहा है, लेकिन मैं पुष्टि कर सकता हूं कि यह macOS 10.14 के तहत चलता है।

एक विकल्प है SwiftDefaultApps

उदाहरण के लिए, यहाँ SVN और SSH:

... और RCDefaultApp में:


35
4 मिनट 19 सेकंड? गंभीरता से?
डैनियल बेक

2
तेजी से और विस्तृत जवाब के लिए धन्यवाद। अछा लगता है! प्रश्न हालांकि - मुझे लगता है कि मैंने पहले RCDefaultApp की कोशिश की और इसके साथ कुछ मुद्दा था। क्या यह आपके लिए मूल काम कर रहा है?
cwd

@cwd मुझे ईमानदारी से कहना है कि मैं अक्सर इसका इस्तेमाल नहीं करता। सुपर यूजर के लिए स्क्रीनशॉट के अलावा और कुछ के लिए :) :) जब भी मुझे फाइल इंफॉर्मेशन बदलने की जरूरत होती है, तो मैं इसे फाइंड इंफो ... फाइंडर में डायलॉग के जरिए करता हूं । मुझे प्रोटोकॉल और MIME हैंडलर बदलने की कभी जरूरत नहीं पड़ी। लेकिन यह मेरे लिए काफी स्थिर लग रहा था।
slhck

यह एक वास्तविक "ऐप" खोलने के लिए लगता है। क्या होगा यदि मैं एक टर्मिनल कमांड आदि का उपयोग करके कुछ कस्टम प्रोसेसिंग करना चाहता हूं?
Nute

1
@nute मेरे सिर के ऊपर से, निश्चित नहीं। शायद ऑटोमेटर के साथ बनाया गया कोई ऐप जो शेल स्क्रिप्ट को लपेटता है?
slhck

14

अद्यतन जुलाई 2017: RCDefaultApp और lstoolअब macOS 10.12 या बाद में काम नहीं करता है। हमें एक नया समाधान खोजना होगा।

मार्च 2018 को संपादित करें
मैंने SwiftDefaultApps पाया, लेकिन मैं अभी तक उच्च सिएरा पर नहीं हूं क्योंकि मैं परीक्षण नहीं कर सकता।


पिछले उत्तर को आगे बढ़ाते हुए, यदि आप कमांड लाइन पर ऐसा करना चाहते हैं, तो आप कमांड का उपयोग कर सकते हैं 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 lstoolकमांड-लाइन टूल इस त्रुटि को प्रदर्शित करता है जब आप इसे चलाने का प्रयास करते हैं: objc[1049]: Objective-C garbage collection is no longer supported.( lstoolRCDefaultApp वरीयता फलक द्वारा उपयोग किया जाने वाला आंतरिक प्रोग्राम है। जबकि वरीयता फलक काम करने के लिए प्रकट होता है, मुझे नहीं लगता कि यह lstoolटूटने के कारण कुछ भी कर सकता है। )
क्विन कॉमेडियन २५'१endant

SwiftDefaultApps स्पष्ट रूप से इंटेल प्रोसेसर पर काम नहीं करता है । कम से कम अप्रैल 2018 तक कोई फिक्स नहीं।
क्विन कॉमेंडेंट

3
मैं SwiftDefaultApps का डेवलपर हूं, SWDA को शुरुआत में macOS Sierra और उच्चतर माइंड के साथ कोडित किया गया था (वास्तव में, मैंने इस प्रश्न और इसी तरह के अन्य तथ्यों को पढ़ने के बाद इस पर काम करना शुरू किया था)। यह 10.13 में काम नहीं कर रहा था बड़े पैमाने पर या तो स्विफ्ट या macOS में बग के कारण, लेकिन यह 10.13.4 / स्विफ्ट 4.1 के अपडेट के साथ तय किया गया प्रतीत होता है।
ग्रेगोरियो लिटनस्टीन

11

Apple OS X 10.10 (Yosemite) पर वर्तमान LaunchServices URL हैंडलर सेटिंग्स को सूचीबद्ध करना:

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

अंतर्निहित उपकरणों का उपयोग करने के लिए या तो टूटने या आपको कुछ डाउनलोड करने की आवश्यकता नहीं है।
xdhmoore

यह हर प्रोटोकॉल के लिए सभी चूक की सूची नहीं देता है, केवल कुछ।
वादिम पेरिटोकिन

5

मैंने वास्तव में कस्टम URL प्रोटोकॉल के पंजीकरण को सरल बनाने वाला एक आवेदन लिखा है, अगर किसी को दिलचस्पी है। इसे LinCastor ( http://onflapp.wordpress.com/lincastor/ ) कहा जाता है । हैंडलर को AppleScript या शेल स्क्रिप्ट के रूप में परिभाषित किया जा सकता है (जो कि पर्ल, अजगर या कभी भी हो सकता है)।


बहुत अच्छा विचार है, लेकिन मुझे डर है कि मुझे काम करने के लिए आपूर्ति की गई उदाहरण स्क्रिप्ट नहीं मिल सकती है। आपके ब्लॉग पर, मॉडरेशन का इंतजार कर रहे हैं: getitdoneapps.wordpress.com/lincastor-browser/support/…
फ्लैश शेरिडन

यह कमांड फाइल से स्क्रिप्ट को चलाकर निदान की गई उदाहरण फ़ाइल में कुछ चकरा देने वाली रेखा-विचित्रता प्रतीत हो रही थी। ("/ बिन / श: खराब दुभाषिया: ऑपरेशन की अनुमति नहीं है") BBEdit में एक प्रतिलिपि सहेजना, और विंडोज से / के लिए लाइन ब्रेक को बदलना और रिचार्ज करना, समस्या के आसपास काम किया।
फ्लैश शेरिडन

5

XCode के साथ फ़ाइल खोलें काफी आसान है।

बिल्ड का उपयोग कर के plutilरूप में https://discussions.apple.com/thread/5815759 पर जवाब में वर्णित प्रारूप xml1 या बाइनरी 1 के बीच कनवर्ट करने के लिए इसी तरह काम करता है।

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

'विदेशी' उपकरण के लिए कोई ज़रूरत नहीं :-)



0

मैंने अभी अभी एल कैपिटान के तहत पुराने मोर इंटरनेट की कोशिश की।

यह कायरता है और यह काम करने का एकमात्र तरीका प्रोटोकॉल का चयन करने के लिए ऊपर और नीचे तीर कुंजियों का उपयोग कर रहा है, और परिवर्तन करने के लिए विंडो में एपीपी आइकन का एक ड्रैग / ड्रॉप है।

मैंने सफारी से क्रोम पर डिफ़ॉल्ट स्विच किया, और परिवर्तन अटक गया, इसलिए यह अभी भी काम करता है।


यह क्या है? आपका उत्तर अस्पष्ट है।
लैकोस्टेनकोडर

0

Apple OS X 10.10+ (Yosemite) पर Xcode के साथ वर्तमान LaunchServices URL हैंडलर सेटिंग्स को सूचीबद्ध करने का दूसरा तरीका:

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.