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

10

Estou criando uma página da Web agora e estou querendo saber se é possível inserir um comando em HTML que abrirá um aplicativo instalado do Ubuntu, como o Chromium, ou uma janela de terminal, ou o Nautilus.

É algo assim possível? Obrigado!

    
por I Heart Ubuntu 10.08.2013 / 16:51

2 respostas

15

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 manipulador de protocolo app://[application_name] no Ubuntu.

1. Criar script de iniciação de aplicativo

  • Em uma execução de terminal:

    mkdir -p bin
    

    Este comando criará um diretório bin na sua pasta home se você ainda não o tiver.

  • Após a execução:

    gedit ~/bin/open_app.sh
    

    Isso criará o novo arquivo open_app.sh in gedit.

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

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

  • Volte para o terminal e execute:

    chmod +x ~/bin/open_app.sh
    

    para conceder acesso de execução ao script.

2. Crie o arquivo .desktop para o lançador de aplicativos

Agora você deve criar um launcher .desktop para o script acima, e dizer ao Ubuntu para usar este launcher como app:// protocol handler. Crie o arquivo /usr/share/applications/appurl.desktop 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 de esquema de linha MimeType=x-scheme-handler/app; register app:// , mas para fazê-lo funcionar devemos atualizar o cache de 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 do terminal, execute por exemplo este comando:

xdg-open 'app://gedit'

4. Teste do navegador usando HTML

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

    
por Radu Rădeanu 14.08.2013 / 08:43
5

Sim, ele é chamado de "manipuladores de protocolo baseados na Web". Você precisa do Chrome 13 ou do Firefox 3.0 ou superior. Eu vi que costumava abrir o LibreOffice.

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

Partes do primeiro link:

Registrando

Configurar um aplicativo da Web como um manipulador de protocolo não é um processo difícil. Basicamente, o aplicativo da Web usa registerProtocolHandler () para se registrar com o 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 o manipulador. O "% s" é substituído pelo href do link e um GET é executado no URL resultante.
  • O nome amigável do manipulador de protocolo.

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

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>
    
por Rinzwind 13.08.2013 / 21:25

Tags