É possível abrir um aplicativo Ubuntu a partir de HTML?


16

Estou criando uma página da Web no momento e estou imaginando se é possível inserir um comando em HTML que abra um aplicativo Ubuntu instalado, como o Chromium, ou uma janela de terminal ou o Nautilus.

É algo assim possível? Obrigado!


No Windows, foi, mas apenas se você executou o IExplorer, mas devido ao fato de uma página da Web ser texto apenas com um pouco de mágica do servidor, isso limita a capacidade de um navegador. Tenho certeza de que alguém irá inventar alguma coisa. Aplicativo Java pode ser?
— precisa saber é o seguinte

11
Talvez você deva esclarecer em que ambiente está executando, pois é muito amplo no momento. Por exemplo - você pode estar executando uma página html dentro webkit-webview que pode ser conectado a um python baseado app etc etc.
— fossfreedom

Hmmm ... Eu assumi HTML puro @fossfreedom>: - D
— Rinzwind

Sim, esta é apenas uma página HTML básica. Sem bancos de dados ou qualquer coisa.
— I Heart Ubuntu

Se houver alguma ajuda, o site será para usuários do Linux. Qualquer um poderia usá-lo naturalmente, mas estou projetando isso estritamente para usuários de Linux / Ubuntu. Parece bastante simples. Inicie um aplicativo Ubuntu como o terminal ou a calculadora a partir de um link em uma página da web. Por exemplo, se eu fizer "apt: // chromium-browser", ele abrirá a página do Ubuntu Software Centers Chromium. Portanto, sabemos que podemos lançar pelo menos o USC a partir de HTML. E os aplicativos Ubuntu / Linux?
— I Heart Ubuntu

Respostas:


21

Sim, você pode adicionar um novo manipulador de protocolo no seu Ubuntu. O método a seguir mostrará como registrar o processo de abertura de um aplicativo como app://[application_name]manipulador de protocolo no Ubuntu.

1. Criar script do iniciador de aplicativos

  • Em uma execução de terminal:

    mkdir -p bin
    

    Este comando criará um bindiretório em sua homepasta se você ainda não o tiver.

  • Após a execução:

    gedit ~/bin/open_app.sh
    

    Isso criará o novo arquivo open_app.shno gedit.

  • Copie e cole o seguinte script no novo arquivo criado:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • Salve o arquivo e feche-o.

  • Volte ao terminal e execute:

    chmod +x ~/bin/open_app.sh
    

    para conceder acesso de execução ao script.

2. Crie um arquivo .desktop para o iniciador de aplicativos

Agora você deve criar um iniciador .desktop para o script acima e dizer ao Ubuntu para usá-lo como app://manipulador de protocolo. Crie um /usr/share/applications/appurl.desktoparquivo usando o seguinte comando:

sudo -H gedit /usr/share/applications/appurl.desktop

e adicione o seguinte conteúdo:

[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;

Salve o arquivo e feche-o.

3. Atualizar banco de dados de tipos MIME

No arquivo acima, o manipulador do esquema de MimeType=x-scheme-handler/app;registro de linha app://, mas para fazê-lo funcionar, devemos atualizar o cache do banco de dados de tipos mime executando o comando:

sudo update-desktop-database 

4. Teste do terminal

Agora tudo deve funcionar. Para testar se funciona a partir do terminal, execute, por exemplo, este comando:

xdg-open 'app://gedit'

4. Teste no navegador usando HTML

Você pode testar no navegador usando, por exemplo, a seguinte página da Web 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>

O resultado:

aplicativo://


2
Muito muito bom. Um pequeno problema: os usuários que usam o site não terão esses scripts, lançadores e tipos MIME. Então, você também precisa fornecê-los de alguma maneira no site. Com o navigator.registerProtocolHandler, deve ser possível instalar o software sem a instalação. Mas parece muito, muito bom :-D
— Rinzwind

@Rinzwind Bem, um script que automatiza as etapas 1, 2 e 3 pode ser fornecido aos usuários que usam o site antes de usar o app://manipulador de esquema. Usando a exec()função do PHP, por exemplo, esse script pode ser criado para ser executado no navegador.
— Radu Rădeanu 14/08

exec () executará no lado do servidor, não no lado do cliente. Se você tentar lado do cliente, você vai encontrar segurança navegadores irá impedir os scripts rodando
— NGRhodes

11
Legal! Lembre-se de mudar radupara o seu nome em appurl.desktop. Como:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu É possível iniciar um script em vez de um aplicativo? Por exemplo app://shell-exec myscript.sh, onde shell-exec é apenas um outro script ( #!/bin/sh "$@" exec "$SHELL")
— Khurshid Alam

5

Sim, é chamado de "manipuladores de protocolo baseados na Web". Você precisa do Chrome 13 ou Firefox 3.0 ou superior. Eu já vi isso usado para abrir o LibreOffice.

Ambos Mozilla e updates.html5rocks ter uma explicação sobre como isso funciona. (Abra no Chrome / Chromium chrome://settings/handlerse ele mostrará uma lista dos manipuladores atuais. O Firefox os listará about:config.)

Peças do 1º link:

Registrando

Configurar um aplicativo Web como manipulador de protocolo não é um processo difícil. Basicamente, o aplicativo da Web usa registerProtocolHandler () para se registrar no navegador como um manipulador em potencial para um determinado protocolo. Por exemplo:

navigator.registerProtocolHandler("mailto",
                              "https://www.example.com/?uri=%s",
                              "Example Mail");

Onde os parâmetros são:

  • O protocolo.
  • O modelo de URL, usado como manipulador. O "% s" é substituído pelo href do link e um GET é executado no URL resultante.
  • O nome amigável para o manipulador de protocolo.

Quando um navegador executa esse código, ele deve exibir um prompt para o usuário, solicitando permissão para permitir que o aplicativo da Web se registre como manipulador do protocolo. O Firefox exibe um prompt na área da barra de notificação.

Exemplo

<!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>

Agradável. Existe uma maneira de passar parâmetros para o aplicativo local?
— AlikElzin-Kilaka

11
Isso parece permitir aplicativos como um webmailer, mas nenhum aplicativo externo (local).
— Geek-merlin #

Leia os detalhes aqui e aqui . Além disso, no primeiro link , você também verá que o schemeconteúdo está restrito a apenas alguns. A solução aceita fornecerá uma resolução melhor (é claro, com alguns ajustes conforme necessário).
— Fr0zenFyr

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.