Ist es möglich, eine Ubuntu-App aus HTML heraus zu öffnen?
16
Ich erstelle gerade eine Webseite und frage mich, ob es möglich ist, einen Befehl in HTML einzugeben, der eine installierte Ubuntu-App wie Chromium, ein Terminalfenster oder Nautilus öffnet.
In Windows war es das, aber nur, wenn Sie IExplorer ausgeführt haben, aber aufgrund der Tatsache, dass eine Webseite nur Text mit ein bisschen serverseitiger Magie ist, schränkt dies die Fähigkeit eines Browsers ein. Ich bin sicher, dass sich jemand etwas einfallen lässt. Java App kann sein?
SimplySimon
1
Sie sollten vielleicht klären, in welcher Umgebung Sie arbeiten, da diese momentan sehr umfangreich ist. Zum Beispiel - Sie könnten eine HTML-Seite in webkit-webview ausführen, die mit einer Python-basierten App usw. usw. verbunden sein könnte.
fossfreedom
Hmmm ... ich nahm reines HTML an @fossfreedom>: - D
Rinzwind
Ja, dies ist nur eine einfache HTML-Webseite. Keine Datenbanken oder so.
I Heart Ubuntu
Wenn es irgendeine Hilfe gibt, wird die Seite für Linux Benutzer sein. Jeder könnte es natürlich benutzen, aber ich entwerfe es ausschließlich für Linux / Ubuntu-Benutzer. Scheint einfach genug. Starten Sie eine Ubuntu-App wie das Terminal oder den Taschenrechner über einen Link auf einer Webseite. Wenn ich zum Beispiel "apt: // chromium-browser" verwende, wird die Ubuntu Software Centers Chromium Page geöffnet. Wir wissen also, dass wir zumindest den USC aus HTML heraus starten können. Was ist mit Ubuntu / Linux-Apps?
I Heart Ubuntu
Antworten:
21
Ja, Sie können einen neuen Protokoll-Handler in Ihrem Ubuntu hinzufügen. Die folgende Methode zeigt Ihnen, wie Sie den Prozess des Öffnens einer Anwendung als app://[application_name]Protokoll-Handler in Ubuntu registrieren .
1. Erstellen Sie ein Application Launcher-Skript
In einem Terminallauf:
mkdir -p bin
Dieser Befehl erstellt ein binVerzeichnis in Ihrem homeOrdner, falls Sie es noch nicht haben.
Nach dem Lauf:
gedit ~/bin/open_app.sh
Dadurch wird die neue Datei open_app.shin gedit erstellt.
Kopieren Sie das folgende Skript und fügen Sie es in die neu erstellte Datei ein:
2. Erstellen Sie eine .desktop-Datei für den Anwendungsstarter
Jetzt müssen Sie ein .desktop-Startprogramm für das obige Skript erstellen und Ubuntu anweisen, dieses Startprogramm als app://Protokollhandler zu verwenden. Erstellen Sie eine /usr/share/applications/appurl.desktopDatei mit dem folgenden Befehl:
In der Datei über die Linie MimeType=x-scheme-handler/app;Register app://Schema Handler, aber es arbeiten machen wir MIME - Typen Datenbank - Cache aktualisieren sollte Befehl ausführen:
sudo update-desktop-database
4. Vom Terminal aus testen
Jetzt sollte alles funktionieren. Um zu testen, ob es vom Terminal aus funktioniert, führen Sie zum Beispiel den folgenden Befehl aus:
xdg-open 'app://gedit'
4. Testen Sie den Browser mit HTML
Sie können vom Browser aus testen, indem Sie beispielsweise die folgende HTML-Webseite verwenden:
<!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>
Sehr sehr nett. 1 kleines problem: die benutzer der website haben diese scrips, launchers und mime-typen nicht. Sie müssen sie also auf irgendeine Weise von der Website aus bereitstellen. Mit navigator.registerProtocolHandler sollte es möglich sein, Software zu installieren. Aber es sieht sehr, sehr schön aus :-D
Rinzwind
@ Rinzwind Nun, ein Skript, das die Schritte 1, 2 und 3 automatisiert, kann den Benutzern auf der Website bereitgestellt werden, bevor sie den app://Schema-Handler verwenden. Mit der exec()Funktion von PHP zum Beispiel kann dieses Skript dazu gebracht werden, im Browser ausgeführt zu werden.
Radu Rădeanu
exec () wird serverseitig und nicht clientseitig ausgeführt. Wenn Sie es auf Client-Seite versuchen, werden Sie feststellen, dass die Sicherheit des Browsers die Ausführung der Skripte verhindert
NGRhodes
1
Cool! Denken Sie daran radu, Ihren Namen in zu ändern appurl.desktop. Wie Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
@ RaduRădeanu Ist es möglich, ein Skript anstelle einer App zu starten? Zum Beispiel, app://shell-exec myscript.shwo Shell-Exec ist nur ein anderes Skript ( #!/bin/sh "$@" exec "$SHELL")
Khurshid Alam
5
Ja, es heißt "Web-based Protocol Handler". Sie benötigen Chrome 13 oder Firefox 3.0 oder höher. Ich habe gesehen, wie LibreOffice damit geöffnet wurde.
Sowohl Mozilla als auch updates.html5rocks haben eine Erklärung, wie dies funktioniert. (Öffnen Sie in Chrome / Chromium chrome://settings/handlersund es wird eine Liste der aktuellen Handler angezeigt. Firefox listet sie in auf about:config.)
Teile aus dem 1. Link:
Registrieren
Das Einrichten einer Webanwendung als Protokollhandler ist kein schwieriger Prozess. Grundsätzlich verwendet die Webanwendung registerProtocolHandler (), um sich beim Browser als potenzieller Handler für ein bestimmtes Protokoll zu registrieren. Beispielsweise:
Die URL-Vorlage, die als Handler verwendet wird. Das "% s" wird durch die href des Links ersetzt und ein GET wird für die resultierende URL ausgeführt.
Der benutzerfreundliche Name für den Protokollhandler.
Wenn ein Browser diesen Code ausführt, sollte er dem Benutzer eine Eingabeaufforderung anzeigen, in der er um Erlaubnis gebeten wird, dass sich die Webanwendung als Handler für das Protokoll registrieren darf. Firefox zeigt eine Eingabeaufforderung in der Benachrichtigungsleiste an.
Beispiel
<!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>
Nett. Gibt es eine Möglichkeit, Parameter an die lokale App zu übergeben?
AlikElzin-kilaka
1
Dies scheint Apps wie einen Webmailer zu erlauben, aber keine externen (lokalen) Anwendungen.
Geek-Merlin
Lesen Sie die Details hier und hier . Außerdem werden Sie beim ersten Link feststellen, dass die schemeAnzahl auf wenige beschränkt ist. Die akzeptierte Lösung bietet eine bessere Auflösung (natürlich mit einigen erforderlichen Anpassungen).
Antworten:
Ja, Sie können einen neuen Protokoll-Handler in Ihrem Ubuntu hinzufügen. Die folgende Methode zeigt Ihnen, wie Sie den Prozess des Öffnens einer Anwendung als
app://[application_name]
Protokoll-Handler in Ubuntu registrieren .1. Erstellen Sie ein Application Launcher-Skript
In einem Terminallauf:
Dieser Befehl erstellt ein
bin
Verzeichnis in Ihremhome
Ordner, falls Sie es noch nicht haben.Nach dem Lauf:
Dadurch wird die neue Datei
open_app.sh
in gedit erstellt.Kopieren Sie das folgende Skript und fügen Sie es in die neu erstellte Datei ein:
Speichern Sie die Datei und schließen Sie sie.
Gehe zurück ins Terminal und renne:
um Ausführungszugriff für das Skript zu gewähren.
2. Erstellen Sie eine .desktop-Datei für den Anwendungsstarter
Jetzt müssen Sie ein .desktop-Startprogramm für das obige Skript erstellen und Ubuntu anweisen, dieses Startprogramm als
app://
Protokollhandler zu verwenden. Erstellen Sie eine/usr/share/applications/appurl.desktop
Datei mit dem folgenden Befehl:und füge den folgenden Inhalt hinzu:
Speichern Sie die Datei und schließen Sie sie.
3. Aktualisieren Sie die Datenbank der MIME-Typen
In der Datei über die Linie
MimeType=x-scheme-handler/app;
Registerapp://
Schema Handler, aber es arbeiten machen wir MIME - Typen Datenbank - Cache aktualisieren sollte Befehl ausführen:4. Vom Terminal aus testen
Jetzt sollte alles funktionieren. Um zu testen, ob es vom Terminal aus funktioniert, führen Sie zum Beispiel den folgenden Befehl aus:
4. Testen Sie den Browser mit HTML
Sie können vom Browser aus testen, indem Sie beispielsweise die folgende HTML-Webseite verwenden:
Das Ergebnis:
quelle
app://
Schema-Handler verwenden. Mit derexec()
Funktion von PHP zum Beispiel kann dieses Skript dazu gebracht werden, im Browser ausgeführt zu werden.radu
, Ihren Namen in zu ändernappurl.desktop
. WieExec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
wo Shell-Exec ist nur ein anderes Skript (#!/bin/sh "$@" exec "$SHELL"
)Ja, es heißt "Web-based Protocol Handler". Sie benötigen Chrome 13 oder Firefox 3.0 oder höher. Ich habe gesehen, wie LibreOffice damit geöffnet wurde.
Sowohl Mozilla als auch updates.html5rocks haben eine Erklärung, wie dies funktioniert. (Öffnen Sie in Chrome / Chromium
chrome://settings/handlers
und es wird eine Liste der aktuellen Handler angezeigt. Firefox listet sie in aufabout:config
.)Teile aus dem 1. Link:
Registrieren
Das Einrichten einer Webanwendung als Protokollhandler ist kein schwieriger Prozess. Grundsätzlich verwendet die Webanwendung registerProtocolHandler (), um sich beim Browser als potenzieller Handler für ein bestimmtes Protokoll zu registrieren. Beispielsweise:
Wo die Parameter sind:
Wenn ein Browser diesen Code ausführt, sollte er dem Benutzer eine Eingabeaufforderung anzeigen, in der er um Erlaubnis gebeten wird, dass sich die Webanwendung als Handler für das Protokoll registrieren darf. Firefox zeigt eine Eingabeaufforderung in der Benachrichtigungsleiste an.
Beispiel
quelle
scheme
Anzahl auf wenige beschränkt ist. Die akzeptierte Lösung bietet eine bessere Auflösung (natürlich mit einigen erforderlichen Anpassungen).