Forum Astuces.divers [X/KDE] Scripter le terminal sous KDE

Posté par (page perso) .
Tags : aucun
1
19
juin
2003
Il est possible de piloter l'émulateur de terminal KDE (Konsole) à distance, en utilisant DCOP. Ca peut etre très très pratique.

Par exemple, je travaille à l'heure actuelle sur un jeu en reseau. Pour le tester, j'ai besoin de lancer souvent un serveur et deux clients qui se connectent. Chaque programme écrit des informations cruciales sur sa sortie standard, donc les lancer tous en arriere plan avec un simple & n'est pas une solution très pratique: toutes les sorties standards sont mélangées. En plus, ca m'oblige a quitter un par un mes clients et mon serveur. Au lieu de cela, j'ai utilisé un script pour lancer le serveur et chacun des clients dans une des sessions d'une fenêtre konsole. l'appel dcop newSession ouvre une nouvelle session sous konsole, et l'appel sendSession envoie du texte, comme s'il etait tape en ligne de commande. Voici mon script:


# launch konsole with remote dcop control enabled
konsole --script &
# process-id is used to generate the dcop name of konsole
kid=konsole-$!
echo Konsole is $kid
session="session-1"
# you need to add a small delay
sleep 0.5

echo Starting Camino server
# execute the server on the first session
dcop $kid $session sendSession "./camino --server --$players"
sleep 0.5

echo Starring Camino client phil
# create a new session
session=`dcop $kid konsole newSession`
# execute the first client in the second session
dcop $kid $session sendSession './camino --player phil'
sleep 0.5

echo Starring Camino client bob
# create a new session
session=`dcop $kid konsole newSession`
# execute the first client in the second session
dcop $kid $session sendSession './camino --player bob'


Le résultat, c'est un nouvelle konsole avec trois sessions, faisant tourner mon serveur et mes clients. Je peux passer de l'une à l'autre en utilisant shift+curseur droit ou gauche. Il me suffit de fermer la konsole pour tuer mes trois processus d'un coup.

Notons que pour des raisons de sécurité, la commande dcop sendSession n'est disponible que si on lance konsole avec l'option --script.

Là, j'ai utilisé dcop en shell mais il existes des bindings python, perl, c, c++, java...

Toutes les applications KDE peuvent être pilotées ainsi à distance. Cà permet de se faire des petits scripts intelligents.
  • # ?

    Posté par . Évalué à 1.

    [root@simGi2 a]# konsole --version Qt: 3.0.5 KDE: 3.0.3 Konsole: 1.1.3 [root@simGi2 a]# konsole --script konsole: Unknown option '--script'. konsole: Use --help to get a list of available command line options.
    • [^] # Re: ?

      Posté par . Évalué à 1.

      Bon je me réponds à moi-même
      Apparemment, ça marche à partir de kde 3.1
  • # Re: Scripter le terminal sous KDE

    Posté par (page perso) . Évalué à 1.

    Pour ce genre de choses, on peut aussi faire ça en unix "de base", avec mkfifo, et des cat sur les fifo en question dans différentes fenêtres.
    • [^] # Re: Scripter le terminal sous KDE

      Posté par (page perso) . Évalué à 1.

      Tu peux preciser ? Je saisis pas bien comment tu veux faire.
      • [^] # Re: Scripter le terminal sous KDE

        Posté par . Évalué à 1.

        Un truc de ce genre, je pense :

        mkfifo serveur.fifo
        mkfifo client1.fifo
        mkfifo client2.fifo

        ./ camino --server --$players > serveur.fifo &
        ./camino --player phil > client1.fifo &
        ./camino --player bob > client2.fifo &

        Ensuite, il suffit de faire un cat sur chaque fifo pour voir les différentes sorties.
        Unix, ça roulaizze à fond.
  • # Re: Scripter le terminal sous KDE

    Posté par (page perso) . Évalué à 1.

    mmm... j'ai peut-être mal compris le problème, mais pourquoi pas SSH ?

    OK OK, there is more than one way to do it, mais puisqu'il a été fait référence notamment à la sécurité...
    • [^] # Re: Scripter le terminal sous KDE

      Posté par (page perso) . Évalué à 1.

      J'ai l'impression que tu as mal compris le truc. Il s'agit de lancer sur la meme machine un serveur et trois clients, et de pouvoir les tuer facilement ensuite. Je vois pas trop ou ssh interviendrait ici (surtout que c'est des applis graphiques que je lance).

      Sinon, il parait qu'on peut faire la meme chose avec gnome-terminal, a coup de ligne de commande. C'est un truc du genre (j'ai pas la doc sous la main, donc a vous d'adapter):

      gnome-terminal --command='./camino --server --$players' --tab --command='./camino --player phil' --tab --command='./camino --player bob'
  • # Re: Scripter le terminal sous KDE

    Posté par . Évalué à 1.

    Tu peux aussi faire avec 3 xterm...

    xterm -e Serveur
    xterm -e clien
    ...

    et un control C pour tuer les 3 xterms...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.