Retourner aux forums || Retourner au forum Linux.gui

Linux.gui : KDE / Konsole : Changer le nom d'une session depuis la console

Posté par Cali_Mero () le 30 janvier 2006
0
Bonjour,

Je suis sous KDE 3.5. Je cherche à faire l'équivalent de ce qui est possible sous windows grâce à la commande TITLE (certains parmi vous connaissent, sûrement). Dans une console windows, la commande TITLE permet de changer le nom de la fenêtre en cours depuis la console elle-même (et ne fait rien si elle est appelée dans un autre contexte).

Je souhaite reproduire ce comportement dans un script shell pour le nom de l'onglet Konsole exécutant le script en question.

Je sais qu'on peut changer le nom d'un onglet konsole via un simple appel dcop :


dcop konsole-nnnn session-x renameSession "le nouveau nom"


Cela fonctionne très bien, sauf que le "nnnn" et le "x" sont variables suivant le contexte et que je ne sais pas les détecter de manière automatisée.

D'où le problème suivant :

- Comment détecter la konsole en cours ? Et dans celle-ci, comment détecter l'onglet en cours ? Sachant que je veux obtenir la konsole/l'onglet qui exécute le script, et non la konsole/l'onglet qui a le focus.

- Est-il possible de généraliser cela aux onglets konsole incorporés à d'autres applications KDE (kparts) ?

Merci d'avance.

--
#define MAGIC 0xdefaced /* I should've patented this number -cliph */
> Lire le message (7 commentaires, moyenne: 2,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Ou la la

Posté par -=[ Benoit Plessis ]=- (page perso, ) le 30/01/2006 à 14:41. (lien). Évalué à 2.

Dans quoi tu t'es lancé toi ....

Tout les terminaux (graphiques) ou presques reconnaissent une sequence d'echappement permettant de fixer le titre de la console.
Exemple dans mon .bashrc c'est fait via le paragraphe suivant:

if [ x"$MC_SID" == "x" ]; then
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
;;
esac
fi

Le if et le case etant la pour eviter de merder dans MC (midnight commander) et
dans les VT

En resumé tu peut tester ainsi:
echo -ne "\033]0;Pr0t\007"

--
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libr
  • [^]Re: Ou la la

    Posté par Cali_Mero () le 30/01/2006 à 18:24. (lien). Évalué à 2.

    Salut,

    Dans quoi tu t'es lancé toi ...

    Dans un truc à priori tout simple qui ne doit pas l'être tant que ça :-) L'astuce que tu donnes ne semble pas fonctionner dans mon cas. (cas tout simple : j'ouvre une konsole, ~ echo -ne "\033]0;Pr0t\007" , aucun résultat).

    Je ne sais pas pourquoi ça ne marche pas... Mais merci quand même pour l'idée.

    --
    #define MAGIC 0xdefaced /* I should've patented this number -cliph */
    • [^]Re: Ou la la

      Posté par -=[ Benoit Plessis ]=- (page perso, ) le 01/02/2006 à 10:09. (lien). Évalué à 2.

      Testé et fonctionnel meme dans une konsole.
      Le probleme vient surement du fait que tu as deja un prompt qui redefini le
      texte.

      essaye comme ceci:
      export PROMPT_COMMAND=''
      export PS1="\u@\h:\w $"
      echo -ne "\033]0;Pr0t\007"

      --
      Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libr
      • [^]Re: Ou la la

        Posté par Cali_Mero () le 01/02/2006 à 16:05. (lien). Évalué à 2.

        Exactement. Je viens de voir ça dans mon .bashrc :


        # If this is an xterm set the title to user@host:dir
        case "$TERM" in
        xterm*|rxvt*)
        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
        ;;
        *)
        ;;
        esac


        Qui rejoint l'astuce que tu me conseilles.

        Et comme je ne connaissais pas PROMPT_COMMAND j'ai cherché un peu, car ce bout de script explique le comportement normal de konsole qui ne me satisfait pas pleinement ( le user@host: cwd de la barre de titre, mais qui a l'intéressante faculté d'être toujours exact même quand je change de répertoire via un cd ).

        J'en déduis donc que ton astuce permet de modifier le titre de la fenêtre de konsole, ce qui n'est pas ce que je souhaite (je veux agir sur le nom de l'onglet). Mais ça m'aide quand même !

        http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html : PROMPT_COMMAND est une commande lancée par bash avant chaque affichage d'une invite de commande, d'où la mise à jour constante de l'information.

        Pour référence, si d'autres curieux/bricoleurs passent par ici, j'aurai eu la puce à l'oreille sans poser de question si j'avais connu cette variable du shell ( voir le lien ci-dessus ) et surtout si j'avais connu la commande declare qui appelée de cette manière liste toutes les variables du shell courant, y compris PROMPT_COMMAND :-)

        Merci pour ton aide !

        --
        #define MAGIC 0xdefaced /* I should've patented this number -cliph */
        • [^]Re: Ou la la

          Posté par -=[ Benoit Plessis ]=- (page perso, ) le 02/02/2006 à 23:46. (lien). Évalué à 2.

          en bash tu as aussi set qui est un peut plus bavard

          --
          Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libr

La réponse est la ;)

Posté par gnumdk (page perso, ) le 30/01/2006 à 16:51. (lien). Évalué à 5.

echo $KONSOLE_DCOP_SESSION

  • [^]Re: La réponse est la ;)

    Posté par Cali_Mero () le 30/01/2006 à 18:36. (lien). Évalué à 2.

    Merci bien gnumdk... C'est bien ça, une variable d'environnement, c'est si simple que je n'y avais même pas pensé :-)

    --
    #define MAGIC 0xdefaced /* I should've patented this number -cliph */

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.gui