Ce que j'aimerais faire, c'est pouvoir démarrer des programmes externes à partir de liens sur un site Web local.
J'ai défini un gestionnaire de protocole personnalisé dans firefox en définissant les variables suivantes dans environ: config
network.protocol-handler.external.myprotocol;true
network.protocol-handler.warn-external.myprotocol;true
Ceci permet à Firefox d’ouvrir une boîte de dialogue "Lancer l’application" lorsque je clique sur un lien de la forme myprotocol:///path_to_program_I_want_to_run
, puis je navigue jusqu’au script Shell que je veux utiliser et indique à Firefox de l’exécuter. Malheureusement, le script ne semble pas être exécuté du tout.
J'ai défini les autorisations de fichiers sur 777, donc firefox ne devrait pas rencontrer de problèmes d'exécution.
Le script shell ne contenait à l'origine que la ligne
$1
L'idée étant que le chemin du lien serait passé en tant que premier argument et serait immédiatement exécuté en tant que programme. Cela a bien fonctionné lorsque j'ai exécuté le script moi-même à l'aide de commandes telles que
#./run_program.sh gedit
ou
#./run_program.sh /home/ciaran/test_program
Le script maintenant à des fins de test ne contient que la ligne
echo "testing" > /testing/file.txt
où 'test' est un répertoire avec 777 autorisations. Notez également que /testing/
est en fait situé à la racine de mon système de fichiers (même si je ne me souviens pas pourquoi je l'ai mis là!), Donc je ne me suis pas contenté de mélanger les chemins relatifs et absolus
Encore une fois, cela fonctionne parfaitement lorsque je le lance à partir du terminal et que file.txt
est créé au bon emplacement. Avec Firefox cependant, on me donne la possibilité de choisir une application à exécuter, je choisis ce script Shell et il ne semble rien faire. file.txt
n'est pas créé du tout, même si je ne vois aucun problème d'autorisation. Donc, Firefox ne semble tout simplement pas exécuter le script.
J'ai aussi essayé de changer mon about:config
pour qu'il contienne
network.protocol-handler.expose.camara;true
et
network.protocol-handler.app.camara;path/to/Shell/script
sans succès
Trouvé le problème
Je n'ai pas mis #!/bin/bash
en haut du fichier. Je pensais fondamentalement au script Shell de la même manière qu’un exécutable binaire ou quelque chose du genre, plutôt qu’à un script interprété, car je n’avais pas besoin de cette ligne pour l’exécuter directement dans le terminal. J'ai oublié que pour l'exécuter à partir d'un autre programme, il doit être exécuté via bash
Ainsi, une fois que cette ligne se trouve en haut du script, vous pouvez choisir le script Shell de firefox comme programme avec lequel vous souhaitez exécuter vos liens personnalisés. Ce lien sera correctement transmis au script en tant que premier argument.