我现在正在创建一个网页,想知道是否可以在 HTML 中输入一个命令来打开已安装的 Ubuntu 应用程序,如 Chromium、终端窗口或 Nautilus。
这样的事情可能吗?谢谢!
Rad*_*anu 22
是的,您可以通过在您的 Ubuntu 中添加一个新的协议处理程序。以下方法将向您展示如何app://[application_name]在 Ubuntu中将打开应用程序的过程注册为协议处理程序。
在终端运行中:
mkdir -p bin
Run Code Online (Sandbox Code Playgroud)
如果您还没有,此命令将bin在您的home文件夹中创建一个目录。
运行后:
gedit ~/bin/open_app.sh
Run Code Online (Sandbox Code Playgroud)
这将open_app.sh在 gedit 中创建新文件。
将以下脚本复制并粘贴到新创建的文件中:
mkdir -p bin
Run Code Online (Sandbox Code Playgroud)保存文件并关闭它。
返回终端并运行:
chmod +x ~/bin/open_app.sh
Run Code Online (Sandbox Code Playgroud)
授予脚本的执行访问权限。
现在您必须为上述脚本创建一个 .desktop 启动器,并告诉 Ubuntu 使用这个启动器作为app://协议处理程序。/usr/share/applications/appurl.desktop使用以下命令创建文件:
sudo -H gedit /usr/share/applications/appurl.desktop
Run Code Online (Sandbox Code Playgroud)
并添加以下内容:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Run Code Online (Sandbox Code Playgroud)
保存文件并关闭它。
在上面的文件中,行MimeType=x-scheme-handler/app;注册app://方案处理程序,但为了使其工作,我们应该通过执行命令更新 mime 类型数据库缓存:
sudo update-desktop-database
Run Code Online (Sandbox Code Playgroud)
现在一切正常。要从终端测试它是否有效,请运行以下命令:
xdg-open 'app://gedit'
Run Code Online (Sandbox Code Playgroud)
例如,您可以使用以下 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>
Run Code Online (Sandbox Code Playgroud)
结果:
是的,它被称为“基于 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");
Run Code Online (Sandbox Code Playgroud)
其中参数是:
当浏览器执行此代码时,它应该向用户显示一个提示,请求允许 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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10014 次 |
| 最近记录: |