मैं xdg के साथ कस्टम प्रोटोकॉल कैसे पंजीकृत कर सकता हूं?


22

मैं आज सुबह एक कस्टम प्रोटोकॉल के साथ एक एप्लिकेशन को संबद्ध करने की कोशिश कर रहा हूं, जिसका नाम है emacsclient और org- प्रोटोकॉल

मैं इस प्रोटोकॉल को एक वेबसर्वर बुकमार्कलेट से बुला रहा हूं, और मुझे निम्न व्यवहार प्राप्त होता है:

क्रोमियम में,
"लॉन्च एप्लिकेशन" डायलॉग आता है, और xdg-खुले org-प्रोटोकॉल को कॉल करता है: // ... जो एक नया क्रोमियम फ्रेम फायरिंग को समाप्त करता है।

फ़ायरफ़ॉक्स में,
मैंने network.protocol-handler.app.org-प्रोटोकॉल को एक रिक्त स्ट्रिंग या मेरे खाली पथ पर सेट करने का प्रयास किया है, किसी भी तरह मुझे निम्न त्रुटि संदेश मिलता है:
"फ़ायरफ़ॉक्स को यह पता नहीं है कि यह पता कैसे खोला जाए, क्योंकि प्रोटोकॉल (ओआरजी-प्रोटोकॉल) किसी भी प्रोग्राम के साथ संबद्ध नहीं है "यहां तक ​​कि किसी भी बाहरी अनुप्रयोग चयन संवाद को दिखाए बिना।

मैं किसी भी डेस्कटॉप वातावरण का उपयोग नहीं कर रहा हूं, इसलिए मुझे इस काम को एक्सडीजी के साथ सख्ती से करने की आवश्यकता है, हालांकि, साझा माइम जानकारी कल्पना आदि को पढ़ने के बावजूद, मैं अभी भी एक काम करने वाले कॉन्फ़िगरेशन को थाह नहीं दे सकता।


जवाबों:


18

XDG विधि: MIME प्रकार को emacsclient.desktopहैंडल करने वाली फ़ाइल बनाएँ x-scheme-handler/org-protocol:

[Desktop Entry]
Name=Emacs Client
Exec=emacsclient %u
Icon=emacs-icon
Type=Application
Terminal=false
MimeType=x-scheme-handler/org-protocol;

( MimeType=उपरोक्त लाइन पर ध्यान दें , जो org-protocol:यूआरआई के लिए है।)

में फ़ाइल रखो ~/.local/share/applicationsया /usr/local/share/applications

आपको फ़ाइल को खोलना होगा ~/.local/share/applications/mimeapps.listऔर इस तरह एक लाइन जोड़ना होगा:

x-scheme-handler/org-protocol=emacsclient.desktop

उस [Default Applications]अनुभाग के अंतर्गत जोड़ें ।


यह अभी भी मेरे लिए एक क्रोम विंडो खोलता है; और कुछ? (। मैं fluxbox का उपयोग करने की बाहर w / करने के लिए मूल लेखक डेस्कटॉप env समान हो)
विधानसभा

8
आप अंतिम चरण भी प्राप्त कर सकते हैं xdg-mime default emacsclient.desktop x-scheme-handler/org-protocol, जो कि शायद ऐसा करने का अधिक आधिकारिक तरीका है।
एडम स्पीयर्स

क्या इसके अलावा कोई अन्य उपयोगी चर हैं %u? उदाहरण के लिए एक वैरिएबल जो यूआरआई के सिर्फ डोमेन या पथ भाग को व्यक्त करता है?
जोनाथन नेफेल्ड

11

@ शुद्धता लगभग सही है, लेकिन उन्होंने दो विवरणों की अनदेखी की:

  1. .desktopफ़ाइल को स्थापित करने के बाद , आपको मैन्युअल रूप से चलाने की आवश्यकता हो सकती है sudo update-desktop-database। (यदि आपने .desktopफ़ाइल का उपयोग करके स्थापित किया है तो यह आपके लिए हो सकता है xdg-desktop-menu install emacsclient.desktop)

    "क्या इस प्रोटोकॉल को संभालना चाहिए?" केवल एक त्रुटि पृष्ठ प्रदर्शित करने के बजाय संवाद।

  2. समय इस प्रश्न पूछा गया, तब में एक बग था xdg-openजिसके कारण यह आँख बंद करके अधिक करने के लिए हाथ यूआरएल को $BROWSER"सामान्य" (गैर केडीई, गैर गनोम, गैर XFCE, आदि) पर डेस्कटॉप और कहा कि वास्तव में व्यवहार का उत्पादन @ जुलिएन अनुभव कर रहा था।

    इसे xdg-open के आधुनिक संस्करणों में ठीक किया जाना चाहिए, लेकिन यदि आपका डेस्कटॉप किसी कारण से आधुनिक संस्करण का उपयोग नहीं कर रहा है , तो समस्या को हल करने के लिए यहाँ xdg-open I का संस्करण गिरा /usr/local/binहै।


1
अपडेटिंग xdg-open ने मेरे लिए काम किया, धन्यवाद!
जॉर्ज मैरीस

0

कम से कम फ़ेडोरा 13 में और विभिन्न डेबियन-आधारित डिस्ट्रोस xdg- खुले सभी URL खोलते हैं जिनमें फ़ाइल नहीं है : // किसी ब्राउज़र में स्कीम यदि वह समर्थित डेस्कटॉप वातावरण में नहीं चलता है। जिस तरह से यह पता लगाने की कोशिश की जाती है कि किस ब्राउज़र का उपयोग करना है, वितरण पर निर्भर करता है।

जैसा कि xdg-open केवल एक शेल स्क्रिप्ट है जिसे आप अपनी आवश्यकताओं के अनुसार आसानी से अनुकूलित कर सकते हैं।


वास्तव में, लेकिन यह विन्यास है जो कि xdg-open और xdg-mime के बीच की आवश्यकता है जो डॉक्स पढ़ने के बावजूद मेरे लिए बहुत अपारदर्शी है ...
julien

यदि कोई फ़ाइल खोल रहा है: // URI Ubuntu xdg-mime को बिल्कुल भी कॉल नहीं करता है, लेकिन रन-मेलकैप का उपयोग करता है यदि एक समर्थित DE के तहत नहीं चल रहा है, तो Fedora 13 पहले xdg-mime का उपयोग करके डिफ़ॉल्ट ऐप खोजने की कोशिश करता है और यदि ऐसा नहीं करता है काम माइमोपेन में वापस आता है। xdg-mime साझा MIME Info डेटाबेस का उपयोग करता है freedesktop.org/wiki/Software/sared-mime-info
फ्लोरियन डिस्च
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.