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.

Ist so etwas möglich? Vielen Dank!


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:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • Speichern Sie die Datei und schließen Sie sie.

  • Gehe zurück ins Terminal und renne:

    chmod +x ~/bin/open_app.sh
    

    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.desktopDatei mit dem folgenden Befehl:

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

und füge den folgenden Inhalt hinzu:

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

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

Das Ergebnis:

app: //


2
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:

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

Wo die Parameter sind:

  • Das Protokoll.
  • 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).
Fr0zenFyr

Für die Neugierigen sei auf die Spezifikationen
verwiesen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.