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 2102 Date d'inscription Statut Membre Dernière intervention -
Flachy Joe Messages postés 2102 Date d'inscription Statut Membre Dernière intervention -
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é..."
A voir également:
- Arrêter une appli lancée depuis un terminal (en arrière plan)
- Youtube en arrière plan - Guide
- Arrière plan - Guide
- Commande terminal mac - Guide
- Arriere plan pc - Guide
- Appli plan hors ligne - Guide
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 :
EDIT ; version améliorée qui rend la main quand le programme est tué d'une autre manière :
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
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
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.
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 ?
comment faire que le clavier agissent sur le terminal et sur Chrome, voilà ma question ?
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';;
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
L'appui sur Echap n'est plus détecté.
Comme si "Advanced Launcher" coupait le script.
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).
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.