web-dev-qa-db-fra.com

Demander avant d'exécuter le script dans Thunar

Nautilus ou PCManFM ont une option à vous demander avant d'exécuter des fichiers.

Puis-je avoir ça à Thunar?


Je poste ceci afin de fournir une réponse.

2
user47206

Basé sur le script Zenity fourni dans cette réponse ,

voyez que vous avez zenity installé

Sudo apt-get install zenity

créer un fichier exécutable appelé editorrun.sh avec ce contenu:

    #!/bin/bash

zenity --question --text="What to do with the executable file '$1'?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)bash -c "$1"
    ;;
    1)gedit $1
    ;;
esac

le rendre exécutable, puis l'ajouter à la liste des applications

gedit ~/.local/share/applications/edit-or-run.desktop

avec ce contenu:

[Desktop Entry]
Type=Application
Name=Edit-or-run
Icon=gedit
Categories=Utility;
MimeType=application/x-sh;application/x-executable;
Exec=bash -c 'path/to/the/script/editorrun.sh %f'

ajout du chemin d'accès au script dans Exec=bash -c 'path/to/the/script/editorrun.sh %f'. Ensuite, rendez cet exécutable.

Ensuite, faites de ce fichier desktop l'application par défaut pour les fichiers exécutables en sélectionnant un tel fichier, en allant dans ' Propriétés - Général - Ouvrir avec' et en sélectionnant Modifier ou exécuter .

enter image description here

Après cela, lorsque vous cliquez sur un exécutable, une boîte de dialogue apparaît

enter image description here

(Un petit problème: vous ne pouvez pas fermer la boîte de dialogue à ce stade: en utilisant le bouton Fermer la fenêtre, Esc ou Alt+F4 équivaut à --cancel-label option dans le script et ouvrira le fichier dans l'éditeur de texte.)


Éditer : concernant le "petit problème": pour éviter que le fichier ne soit ouvert pour édition via ce script de zénité (et étant donné que "ouvrir dans l'éditeur de texte" est une option très accessible de toute façon), on pourrait supprimer l'éditeur de texte du script et reformuler la question:

    #!/bin/bash

zenity --question --text="Do you REALLY want to EXECUTE this file?" \
       --ok-label=YES! \
       --cancel-label=No...

case $? in
    0)bash -c "$1"
    ;;
    1)
    ;;
esac

Ce qui vous donne ceci:

enter image description here

où "Oui" exécutera le script, tandis que toutes les autres options ne feront rien.

2
user47206