Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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