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!
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!
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 .
In einem Terminallauf:
mkdir -p bin
Dieser Befehl erstellt ein bin
Verzeichnis in Ihrem home
Ordner, falls Sie es noch nicht haben.
Nach dem Lauf:
gedit ~/bin/open_app.sh
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:
#!/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.
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:
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.
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
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'
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://
Schema-Handler verwenden. Mit der exec()
Funktion von PHP zum Beispiel kann dieses Skript dazu gebracht werden, im Browser ausgeführt zu werden.
radu
, Ihren Namen in zu ändern appurl.desktop
. Wie Exec=/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 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:
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>
scheme
Anzahl auf wenige beschränkt ist. Die akzeptierte Lösung bietet eine bessere Auflösung (natürlich mit einigen erforderlichen Anpassungen).