我现在正在创建一个网页,想知道是否可以在 HTML 中输入一个命令来打开已安装的 Ubuntu 应用程序(如 Chromium)、终端窗口或 Nautilus。
这可能吗?谢谢!
答案1
是的,您可以通过在 Ubuntu 中添加新的协议处理程序来实现。以下方法将向您展示如何app://[application_name]
在 Ubuntu 中将打开应用程序的过程注册为协议处理程序。
1. 创建应用程序启动器脚本
在终端运行:
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
授予脚本的执行权限。
2. 创建应用程序启动器的 .desktop 文件
现在您必须为上述脚本创建一个 .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;
保存文件并关闭。
3. 刷新 MIME 类型数据库
在上面的文件中,行MimeType=x-scheme-handler/app;
注册方案app://
处理程序,但为了使其工作,我们应该通过执行命令来更新 MIME 类型数据库缓存:
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
是的,它被称为“基于 Web 的协议处理程序”。您需要 Chrome 13 或 Firefox 3.0 或更高版本。我见过有人用它来打开 LibreOffice。
两个都Mozilla和更新.html5rocks解释一下这是如何工作的。(在 Chrome/Chromium 中打开chrome://settings/handlers
,它会显示当前处理程序的列表。Firefox 会在 中列出它们about:config
。)
来自第一个链接的部分:
注册
将 Web 应用程序设置为协议处理程序并不困难。基本上,Web 应用程序使用 registerProtocolHandler() 将自身注册到浏览器中作为给定协议的潜在处理程序。例如:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
其中参数为:
- 协议。
- URL 模板,用作处理程序。“%s”被替换为链接的 href,并在结果 URL 上执行 GET。
- 协议处理程序的用户友好名称。
当浏览器执行此代码时,它应该向用户显示一个提示,请求允许 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>