Forum Programmation.shell Manipuler des fenêtres graphiques

Posté par  .
Étiquettes : aucune
2
21
oct.
2008
Bonjour,

je voudrais manipuler des fenêtres graphiques (les positionner sur l'écran et les redimensionner) à l'aide d'un script bash.

Par exemple, j'ouvre une fenêtre VLC : vlc file:///home/toto/maVideo.mpg : comment positionner cette fenêtre à une position donnée sur l'écran, et lui donner les dimensions que je veux ?

Je donne l'exemple de VLC, mais je cherche une solution générique, qui marche pour n'importe quelle fenêtre, est-ce que c'est possible ?

Merci d'avance !
  • # Option '-geometry' de X

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

    X-Window permet ce genre de choses, grace à l'option -geometry qui permet de préciser la taille d'une fenêtre (hauteur et largeur) ainsi que sa position.

    Par exemple :

    xclock -geometry 200x600+150+200

    largeur : 200 pixels
    hauteur : 200 pixels
    déport de 150 pixels depuis la gauche de l'affichage
    déport de 200 pixels depuis le haut de l'affichage

    Voir la page de manuel de X (man X) pour plus de détails.

    Attention, ton gestionnaire de fenêtre peut aussi avoir une politique de positionnement des fenêtres, cela peut interférer.
    • [^] # Re: Option '-geometry' de X

      Posté par  . Évalué à 2.

      salut Ellendhel,

      merci pour ces infos ! Effectivement avec xclock ça fonctionne (sous ubuntu 8.04).

      Par contre, avec VLC par exemple, l'option -geometrie n'est pas reconnue...
      j'imagine que pour cela il faudrait accéder à la fenêtre X-Window qui se trouve derrière la jolie fenêtre gnome... et ça, tu sais comment faire ?

      De plus, chez moi, man X :
      No manual entry for X
      • [^] # Re: Option '-geometry' de X

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

        Oui j'ai testé après coup, avec VLC cela ne fonctionne pas, c'est un cas particulier.

        La commande vlc -H | less donne les informations (à tester, je n'ai pas de fichier vidéo sous la main...).


        Window properties:
        --width Video width
        You can enforce the video width. By default (-1) VLC will adapt to the video characteristics.
        --height Video height
        You can enforce the video height. By default (-1) VLC will adapt to the video characteristics.
        --video-x Video X coordinate
        You can enforce the position of the top left corner of the video window (X coordinate).
        --video-y Video Y coordinate
        You can enforce the position of the top left corner of the video window (Y coordinate).


        Pour ce qui est de la page de manuel de X, il faudrait installer le paquet correspondant à ta distribution.

        Ou directement consulter la page originelle sur le site de X.org (en anglais) :

        http://ftp.x.org/pub/X11R7.0/doc/html/X.7.html
        • [^] # Re: Option '-geometry' de X

          Posté par  . Évalué à 2.

          Hum...
          Avec, gcalctool ça ne marche pas non plus, avec gedit non plus, avec gimp non plus...
          Par contre avec xcalc, xmore etc... ça fonctionne.

          Moi ce que je voudrais, c'est une solution générique (et non spécifique aux options de VLC ou telle ou telle application), pour dimensionner et positionner une fenêtre quelconque (en particulier les fenêtres GTK).

          Est-ce que ça existe ? J'imagine quand même.
          • [^] # Re: Option '-geometry' de X

            Posté par  . Évalué à 1.

            Logiquement, chaque toolkit a sa propre manière de faire. Tu devrais donc trouver des options communes aux applications Gtk, aux applications Qt, etc.

            Non?
            • [^] # Re: Option '-geometry' de X

              Posté par  . Évalué à 4.

              Toolkit ?
              En quoi le toolkit influe-t-il sur le gestionnaire de fenêtres ? (des hints ?)

              BeOS le faisait il y a 20 ans !

              • [^] # Re: Option '-geometry' de X

                Posté par  . Évalué à 2.

                Par défaut (i.e. sauf volonté contraire du WM), c'est l'application qui décide de la taille et de la position (ce qu'on nomme couramment "géométrie", dans la terminologie X) de ses fenêtres. Il est courant d'avoir un WM qui force le placement, moins d'en avoir un qui force la taille (tiling-WMs mis à part).

                Mais comme les applications ne sont pas chiennes, elles offrent généralement un moyen pour l'utilisation de décider de la géométrie de leurs fenêtres. Sauf que le développeur de l'application y pense rarement, et que c'est en fait le toolkit qui fournit l'option. A sa sauce.
    • [^] # Re: Option '-geometry' de X

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

      Grmbl, il faut lire "hauteur : 600 pixels" évidemment.

      Relecture trop rapide...
  • # wmctrl

    Posté par  . Évalué à 3.

    Tu as la commande wmctrl qui permet d'interagir avec les fenêtres ouvertes (déplacement d'un bureau à l'autre, redimensionnement, ...).
    Plus d'infos ici: http://www.sweb.cz/tripie/utils/wmctrl
    • [^] # Re: wmctrl

      Posté par  . Évalué à 2.

      Salut Franck,

      merci, je regarde dans cette direction, ça a l'air de correspondre exactement à ce que je cherche !
    • [^] # Re: wmctrl

      Posté par  . Évalué à 2.

      Hum, ça marche très bien pour redimensionner les fenêtres, mais impossible de les déplacer (aucune erreur, simplement rien ne bouge).
      Y compris en activant ou en désactivant le window manager.

      ex :

      wmctrl -r 0x02e05573 -i -e 0,200,100,500,300

      La fenêtre (un terminal gnome) est bien redimensionnée (500x300), mais pas déplacée.

      J'ai loupé quelque chose ?

      Merci pour votre aide !
      • [^] # Re: wmctrl

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

        wmctrl est super

        c'est -t pour déplacer une fenetre sur une autre desktop

        suffit de lire la man page
        • [^] # Re: wmctrl

          Posté par  . Évalué à 2.

          Oui, l'option -t fonctionne.
          Celle qui ne fonctionne pas complètement chez moi, c'est l'option -e :
          Resize and move the window around the desktop.


          Avec cette commande, j'arrive à redimensionner une fenêtre, mais pas à la déplacer sur le bureau.
          • [^] # Re: wmctrl

            Posté par  . Évalué à 2.

            Je retire mon propos, j'ai fait de nouveaux essais, le déplacement de la fenêtre semble fonctionner.
  • # WM

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

    ce genre de chose c'est le boulot du window Manager.

    tu parles de gnome et doit utiliser metacity. hors celui-ci est anémique et n'a aucune fonctionnalité (de base et encore moins un peu évolué)

    il faut trouver qq chose pour le suppléer. par exemple devilspie permet de positionner et de retailler les fenetres. mais c'est un démon. marchera pas dans un script bash.

    sinon compiz inclut un plugin (place windo ?) similaire qui fait le même boulot que devilspie

    sinon sous kde, suffit sans doute de causer à kwin via dbus.

    et une solution universelle ? je sais pas je doute que ca existe.
    • [^] # Re: WM

      Posté par  . Évalué à 2.

      D'accord. Alors si je peux avoir quelque chose de valable au moins pour les applications gnome, ça devrait me convenir.

      Voilà ce que je veux faire :

      j'ai différents types de contenus : diaporamas, vidéos, images,...
      Je souhaite faire un script qui, à partir d'infos issus d'une base de données ou d'un fichier de configuration, ouvre au bon moment le bon lecteur pour lire le bon document, et place la fenêtre au bon endroit sur l'écran, avec les bonnes dimensions ; il peut y'avoir plusieurs fenêtres simultanément à l'écran.
      Pendant ce temps, FFMPEG me fait une capture vidéo de ce qui apparaît à l'écran, et FFSERVER me transmet la vidéo produite sous forme de flux.

      Pour le moment j'en suis à faire des expérimentations, à l'aide de scripts bash. A terme, ce sera probablement une appli développée en C ou je ne sais quel langage.

      Bref, voilà pourquoi je cherche à manipuler des fenêtres quelque soit leur contenu.
      • [^] # Re: WM

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

        En te lisant, je trouve surtout qu'il te faut un bon WM, facon ion ou xmonad...
        • [^] # Re: WM

          Posté par  . Évalué à 2.

          moi ça me dérange pas, du moment que je trouve un player compatible avec ces WM pour chacun des formats que j'ai besoin de lire (vidéos, flash, powerpoint, PDF, images,...)
          • [^] # Re: WM

            Posté par  . Évalué à 3.

            Oula, c'est quoi le rapport entre le player et le WM ?
            Kaffeine marche sous gnome, tout comme totem marche sous kde.
            • [^] # Re: WM

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

              Ben, c'est que ion par exemple, permet d'etre configure' pour placer telle ou telle fenetre dans telle ou telle frame, et que c'est du placement bien pratique.
              D'autre tiling window managers doivent bien proposer facilement cette option... (puis les T-WM, c'est le top)

Suivre le flux des commentaires

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