Arrêter une appli lancée depuis un terminal (en arrière plan)

Résolu/Fermé
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 - Modifié le 2 avril 2017 à 08:14
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 4 avril 2017 à 22:48
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 :

#!/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é..."


A voir également:

2 réponses

Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
Modifié le 4 avril 2017 à 13:07
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
2
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
Modifié le 4 avril 2017 à 13:14
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
0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1 > Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020
Modifié le 4 avril 2017 à 13:39
Par contre, si je lance le script avec KODI et avec l'addon "Advanced Launcher".

L'appui sur Echap n'est plus détecté.

Comme si "Advanced Launcher" coupait le script.
0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
4 avril 2017 à 21:27
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).
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
4 avril 2017 à 22:48
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 avril 2017 à 09:34
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.

0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
3 avril 2017 à 10:29
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 ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020
3 avril 2017 à 10:49
Et avec Alt+Tab tu ne peux pas ramener le terminal au 1er plan ?
0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
3 avril 2017 à 10:51
oui mais, j'aimerais que cela soit transparent, mon but c'est de lancer Chrome depuis kodi (pas du terminal).

--
0
Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020 1
3 avril 2017 à 11:35
ce qu'il me faut c'est :

détecter appui sur echap -> variable dans fichier -> read variable dans le fichier

--
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > Paullux_1er Messages postés 122 Date d'inscription vendredi 10 février 2017 Statut Membre Dernière intervention 28 janvier 2020
4 avril 2017 à 09:09
Essaie de regarder du côté de la commande
trap
et voir si tu peux l'adapter à ton cas…
0