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!
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!
Risposte:
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.
In una corsa terminale:
mkdir -p bin
Questo comando creerà una bin
directory nella tua home
cartella se non l'hai già.
Dopo l'esecuzione:
gedit ~/bin/open_app.sh
Questo creerà il nuovo file open_app.sh
in 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.
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.desktop
file 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.
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
Ora tutto dovrebbe funzionare. Per verificare che funzioni dal terminale, eseguire ad esempio questo comando:
xdg-open 'app://gedit'
È 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://
gestore di schemi. Utilizzando la exec()
funzione di PHP, ad esempio, è possibile eseguire lo script nel browser.
radu
tuo nome in appurl.desktop
. Come:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
dove shell-exec è solo un altro script ( #!/bin/sh "$@" exec "$SHELL"
)
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/handlers
e 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:
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>
scheme
è limitato a pochi. La soluzione accettata fornirà una risoluzione migliore (ovviamente con alcune modifiche se necessario).