#1 Le 17/06/2011, à 10:03
- SAKDOSS
Utiliser un terminal à partir de son ID
Bonjour à tous,
Je possède l'ID d'un gnome-terminal. Est-ce qu'à partir de cet ID, je peux faire exécuter des commandes à ce terminal ? Et si oui comment ?
En pratique je souhaite avoir un raccourci clavier qui trouve le 1er gnome-terminal ouvert et change son répertoire courant.
Merci d'avance !
Hors ligne
#2 Le 19/06/2011, à 22:35
- pode
Re : Utiliser un terminal à partir de son ID
Voici une solution :
#!/bin/bash
while getopts p: option
do
case "$option" in
p)
pid=$OPTARG
;;
*)
usage
exit 1
;;
esac
done
shift $(($OPTIND - 1))
if [[ -z ${pid} ]]; then
echo "pas de pid"
exit 1
fi
NOM_PROCESSUS="$(ps -p ${pid} -o command=)"
if [[ ${NOM_PROCESSUS} = *xterm ]]; then
NOM_PROCESSUS=xterm
elif [[ ${NOM_PROCESSUS} = *gnome-terminal ]]; then
NOM_PROCESSUS=gnome-terminal
elif [[ ${NOM_PROCESSUS} = *xfce4-terminal ]]; then
NOM_PROCESSUS=xfce4-terminal
else
echo "Le processus ${pid} ne correspond pas a xterm, gnome-terminal ou xfce4-terminal"
exit 1
fi
COMMANDE="$*"
if [[ -z ${COMMANDE} ]]; then
echo "pas de commande"
exit 1
fi
WINDOW_SOURCE="$(xdotool getactivewindow)"
if [[ -z ${WINDOW_SOURCE} ]]; then
echo "pas d'id pour la fenetre active"
exit 1
fi
WINDOW_CIBLE="$(xdotool search --all --pid ${pid} --class ${NOM_PROCESSUS} | head -n 1)"
if [[ -z ${WINDOW_CIBLE} ]]; then
echo "pas d'id pour la fenetre recherchee"
exit 1
fi
# activation fenetre cible
xdotool windowactivate ${WINDOW_CIBLE}
# execution de la commande dans la fenetre cible
xdotool type "${COMMANDE}"
xdotool key Return
# activation fenetre source
xdotool windowactivate ${WINDOW_SOURCE}
La limite de cette solution est que, quand on lance plusieurs instances de gnome-terminal, il n'y a qu'un seul PID.
Pareil pour xfce4-terminal.
Par contre, quand on lance plusieurs instances de xterm, on a bien plusieurs PID.
Donc, cette solution ne permet pas de spécifier, à partir du PID en entrée, dans quelle fenêtre de gnome-terminal ou de xfce4-terminal la commande va s'exécuter...
Hors ligne