क्या HTML से उबंटू ऐप खोलना संभव है?


16

मैं अभी एक वेबपेज बना रहा हूं और सोच रहा हूं कि क्या HTML में एक कमांड इनपुट करना संभव है जो क्रोमियम, या टर्मिनल विंडो या Nautilus जैसे स्थापित उबंटू ऐप को खोलेगा।

क्या ऐसा कुछ संभव है? धन्यवाद!


विंडोज में यह था, लेकिन केवल अगर आप IExplorer चला, लेकिन इस तथ्य के कारण कि एक वेब पेज केवल सर्वर साइड मैजिक के एक बिट के साथ पाठ है, यह इस बात को सीमित करता है कि एक ब्राउज़र क्या सक्षम है। मुझे यकीन है कि कोई कुछ लेकर आएगा। जावा ऐप हो सकता है?
सिंपलीमोसॉन

1
आपको शायद यह स्पष्ट करना चाहिए कि आप किस माहौल में चल रहे हैं क्योंकि यह इस समय बहुत व्यापक है। उदाहरण के लिए - आप वेबकिट-वेबव्यू के भीतर एक html पृष्ठ एक अजगर आधारित एप्लिकेशन आदि आदि से जोड़ा जा सकता है जो चल रहा हो सकता है
fossfreedom

डी -: हममम ... मैं शुद्ध एचटीएमएल @fossfreedom> ग्रहण
Rinzwind

हां, यह सिर्फ एक बेसिक HTML वेबपेज है। कोई डेटाबेस या कुछ भी नहीं।
मैं दिल उबंटू

यदि इसकी कोई मदद करता है, तो साइट लिनक्स उपयोगकर्ताओं के लिए होगी। कोई भी इसे स्वाभाविक रूप से उपयोग कर सकता है, लेकिन मैं इसे लिनक्स / उबंटू उपयोगकर्ताओं के लिए सख्ती से डिजाइन कर रहा हूं। काफी सरल लगता है। एक वेबपेज पर एक लिंक से टर्मिनल या कैलकुलेटर की तरह एक उबंटू ऐप लॉन्च करें। उदाहरण के लिए अगर मैं "apt: // क्रोमियम-ब्राउज़र" करता हूं तो यह उबंटू सॉफ्टवेयर सेंटर क्रोमियम पेज खोलता है। तो हमें पता है कि हम HTML से कम से कम USC लॉन्च कर सकते हैं। Ubuntu / linux ऐप्स के बारे में क्या?
मैं दिल उबंटू

जवाबों:


21

हां, आप अपने उबंटू में एक नया प्रोटोकॉल हैंडलर जोड़ सकते हैं। निम्न विधि आपको app://[application_name]बताएगी कि उबंटू में प्रोटोकॉल हैंडलर के रूप में किसी एप्लिकेशन को खोलने की प्रक्रिया को कैसे पंजीकृत किया जाए ।

1. एप्लिकेशन लॉन्चर स्क्रिप्ट बनाएं

  • एक टर्मिनल रन में:

    mkdir -p bin
    

    यदि आपके पास पहले से नहीं है, तो यह कमांड binआपके homeफ़ोल्डर में एक निर्देशिका बना देगा ।

  • चलाने के बाद:

    gedit ~/bin/open_app.sh
    

    यह open_app.shgedit में नई फ़ाइल बनाएगा ।

  • नई बनाई गई फ़ाइल में निम्न स्क्रिप्ट को कॉपी और पेस्ट करें:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • फ़ाइल को सहेजें और इसे बंद करें।

  • टर्मिनल में वापस जाएं और चलाएं:

    chmod +x ~/bin/open_app.sh
    

    स्क्रिप्ट के लिए एक्ज़ीक्यूट एक्सेस प्रदान करने के लिए।

2. एप्लिकेशन लॉन्चर के लिए .desktop फ़ाइल बनाएं

अब आपको उपरोक्त स्क्रिप्ट के लिए एक .desktop लांचर बनाना होगा, और उबंटू को इस app://हैंडलर को प्रोटोकॉल हैंडलर के रूप में उपयोग करने के लिए कहना होगा । /usr/share/applications/appurl.desktopनिम्न कमांड का उपयोग करके फ़ाइल बनाएँ :

sudo -H gedit /usr/share/applications/appurl.desktop

और निम्नलिखित सामग्री जोड़ें:

