Arrêter une appli lancée depuis un terminal (en arrière plan)
Résolu
Paullux_1er
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
Flachy Joe Messages postés 2303 Statut Membre -
Flachy Joe Messages postés 2303 Statut Membre -
Bonjour,
J'ai écrit un petit script bash pour lancer YouTube en pleine écran sur l'écran de mon choix (j'ai un Dual Screen 2 x 1920 x 1080), la question que je me pose, c'est comment arrivé à couper le navigateur avec une touche (ici Echap).
Même en détectant l'appui de la touche Echap, il faut remettre le terminal au premier plan pour que ça coupe le navigateur.
Voici mon code :
Dans la condition de la boucle while, il y a entre les guillemets le retour de la touche Echap dans le Terminal. Si ça vous intéresse j'ai créé un autre petit script pour avoir la touche voulu :
J'ai écrit un petit script bash pour lancer YouTube en pleine écran sur l'écran de mon choix (j'ai un Dual Screen 2 x 1920 x 1080), la question que je me pose, c'est comment arrivé à couper le navigateur avec une touche (ici Echap).
Même en détectant l'appui de la touche Echap, il faut remettre le terminal au premier plan pour que ça coupe le navigateur.
Voici mon code :
#!/bin/bash
selection=$(zenity --question --ok-label="Écran 2" --cancel-label="Écran 1" --text="Choix Écran" --title="Où doit être afficher YouTube")
sortie=$?
case $sortie in
0) screen='1920,0';;
*) screen='0,0';;
esac
echo $screen
/opt/google/chrome/google-chrome --user-data-dir="monitor2" --window-position=$screen --start-fullscreen --profile-directory="standard" --app="https://www.youtube.com/tv#/" &
read -n 1 touche
while
[ "$touche" != "" ]
do
read -n 1 touche
echo "la touche appuyer est $touche"
done
echo "Programme achevé..."
kill %1
exit 0
Dans la condition de la boucle while, il y a entre les guillemets le retour de la touche Echap dans le Terminal. Si ça vous intéresse j'ai créé un autre petit script pour avoir la touche voulu :
#!/bin/bash
read -n 1 touche
while
[ "$touche" != "" ]
do
read -n 1 touche
done
echo $touche
echo "Programme achevé..."
2 réponses
-
Salut,
tu peux utiliser xinput pour faire un "keylogger" qui détecte tous les appuie de touche cf https://blog.rom1v.com/2011/11/keylogger-sous-gnulinux-enregistrer-les-touches-tapees-au-clavier/
exemple :#!/bin/bash id_clavier=8 #à trouver avec xinput list touche=9 #touche ESC xterm & pid_xterm=$! xinput test $id_clavier | grep $touche -m 1 >/dev/null kill $pid_xterm
EDIT ; version améliorée qui rend la main quand le programme est tué d'une autre manière :#!/bin/bash id_clavier=8 #à trouver avec xinput list touche=9 #touche ESC xterm & pid_xterm=$! (xinput test $id_clavier | grep $touche -m 1 >/dev/null; kill $pid_xterm) & pid_xin=$! while kill -0 $pid_xterm >/dev/null 2>&1 do sleep 0.2 done; kill $pid_xin 2>/dev/null
NB : ça détecte la touche ESC quelque soit la fenêtre en avant plan, le terminal, le programme lancé ou n'importe quelle autre.
;-) Flachy Joe ;-)
"Qui ne se plante jamais n'a aucune chance de pousser !" Graf anonyme-
Merci ça marche...
Aujourd'hui, le code est :
#!/bin/bash
id_clavier=8 #à trouver avec xinput list
touche=9 #touche ESC
selection=$(zenity --question --ok-label="Écran 2" --cancel-label="Écran 1" --text="Choix Écran" --title="Où doit être afficher YouTube")
sortie=$?
case $sortie in
0) screen='1920,0';;- ) screen='0,0';;
esac
echo $screen
/opt/google/chrome/google-chrome --user-data-dir="monitor2" --window-position=$screen --start-fullscreen --profile-directory="standard" --app="https://www.youtube.com/tv#/" &
pid_ChrYTTV=$!
xinput test $id_clavier | grep $touche -m 1 >/dev/null
kill $pid_ChrYTTV
exit 0 -
J'ai essayé de crée un fichier *.desktop pour lancer Youtube, la prise en compte de l'écran ne marche plus.
Et lorsque je lance le script depuis Kodi, xinput est bien lancé mais le script ne coupe pas et reste charger dans le système (le script et xinput) ; sans interrompre chrome, comme si xinput serait inhiber, Echap est utilisé par Kodi, ça doit être ça. Il faudrait couper Kodi à l'entrée et le restaurer à la sortir du script.
Sinon si je lance le script depuis le fichier *.desktop ou directement, la touche F11 coupe Chrome, xinput et le script (en plus de Echap). -
il faut ajuster le grep pour que ça ne corresponde pas à "tous les codes ayant un 9". les touche Y (code 29), F11 (95) et F12(96), entre autres, doivent avoir le même effet actuellement.
Avec la "version améliorée" de l'astuce, le script devrait se terminer correctement.
xinput espionne l’événement clavier mais le laisse passer donc la touche ESC restera interprétée par la fenêtre en avant-plan.
-
-
Salut,
La variable "${!}" contient le PID de la dernière commande lancée en arrière-plan.
Il te suffit de la récupérer après avoir lancé ta commande.
-
Oui, mais ce qui se passe c'est le terminal qui passe en arrière plan et comme le focus est sur Chrome, le terminal ne détecte plus le clavier, j'ai essayé d'utiliser xbindkeys sans réel succès ou d'utiliser parallel sans plus de succès.
comment faire que le clavier agissent sur le terminal et sur Chrome, voilà ma question ?
-
-
-