ฉันกำลังสร้างเว็บเพจในตอนนี้และสงสัยว่าเป็นไปได้หรือไม่ที่จะป้อนคำสั่งใน HTML ที่จะเปิดแอป Ubuntu ที่ติดตั้งเช่น Chromium หรือหน้าต่างเทอร์มินัลหรือ Nautilus
เป็นไปได้อย่างนี้ไหม? ขอบคุณ!
ฉันกำลังสร้างเว็บเพจในตอนนี้และสงสัยว่าเป็นไปได้หรือไม่ที่จะป้อนคำสั่งใน HTML ที่จะเปิดแอป Ubuntu ที่ติดตั้งเช่น Chromium หรือหน้าต่างเทอร์มินัลหรือ Nautilus
เป็นไปได้อย่างนี้ไหม? ขอบคุณ!
คำตอบ:
ใช่คุณสามารถทำได้โดยเพิ่มตัวจัดการโปรโตคอลใหม่ใน Ubuntu ของคุณ วิธีการต่อไปนี้จะแสดงวิธีการลงทะเบียนกระบวนการเปิดแอปพลิเคชั่นเป็นapp://[application_name]
ตัวจัดการโปรโตคอลใน Ubuntu
ในการใช้งานเทอร์มินัล:
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
เพื่อให้สิทธิ์การเข้าถึงเพื่อเรียกใช้งานสคริปต์
ตอนนี้คุณต้องสร้างตัวเรียกใช้. เดสก์ท็อปสำหรับสคริปต์ด้านบนและบอก Ubuntu ให้ใช้ตัวเรียกใช้นี้เป็น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://
แต่เพื่อให้ทำงานได้เราควรอัพเดตแคชฐานข้อมูลชนิด mime โดยรันคำสั่ง:
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
ที่ shell-exec เป็นเพียงสคริปต์อื่น ( #!/bin/sh "$@" exec "$SHELL"
)
ใช่เรียกว่า "เครื่องมือจัดการโปรโตคอลบนเว็บ" คุณต้องใช้ Chrome 13 หรือ Firefox 3.0 ขึ้นไป ฉันเคยเห็นว่ามันเคยเปิด LibreOffice
ทั้งMozillaและupdates.html5rocksมีคำอธิบายเกี่ยวกับวิธีการทำงานของมัน (เปิดใน Chrome / Chromium chrome://settings/handlers
และจะแสดงรายการตัวจัดการปัจจุบัน Firefox จะแสดงรายการตัวจัดการเหล่าabout:config
นั้น)
อะไหล่จากลิงค์ที่ 1:
การบันทึก
การตั้งค่าเว็บแอปพลิเคชันเป็นตัวจัดการโปรโตคอลไม่ใช่กระบวนการที่ยาก โดยทั่วไปเว็บแอปพลิเคชันใช้ registerProtocolHandler () เพื่อลงทะเบียนตัวเองกับเบราว์เซอร์เป็นตัวจัดการที่เป็นไปได้สำหรับโปรโตคอลที่กำหนด ตัวอย่างเช่น:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
พารามิเตอร์อยู่ที่ไหน:
เมื่อเบราว์เซอร์ประมวลผลรหัสนี้ควรแสดงพรอมต์ให้กับผู้ใช้เพื่อขออนุญาตอนุญาตให้เว็บแอปพลิเคชันลงทะเบียนเป็นตัวจัดการโปรโตคอล Firefox จะแสดงพรอมต์ในพื้นที่แถบการแจ้งเตือน
ตัวอย่าง
<!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
มีการ จำกัด เพียงไม่กี่ โซลูชันที่ได้รับการยอมรับจะให้ความละเอียดที่ดีขึ้น (แน่นอนว่ามีการปรับแต่งตามความจำเป็น)