Forum Programmation.shell Cherche astuce pour remettre la console en premier plan

Posté par .
Tags : aucun
1
2
jan.
2009
Bonjour,

J'ai réalisé un script d'encodage vidéo sous bash.

J'aimerais le compléter par du code me permettant de remettre la console en premier plan dès que la console sollicite une réponse de ma part (typiquement dès que la commande "read" est lancée, la console revient automatiquement au premier plan).

Merci d'avance pour vos réponses.
  • # wmctrl

    Posté par . Évalué à 2.

    Salut,

    tu peux utiliser wmctrl (window manager control), qui permet de manipuler les fenêtres (largeur, hauteur, position, priorité,...)

    http://pwet.fr/man/linux/commandes/wmctrl
  • # Zenity, gdialog & co ...

    Posté par . Évalué à 3.

    Réécrit les IO en utilisant zenity ou gdialog, ça doit "popupper" des boites de dialogues en temps voulus ...
    • [^] # Re: Zenity, gdialog & co ...

      Posté par . Évalué à 1.

      Merci mais mon script est purement orienté 'console'
      • [^] # Re: Zenity, gdialog & co ...

        Posté par . Évalué à 2.

        pas tant que ça si tu le lances sous X et que tu veux le mettre au premier plan ... après tu peux toujours ajouter un switch pour changer le comportement en fonction d'un paramètre ou d'une variable d'environnement genre :
        function getString(){
                if [ ! -z "$GRAPHIQUE" ] then
                   
                       echo "$1" ; read a;
                else
                       a=$(zenity --entry  --title="Entrez ... "   --text="$1" )
                fi
               echo "$a"
        }
        GRAPHIQUE="true"
        valeur="$(getString "entrez le nom du fichier ...")"
        
        
        • [^] # Re: Zenity, gdialog & co ...

          Posté par . Évalué à 1.

          Merci, je vais regarder ça mais je préfèrerais me passer de zenity.

          Je pense à autre chose, c'est un peu alambiqué :

          Mon script a son PID (XXXX). Est-il possible de remonter au PID du terminal qui l'accueille (YYYY) pour qu'avec un wmctrl -lp je puisse remonter au titre de la fenêtre du terminal et passer ce dernier au premier plan avec un wmctrl -R ?
          • [^] # Re: Zenity, gdialog & co ...

            Posté par . Évalué à 2.

            À première vue le WID de wmctrl manipule plutôt des identifiants de fenêtres que des PID directement, le plus simple c'est sûrement de changer le titre de ta fenêtre en un nom que tu maîtrise et de le matcher avec wmctrl.

            Après t'as peut être moyen de trouver l'ID de la fenêtre grâce au PID, mais je le connais pas, il peut potentiellement en avoir plusieurs ... (des fenêtres pour un PID donné) Pareil pour les instances de ton script j'imagine cela dit ...
            • [^] # Re: Zenity, gdialog & co ...

              Posté par . Évalué à 1.

              Y-a-t-il moyen de renommer à la volée une console :

              1- via la ligne de commande (et pas "à la main" via les menus)
              2- via une commande indépendante du nom de la console utilisée

              ???
              • [^] # Re: Zenity, gdialog & co ...

                Posté par . Évalué à 2.

                Ouaip, à priori beacoup de terminaux sont compatible xterm, et c'est possible sous xterm avec des "séquences d'échappement" interprétées par le terminal :

                http://tldp.org/HOWTO/Xterm-Title.html

                En interactif ça donne ça :
                PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: -${PWD}\007"'

                La commande doit être exécutée genre à la fin des autres commandes.

                En pas interactif dans un script, je viens de tester avec ça :

                #!/bin/bash

                echo -ne >&2 '\033]0;'"toubidou"'\007\c'

                read a


                et effectivement ça marche, dans un gnome-terminal en l'occurence.

Suivre le flux des commentaires

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