मैं अभी एक वेबपेज बना रहा हूं और सोच रहा हूं कि क्या HTML में एक कमांड इनपुट करना संभव है जो क्रोमियम, या टर्मिनल विंडो या Nautilus जैसे स्थापित उबंटू ऐप को खोलेगा।
क्या ऐसा कुछ संभव है? धन्यवाद!
मैं अभी एक वेबपेज बना रहा हूं और सोच रहा हूं कि क्या HTML में एक कमांड इनपुट करना संभव है जो क्रोमियम, या टर्मिनल विंडो या Nautilus जैसे स्थापित उबंटू ऐप को खोलेगा।
क्या ऐसा कुछ संभव है? धन्यवाद!
जवाबों:
हां, आप अपने उबंटू में एक नया प्रोटोकॉल हैंडलर जोड़ सकते हैं। निम्न विधि आपको app://[application_name]
बताएगी कि उबंटू में प्रोटोकॉल हैंडलर के रूप में किसी एप्लिकेशन को खोलने की प्रक्रिया को कैसे पंजीकृत किया जाए ।
एक टर्मिनल रन में:
mkdir -p bin
यदि आपके पास पहले से नहीं है, तो यह कमांड bin
आपके home
फ़ोल्डर में एक निर्देशिका बना देगा ।
चलाने के बाद:
gedit ~/bin/open_app.sh
यह open_app.sh
gedit में नई फ़ाइल बनाएगा ।
नई बनाई गई फ़ाइल में निम्न स्क्रिप्ट को कॉपी और पेस्ट करें:
#!/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
स्क्रिप्ट के लिए एक्ज़ीक्यूट एक्सेस प्रदान करने के लिए।
अब आपको उपरोक्त स्क्रिप्ट के लिए एक .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;
फ़ाइल को सहेजें और इसे बंद करें।
उपरोक्त फ़ाइल में, लाइन MimeType=x-scheme-handler/app;
रजिस्टर app://
स्कीम हैंडलर, लेकिन इसे काम करने के लिए हमें कमांड निष्पादित करके माइम प्रकार डेटाबेस कैश अपडेट करना चाहिए:
sudo update-desktop-database
अब सब कुछ काम करना चाहिए। यह परीक्षण करने के लिए कि यह टर्मिनल से काम करता है, उदाहरण के लिए इस कमांड को चलाएं:
xdg-open 'app://gedit'
आप निम्न 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>
परिणाम:
app://
योजना हैंडलर का उपयोग करने से पहले वेबसाइट का उपयोग करने वाले उपयोगकर्ताओं को प्रदान की जा सकती है । exec()
PHP से फ़ंक्शन का उपयोग करना , उदाहरण के लिए, उस स्क्रिप्ट को ब्राउज़र में चलाने के लिए बनाया जा सकता है।
radu
अपना नाम बदलने के लिए याद रखें appurl.desktop
। जैसे:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
जहां शेल-एग्ज़िक्यूशन सिर्फ एक और स्क्रिप्ट है ( #!/bin/sh "$@" exec "$SHELL"
)
हां, इसे "वेब-आधारित प्रोटोकॉल हैंडलर" कहा जाता है। आपको क्रोम 13 या फ़ायरफ़ॉक्स 3.0 या उच्चतर की आवश्यकता है। मैंने देखा है कि यह लिबर ऑफिस खोलने के लिए उपयोग किया जाता है।
Mozilla और updates.html5rocks दोनों का स्पष्टीकरण है कि यह कैसे काम करता है। (क्रोम / क्रोमियम में खोलें chrome://settings/handlers
और यह वर्तमान हैंडलर की सूची दिखाएगा। फ़ायरफ़ॉक्स इनकी सूची बनाएगा about:config
।)
पहली कड़ी से भाग:
पंजीयन
प्रोटोकॉल हैंडलर के रूप में वेब एप्लिकेशन सेट करना एक कठिन प्रक्रिया नहीं है। मूल रूप से, वेब एप्लिकेशन किसी प्रोटोकॉल के लिए संभावित हैंडलर के रूप में ब्राउज़र के साथ खुद को पंजीकृत करने के लिए registerProtocolHandler () का उपयोग करता है। उदाहरण के लिए:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
जहां पैरामीटर हैं:
जब कोई ब्राउज़र इस कोड को कार्यान्वित करता है, तो उसे उपयोगकर्ता को एक प्रांप्ट प्रदर्शित करना चाहिए, जिसमें प्रोटोकॉल के लिए हैंडलर के रूप में वेब एप्लिकेशन को पंजीकृत करने की अनुमति देने की अनुमति दी गई है। फ़ायरफ़ॉक्स सूचना पट्टी क्षेत्र में एक शीघ्र प्रदर्शित करता है।
उदाहरण
<!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>
scheme
केवल कुछ ही तक सीमित है। स्वीकृत समाधान एक बेहतर समाधान प्रदान करेगा (निश्चित रूप से आवश्यकतानुसार कुछ tweaks के साथ)।