Question Est-il possible d'ouvrir une application Ubuntu à partir de HTML?


Je crée une page Web dès maintenant et je me demande s'il est possible de saisir une commande en HTML qui ouvrira une application Ubuntu installée comme Chromium ou une fenêtre de terminal ou Nautilus.

Est-ce que quelque chose comme cela est possible? Merci!


12
2017-08-10 14:51


origine


Sous Windows, c'était le cas, mais seulement si vous utilisiez IExplorer, mais en raison du fait qu'une page Web est du texte uniquement avec un peu de magie côté serveur, cela limite la capacité d'un navigateur. Je suis sûr que quelqu'un va trouver quelque chose. Application Java peut être? - SimplySimon
Vous devriez peut-être préciser dans quel environnement vous vous trouvez, car il est très vaste en ce moment. Par exemple, vous pouvez utiliser une page HTML dans webkit-webview qui pourrait être connectée à une application basée sur Python, etc. - fossfreedom♦
Hmmm ... j'ai supposé que le HTML était pur @fossfreedom>: - D - Rinzwind
Oui, il ne s'agit que d'une page Web HTML de base. Aucune base de données ou quoi que ce soit. - I Heart Ubuntu
Si c'est une aide, le site sera pour les utilisateurs de Linux. Tout le monde peut l'utiliser naturellement, mais je le conçois strictement pour les utilisateurs Linux / Ubuntu. Semble assez simple Lancez une application Ubuntu comme le terminal ou la calculatrice à partir d'un lien sur une page Web. Par exemple, si je fais "apt: // chrome-browser", la page Chrome des centres logiciels Ubuntu s'ouvre. Nous savons donc que nous pouvons au moins lancer l'USC à partir de HTML. Qu'en est-il des applications Ubuntu / linux? - I Heart Ubuntu


Réponses:


Oui, vous pouvez ajouter un nouveau gestionnaire de protocole dans votre Ubuntu. La méthode suivante vous montrera comment enregistrer le processus d'ouverture d'une application en tant que app://[application_name] gestionnaire de protocole dans Ubuntu.

1. Créer un script de lancement d'application

  • Dans un terminal exécuté:

    mkdir -p bin
    

    Cette commande fera un bin répertoire dans votre home dossier si vous ne l'avez pas déjà.

  • Après exécution:

    gedit ~/bin/open_app.sh
    

    Cela va créer le nouveau fichier open_app.sh en gedit.

  • Copiez et collez le script suivant dans le nouveau fichier créé:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
    
  • Enregistrez le fichier et fermez-le.

  • Retournez dans le terminal et lancez:

    chmod +x ~/bin/open_app.sh
    

    pour accorder un accès d'exécution au script.

2. Créez un fichier .desktop pour le lanceur d'application

Maintenant, vous devez créer un lanceur .desktop pour le script ci-dessus et dire à Ubuntu d'utiliser ce lanceur app:// gestionnaire de protocole. Créer /usr/share/applications/appurl.desktop fichier en utilisant la commande suivante:

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

et ajoutez le contenu suivant:

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

Enregistrez le fichier et fermez-le.

3. Actualiser la base de données des types MIME

Dans le fichier ci-dessus, la ligne MimeType=x-scheme-handler/app; registre app:// gestionnaire de schéma, mais pour que cela fonctionne, nous devrions mettre à jour le cache de base de données de types MIME en exécutant la commande:

sudo update-desktop-database 

4. Test du terminal

Maintenant, tout devrait fonctionner. Pour tester qu'il fonctionne à partir du terminal, exécutez par exemple cette commande:

xdg-open 'app://gedit'

4. Tester depuis le navigateur en utilisant HTML

Vous pouvez tester depuis un navigateur en utilisant par exemple la page Web HTML suivante:

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

Le résultat:

app://


17
2017-08-14 06:43



Très très gentil. 1 léger problème: les utilisateurs du site Web ne disposeront pas de ces scripts, lanceurs et types de mimes. Donc, vous devez également les fournir d'une certaine manière à partir du site Web. Avec navigator.registerProtocolHandler, il ne devrait pas être possible d'installer un logiciel. Mais ça a l'air très très bien :-D - Rinzwind
@Rinzwind Eh bien, un script qui automatise les étapes 1, 2 et 3 peut être fourni aux utilisateurs qui utilisent le site Web avant d'utiliser app:// gestionnaire de schéma. En utilisant exec() fonction de PHP, par exemple, ce script peut être fait pour fonctionner dans le navigateur. - Radu Rădeanu
exec () exécutera le côté serveur, pas le côté client. Si vous essayez le côté client, vous verrez que la sécurité des navigateurs empêchera les scripts de fonctionner - NGRhodes
Cool! N'oubliez pas de changer radu à ton nom appurl.desktop. Comme: Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
@ RaduRădeanu Est-il possible de lancer un script au lieu d'une application? Par exemple app://shell-exec myscript.sh où shell-exec est juste un autre script (#!/bin/sh "$@" exec "$SHELL") - Khurshid Alam


Oui, il est appelé "gestionnaires de protocoles Web". Vous avez besoin de Chrome 13 ou Firefox 3.0 ou supérieur. Je l'ai vu utilisé pour ouvrir LibreOffice.

Tous les deux Mozilla et updates.html5rocks avoir une explication sur la façon dont cela fonctionne. (Ouvrir dans Chrome / Chrome chrome://settings/handlers et il affichera une liste des gestionnaires actuels. Firefox les listera about:config.)

Parties du 1er lien:

Enregistrement

Configurer une application Web en tant que gestionnaire de protocole n'est pas un processus difficile. Fondamentalement, l'application Web utilise registerProtocolHandler () pour s'enregistrer auprès du navigateur en tant que gestionnaire potentiel pour un protocole donné. Par exemple:

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

Où les paramètres sont:

  • Le protocole.
  • Le modèle d'URL, utilisé comme gestionnaire. Le "% s" est remplacé par le href du lien et un GET est exécuté sur l'URL résultante.
  • Nom convivial du gestionnaire de protocole.

Lorsqu'un navigateur exécute ce code, il doit afficher une invite à l'utilisateur, lui demandant l'autorisation d'autoriser l'application Web à s'inscrire en tant que gestionnaire du protocole. Firefox affiche une invite dans la zone de notification.

Exemple

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

5
2017-08-13 19:25



Agréable. Existe-t-il un moyen de transmettre les paramètres à l'application locale? - AlikElzin-kilaka
Cela semble autoriser des applications comme un webmailer, mais aucune application externe (locale). - aexl