[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;

फ़ाइल को सहेजें और इसे बंद करें।

3. माइम प्रकार डेटाबेस को ताज़ा करें

उपरोक्त फ़ाइल में, लाइन MimeType=x-scheme-handler/app;रजिस्टर app://स्कीम हैंडलर, लेकिन इसे काम करने के लिए हमें कमांड निष्पादित करके माइम प्रकार डेटाबेस कैश अपडेट करना चाहिए:

sudo update-desktop-database 

4. टर्मिनल से टेस्ट

अब सब कुछ काम करना चाहिए। यह परीक्षण करने के लिए कि यह टर्मिनल से काम करता है, उदाहरण के लिए इस कमांड को चलाएं:

xdg-open 'app://gedit'

4. HTML का उपयोग करके ब्राउज़र से टेस्ट करें

आप निम्न HTML वेब पेज उदाहरण के लिए उपयोग करके ब्राउज़र से परीक्षण कर सकते हैं:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
    <title>Open some applications</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>

<body>
        <h3>Open some applications in Ubuntu from HTML</h3>
        <p>Open terminal: <a title="Open" href="app://">app://</a>
        (equivalent with: <a title="Open" href="app://gnome-terminal">app://gnome-terminal</a>)</p>
        <p>Open Nautilus: <a title="Open" href="app://nautilus">app://nautilus</a></p>
        <p>Open Chromium: <a title="Open" href="app://chromium-browser">app://chromium-browser</a></p>
        <p>Open Ubuntu Software Center: <a title="Open" href="app://software-center">app://software-center</a>
        (equivalent with: <a title="Open" href="apt://">apt://</a>)</p>
        <p>...and so on</p>
</body>

</html>

परिणाम:

एप्लिकेशन: //


2
बहुत बहुत अच्छा। 1 मामूली समस्या: वेबसाइट का उपयोग करने वाले उपयोगकर्ताओं के पास उन स्क्रैप, लॉन्चर और माइम प्रकार नहीं होंगे। तो आपको उन्हें वेबसाइट से किसी तरह से आपूर्ति करने की भी आवश्यकता है। Navigator.registerProtocolHandler के साथ सॉफ्टवेयर स्थापित करना w / o करना संभव होना चाहिए। लेकिन यह बहुत अच्छा दिखता है :-D
रिनविंड

@ रिनविंड खैर, एक स्क्रिप्ट जो चरण 1, 2 और 3 को स्वचालित करती है, app://योजना हैंडलर का उपयोग करने से पहले वेबसाइट का उपयोग करने वाले उपयोगकर्ताओं को प्रदान की जा सकती है । exec()PHP से फ़ंक्शन का उपयोग करना , उदाहरण के लिए, उस स्क्रिप्ट को ब्राउज़र में चलाने के लिए बनाया जा सकता है।
राडू रियडेनू

निष्पादित () सर्वर साइड चलेगा, क्लाइंट साइड नहीं। यदि आप क्लाइंट की तरफ से कोशिश करते हैं, तो आप पाएंगे कि ब्राउज़र सुरक्षा स्क्रिप्ट को चलने से
रोकेगी

1
ठंडा! में raduअपना नाम बदलने के लिए याद रखें appurl.desktop। जैसे:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu क्या ऐप के बजाय स्क्रिप्ट लॉन्च करना संभव है? उदाहरण के लिए app://shell-exec myscript.shजहां शेल-एग्ज़िक्यूशन सिर्फ एक और स्क्रिप्ट है ( #!/bin/sh "$@" exec "$SHELL")
खुर्शीद आलम

5

हां, इसे "वेब-आधारित प्रोटोकॉल हैंडलर" कहा जाता है। आपको क्रोम 13 या फ़ायरफ़ॉक्स 3.0 या उच्चतर की आवश्यकता है। मैंने देखा है कि यह लिबर ऑफिस खोलने के लिए उपयोग किया जाता है।

Mozilla और updates.html5rocks दोनों का स्पष्टीकरण है कि यह कैसे काम करता है। (क्रोम / क्रोमियम में खोलें chrome://settings/handlersऔर यह वर्तमान हैंडलर की सूची दिखाएगा। फ़ायरफ़ॉक्स इनकी सूची बनाएगा about:config।)

पहली कड़ी से भाग:

पंजीयन

प्रोटोकॉल हैंडलर के रूप में वेब एप्लिकेशन सेट करना एक कठिन प्रक्रिया नहीं है। मूल रूप से, वेब एप्लिकेशन किसी प्रोटोकॉल के लिए संभावित हैंडलर के रूप में ब्राउज़र के साथ खुद को पंजीकृत करने के लिए registerProtocolHandler () का उपयोग करता है। उदाहरण के लिए:

navigator.registerProtocolHandler("mailto",
                              "https://www.example.com/?uri=%s",
                              "Example Mail");

जहां पैरामीटर हैं:

  • प्रोटोकॉल।
  • URL टेम्पलेट, हैंडलर के रूप में उपयोग किया जाता है। "% S" को लिंक के href में बदल दिया जाता है और परिणामी URL पर एक GET निष्पादित किया जाता है।
  • प्रोटोकॉल हैंडलर के लिए उपयोगकर्ता के अनुकूल नाम।

जब कोई ब्राउज़र इस कोड को कार्यान्वित करता है, तो उसे उपयोगकर्ता को एक प्रांप्ट प्रदर्शित करना चाहिए, जिसमें प्रोटोकॉल के लिए हैंडलर के रूप में वेब एप्लिकेशन को पंजीकृत करने की अनुमति देने की अनुमति दी गई है। फ़ायरफ़ॉक्स सूचना पट्टी क्षेत्र में एक शीघ्र प्रदर्शित करता है।

उदाहरण

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    <title>Web Protocol Handler Sample - Register</title>
    <script type="text/javascript">
navigator.registerProtocolHandler("fake", "http://starkravingfinkle.org/projects/wph/handler.php?value=%s", "Fake Protocol");
    </script>
</head>
<body>
    <h1>Web Protocol Handler Sample</h1>
    <p>This web page will install a web protocol handler for the <code>fake:</code> protocol.</p>
</body>
</html>

अच्छा लगा। क्या स्थानीय ऐप में पैरामेट्स पास करने का कोई तरीका है?
एलिकएल्ज़िन-किलाका

1
यह वेबमेलर जैसे ऐप्स को अनुमति देता है, लेकिन कोई बाहरी (स्थानीय) एप्लिकेशन नहीं।
geek-merlin

विवरण यहां और यहां पढ़ें । इसके अलावा, पहले लिंक पर , आप यह भी देखेंगे कि यह schemeकेवल कुछ ही तक सीमित है। स्वीकृत समाधान एक बेहतर समाधान प्रदान करेगा (निश्चित रूप से आवश्यकतानुसार कुछ tweaks के साथ)।
Fr0zenFyr

जिज्ञासु के लिए, W3 कंसोर्टियम स्पेक्स
Fr0zenFyr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.