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

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

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

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

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

  • 在终端运行中:

     mkdir -p bin 

    如果您还没有该目录,则此命令将在您的home文件夹中创建一个bin目录。

  • 运行后:

     gedit ~/bin/open_app.sh 

    这将在gedit中创建新文件open_app.sh

  • 将以下脚本复制并粘贴到新创建的文件中:

     #!/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:// scheme handler,但要使其工作,我们应该通过执行命令更新mime类型数据库缓存:

 sudo update-desktop-database 

4.从终端测试

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

 xdg-open 'app://gedit' 

4.使用HTML从浏览器进行测试

您可以使用以下HTML网页从浏览器进行测试:

    Open some applications    

Open some applications in Ubuntu from HTML

Open terminal: app:// (equivalent with: app://gnome-terminal)

Open Nautilus: app://nautilus

Open Chromium: app://chromium-browser

Open Ubuntu Software Center: app://software-center (equivalent with: apt://)

...and so on

结果:

应用://

是的,它被称为“基于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"); 

参数是:

  • 协议。
  • URL模板,用作处理程序。 “%s”将替换为链接的href,并在结果URL上执行GET。
  • 协议处理程序的用户友好名称。

当浏览器执行此代码时,它应向用户显示提示,请求允许Web应用程序注册为协议处理程序的权限。 Firefox在通知栏区域中显示提示。

    Web Protocol Handler Sample - Register    

Web Protocol Handler Sample

This web page will install a web protocol handler for the fake: protocol.