我现在正在创建一个网页,想知道是否可以在HTML中输入命令来打开已安装的Ubuntu应用,例如Chromium,终端窗口或Nautilus。
这样的事情可能吗?谢谢!
我现在正在创建一个网页,想知道是否可以在HTML中输入命令来打开已安装的Ubuntu应用,例如Chromium,终端窗口或Nautilus。
这样的事情可能吗?谢谢!
Answers:
是的,您可以在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
授予脚本执行权限。
现在,您必须为上述脚本创建一个.desktop启动器,并告诉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://
方案处理程序之前使用网站向用户提供自动执行步骤1、2和3的脚本。exec()
例如,使用PHP中的函数,可以使该脚本在浏览器中运行。
app://shell-exec myscript.sh
,shell-exec只是另一个脚本(#!/bin/sh "$@" exec "$SHELL"
)
是的,它被称为“基于Web的协议处理程序”。您需要Chrome 13或Firefox 3.0或更高版本。我曾经看过它用来打开LibreOffice。
双方的Mozilla和updates.html5rocks有关于如何工作的解释。(在Chrome / Chromium中打开,chrome://settings/handlers
它将显示当前处理程序的列表。Firefox将在中列出它们about:config
。)
来自第一个链接的部分:
注册
将Web应用程序设置为协议处理程序并不困难。基本上,Web应用程序使用registerProtocolHandler()向浏览器注册自身,作为给定协议的潜在处理程序。例如:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
其中的参数是:
当浏览器执行此代码时,它将向用户显示提示,要求允许Web应用程序注册为协议的处理程序的许可。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>