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

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

我现在正在创建一个网页,想知道是否可以在 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>

相关内容