È possibile aprire un'app Ubuntu da HTML?


16

Sto creando una pagina Web in questo momento e mi chiedo se sia possibile inserire un comando in HTML che aprirà un'app Ubuntu installata come Chromium, o una finestra terminale o Nautilus.

È possibile qualcosa del genere? Grazie!


In Windows lo era, ma solo se si eseguiva IExplorer, ma a causa del fatto che una pagina Web è di testo solo con un po 'di magia lato server, questo limita le capacità di un browser. Sono sicuro che qualcuno inventerà qualcosa. L'app Java potrebbe essere?
SimplySimon

1
Forse dovresti chiarire in quale ambiente stai gestendo dato che al momento è molto ampio. Ad esempio, potresti eseguire una pagina html all'interno di webkit-webview che potrebbe essere collegata a un'app basata su Python ecc.
Ecc

Hmmm ... Ho assunto puro HTML @fossfreedom>: - D
Rinzwind

Sì, questa è solo una pagina Web HTML di base. Nessun database o altro.
I Heart Ubuntu,

Se è di qualche aiuto, il sito sarà per gli utenti di Linux. Chiunque potrebbe usarlo naturalmente, ma sto progettando questo rigorosamente per gli utenti Linux / Ubuntu. Sembra abbastanza semplice. Avviare un'app Ubuntu come il terminale o la calcolatrice da un collegamento in una pagina Web. Ad esempio, se faccio "apt: // chromium-browser", apre la pagina Chromium di Ubuntu Software Centers. Quindi sappiamo che possiamo avviare almeno l'USC da HTML. Che dire delle app Ubuntu / linux?
I Heart Ubuntu

Risposte:


21

Sì, puoi aggiungendo un nuovo gestore di protocollo in Ubuntu. Il seguente metodo ti mostrerà come registrare il processo di apertura di un'applicazione come app://[application_name]gestore di protocollo in Ubuntu.

1. Creare uno script di avvio dell'applicazione

  • In una corsa terminale:

    mkdir -p bin
    

    Questo comando creerà una bindirectory nella tua homecartella se non l'hai già.

  • Dopo l'esecuzione:

    gedit ~/bin/open_app.sh
    

    Questo creerà il nuovo file open_app.shin gedit.

  • Copia e incolla il seguente script nel nuovo file creato:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • Salva il file e chiudilo.

  • Torna al terminale ed esegui:

    chmod +x ~/bin/open_app.sh
    

    per concedere l'accesso in esecuzione per lo script.

2. Creare il file .desktop per l'avvio dell'applicazione

Ora devi creare un launcher .desktop per lo script sopra e dire a Ubuntu di usare questo launcher come app://gestore del protocollo. Crea il /usr/share/applications/appurl.desktopfile usando il seguente comando:

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

e aggiungi il seguente contenuto:

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

Salva il file e chiudilo.

3. Aggiorna il database dei tipi mime

Nel file sopra, il gestore dello schema del MimeType=x-scheme-handler/app;registro di linea app://, ma per farlo funzionare dovremmo aggiornare la cache del database dei tipi mime eseguendo il comando:

sudo update-desktop-database 

4. Test dal terminale

Ora tutto dovrebbe funzionare. Per verificare che funzioni dal terminale, eseguire ad esempio questo comando:

xdg-open 'app://gedit'

4. Test dal browser tramite HTML

È possibile eseguire il test dal browser utilizzando ad esempio la seguente pagina 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>

Il risultato:

app: //


2
Molto molto carino. 1 lieve problema: gli utenti che utilizzano il sito Web non avranno script, lanciatori e tipi MIME. Quindi devi anche fornirli in qualche modo dal sito web. Con navigator.registerProtocolHandler dovrebbe essere possibile eseguire l'installazione del software. Ma sembra davvero molto bello
MrGreen

@Rinzwind Bene, uno script che automatizza i passaggi 1, 2 e 3 può essere fornito agli utenti che utilizzano il sito Web prima di utilizzare il app://gestore di schemi. Utilizzando la exec()funzione di PHP, ad esempio, è possibile eseguire lo script nel browser.
Radu Rădeanu,

exec () eseguirà lato server, non lato client. Se provi il lato client, scoprirai che la sicurezza del browser impedirà l'esecuzione degli script
NGRhodes

1
Freddo! Ricorda di cambiare il radutuo nome in appurl.desktop. Come:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu È possibile avviare uno script anziché un'app? Ad esempio, app://shell-exec myscript.shdove shell-exec è solo un altro script ( #!/bin/sh "$@" exec "$SHELL")
Khurshid Alam,

5

Sì, si chiama "Gestori di protocolli basati sul Web". È necessario Chrome 13 o Firefox 3.0 o versioni successive. L'ho visto usato per aprire LibreOffice.

Sia Mozilla che updates.html5rocks hanno una spiegazione su come funziona. (Apri in Chrome / Chromium chrome://settings/handlerse mostrerà un elenco degli attuali gestori. Firefox li elencherà tra about:config.)

Parti dal 1 ° link:

Registrazione

La configurazione di un'applicazione Web come gestore di protocollo non è un processo difficile. Fondamentalmente, l'applicazione Web utilizza registerProtocolHandler () per registrarsi con il browser come potenziale gestore per un determinato protocollo. Per esempio:

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

Dove sono i parametri:

  • Il protocollo.
  • Il modello URL, utilizzato come gestore. "% S" viene sostituito con l'href del collegamento e un GET viene eseguito sull'URL risultante.
  • Il nome intuitivo per il gestore del protocollo.

Quando un browser esegue questo codice, dovrebbe visualizzare un prompt per l'utente, chiedendo l'autorizzazione per consentire all'applicazione Web di registrarsi come gestore per il protocollo. Firefox visualizza un prompt nell'area della barra delle notifiche.

Esempio

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

Bello. C'è un modo per passare i parametri all'app locale?
AlikElzin-Kilaka,

1
Ciò sembra consentire app come un webmailer, ma nessuna applicazione (locale) esterna.
geek-merlin,

Leggi i dettagli qui e qui . Inoltre, sul primo link , vedrai anche che schemeè limitato a pochi. La soluzione accettata fornirà una risoluzione migliore (ovviamente con alcune modifiche se necessario).
Fr0zenFir

Per i curiosi, consultare le specifiche del consorzio W3
Fr0zenFir
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.