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

Posté par  .
Étiquettes : aucune
0
30
jan.
2006
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.
  • # Ou la la

    Posté par  (site web personnel) . É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"
    • [^] # Re: Ou la la

      Posté par  . É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.
      • [^] # Re: Ou la la

        Posté par  (site web personnel) . É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"
        • [^] # Re: Ou la la

          Posté par  . É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 !
  • # La réponse est la ;)

    Posté par  (site web personnel) . Évalué à 5.

    echo $KONSOLE_DCOP_SESSION
    • [^] # Re: La réponse est la ;)

      Posté par  . É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é :-)

Suivre le flux des commentaires

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