是否可以从 HTML 打开 Ubuntu 应用程序?

I H*_*ntu 17 html

我现在正在创建一个网页,想知道是否可以在 HTML 中输入一个命令来打开已安装的 Ubuntu 应用程序,如 Chromium、终端窗口或 Nautilus。

这样的事情可能吗?谢谢!

Rad*_*anu 22

是的,您可以通过在您的 Ubuntu 中添加一个新的协议处理程序。以下方法将向您展示如何app://[application_name]在 Ubuntu中将打开应用程序的过程注册为协议处理程序。

1. 创建应用程序启动器脚本

2. 为应用程序启动器创建 .desktop 文件

现在您必须为上述脚本创建一个 .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)

保存文件并关闭它。

3. 刷新 mime 类型数据库

在上面的文件中,行MimeType=x-scheme-handler/app;注册app://方案处理程序,但为了使其工作,我们应该通过执行命令更新 mime 类型数据库缓存:

sudo update-desktop-database 
Run Code Online (Sandbox Code Playgroud)

4.终端测试

现在一切正常。要从终端测试它是否有效,请运行以下命令:

xdg-open 'app://gedit'
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

结果:

应用程序://

  • 非常非常棒。1个小问题:使用该网站的用户不会有那些脚本、启动器和mime类型。因此,您还需要从网站以某种方式提供它们。使用 navigator.registerProtocolHandler 应该可以不安装软件。但它看起来确实非常非常好:-D (3认同)

Rin*_*ind 5

是的,它被称为“基于 Web 的协议处理程序”。您需要 Chrome 13 或 Firefox 3.0 或更高版本。我见过它用来打开 LibreOffice。

双方的Mozillaupdates.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)

其中参数是:

  • 协议。
  • 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>
Run Code Online (Sandbox Code Playgroud)