web-dev-qa-db-fra.com

Lancer un programme en gardant le focus sur le terminal

Je suis en train de créer un script qui combine la prise d’entrée de la ligne de commande avec le lancement d’autres programmes. Donc, le script va comme ceci:

...
launch program
Read input from the terminal
...

Le problème est que lorsque je lance le programme (même si je le lance en arrière-plan), le terminal perd le focus et le programme lancé devient actif.

Comment lancer un programme en gardant le focus sur le terminal avec une commande Ubuntu par défaut?

Je vous remercie

6
Vndtta

Si vous connaissez le titre du terminal, vous pouvez y revenir après avoir ouvert le programme à l’aide de la commande wmctrl (il ne semble même pas que le nouveau programme soit au premier plan si la fenêtre s'ouvre instantanément et vous n'avez pas besoin de la commande sleep):

wmctrl -a <WIN-TITLE>

<WIN-TITLE> ne doit pas obligatoirement être le titre complet. Par exemple, si le titre était TESTING, TEST fonctionnerait.

En fonction du temps nécessaire pour ouvrir le programme, vous devrez peut-être utiliser la commande sleep pour retarder le basculement vers le terminal. Vous pouvez l'utiliser comme ceci: sleep <SECONDS>s.

Pour définir le titre du terminal à partir d'un script, utilisez:

NAME="NEW_TITLE"; echo -en "\033]0;$NAME\a"

Voir cette réponse pour plus d'informations.

Par exemple, voici un petit script pour ouvrir un programme en arrière-plan:

NAME="Opening program..."; echo -en "\033]0;$NAME\a"
$1&
sleep 0.75s
wmctrl -a "Opening program"
2
iBelieve