web-dev-qa-db-fra.com

Le script Bash ne peut pas être exécuté avec un raccourci clavier

J'ai ce script dans mon /home/username/

Et je peux l'exécuter via un terminal avec le code suivant

./script.sh

ou

sh script.sh

ça marche (il a des permissions exécutables)

mais je ne peux pas l'attribuer à un raccourci clavier. J'ajoute les raccourcis avec l'onglet "raccourci personnalisé" des raccourcis clavier. Et aussi essayé avec xbindkeys, aussi.

Ce que j’ai essayé jusqu’à présent, c’est de les ajouter à la commande de la touche de raccourci.

bash "/script.sh"
bash "./script.sh"
bash "home/username/script.sh"
home/username/script.sh
sh "/script.sh"
"/script.sh"
/script.sh
gnome-terminal "/home/username/script.sh

et beaucoup d'autres dont je ne me souviens plus.

Quelqu'un peut-il dire le problème?

4
afedersin

Pour ajouter un script à un raccourci clavier:

  1. Sauf si le script est en $PATH (comme ~/bin), utilisez le chemin complet pour le script, n'utilisez pas ~ ni les chemins relatifs.
  2. Si vous utilisez le chemin complet, commencez (comme toujours) par une barre oblique, par exemple:

    sh /home/username/script.sh
    

    Votre exemple ne le fait pas :)

  3. Si votre script est exécutable, il suffit de le chemin complet fera:

    /home/username/script.sh
    

    si ce n'est pas le cas, utilisez le langage précédent, par exemple:

    sh /home/username/script.sh
    

Quel est le problème dans vos exemples

Dans les tentatives que vous montrez, vous utilisez des chemins incorrects (home/some_dir n’est pas un répertoire valide sans barre oblique de départ), vous utilisez un autre chemin que vous voulez utiliser (/script.sh fait référence à votre répertoire racine) ou vous utiliser des chemins relatifs. Aucun d'entre eux ne fonctionnera à partir d'une touche de raccourci.

Les mêmes règles s'appliquent aux applications de démarrage en passant.



MODIFIER

Un problème supplémentaire dans ce cas:

Votre cas particulier; en utilisant une commande xdotool dans le script

D'après un commentaire, nous avons découvert que le script que vous exécutez utilise une commande xdotool en appuyant sur les touches:

#!/bin/bash
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super 

Appuyer virtuellement sur les touches depuis une combinaison de touches de raccourci entraînera presque toujours des conflits de touches, puisque les touches vous physiquement appuyez sur, sera combiné avec ceux que vous appuyez virtuellement .

Que faire

Une façon d’éviter le problème consiste à donner à vos doigts le temps de "laisser" les touches, afin d’éviter que les touches réelles ne soient combinées avec les touches virtuelles. Même dans ce cas, vous devez libérer le raccourci après l'avoir appuyé. Le script devient alors:

#!/bin/bash
# here we add a little break to give your fingers 
# the opportunity to release the keys
sleep 0.5
xdotool keydown Super key w
sleep 0.5 
xdotool keyup Super

Remarque

Si le problème persiste, augmentez le temps de la ligne 4 (et appuyez brièvement sur la touche de raccourci).

4
Jacob Vlijm