IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Récupérer les caractéristiques d'une fenêtre via xprop


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Récupérer les caractéristiques d'une fenêtre via xprop
    Bonjour,

    Je dispose du script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    getwinprop)
               urxvt -cr rgb:00/00/00 -hold -title getwinprop -g "60x14" -e \
               awk 'BEGIN {
               print "waiting a mouse click..."
               cmd="xprop"; while ((cmd | getline >0)){ \
               if (/^WM_CLASS/){sub(/.* =/, "\n[instance] ="); sub(/,/, "\n[class] ="); print}
               if (/^WM_NAME/){sub(/.* =/, "[title] ="); print}
               }
               print "\ndone."
               close(cmd)
               }'
              ;;
    J'ai réalisé plusieurs essais:

    (1) Clique sur la fenêtre du scratchpad:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    waiting a mouse click...
     
    [instance] = "urxvt"
    [class] = "URxvt"
    [title] = "scratchpad"
     
    done.
    (2) Clique sur la barre de dzen2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    waiting a mouse click...
    [title] = "dbar"
     
    [instance] = "dzen2"
    [class] = "dzen"
     
    done.
    (3) Clique sur le bureau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    waiting a mouse click...
     
    done.
    Je souhaiterai forcer l'affichage de [title] en dernier pour éviter l'affichage du (cas n°2) et modifier le script de tel sorte que lorsque "xprop" ne trouve aucune information (cas n°3), il affiche par exemple: "Rien à afficher" au lieu de "done."

    Un petit coup de main s'il vous plaît

    Merci beaucoup

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Bonjour

    gensub() a justement été créé pour pallier l'absence de références arrières de sub() et gsub().

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    gensub() a justement été créé pour pallier l'absence de références arrières de sub() et gsub().
    J'ai regardé sur internet et il y a beaucoup d'exemples avec gensub() mais à ce niveau, je suis pommé

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ gawk '
    > BEGIN {
    >      a = "abc def"
    >      b = gensub(/(.+) (.+)/, "\\2 \\1", "g", a)
    >      print b
    > }'
    def abc
    \\2 symbolise le deuxième groupe capturé avec les parenthèses de la regex.
    \\1 symbolise le premier groupe capturé avec les parenthèses de la regex.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je comprends ton exemple mais je ne parviens pas à l'intégrer dans le script cité plus haut (en manque de neurones). Je suis très patient mais la gensub() me donne des boutons

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 386
    Par défaut
    Bonjour,

    Et pourquoi tu ne lui précises pas l'ordre à ta commande ainsi que juste les propriétés qui intéresse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xprop WM_NAME WM_CLASS
    WM_NAME(STRING) = "xxxx@localhost:~/Bureau"
    WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xprop WM_CLASS WM_NAME
    WM_CLASS(STRING) = "gnome-terminal", "Gnome-terminal"
    WM_NAME(STRING) = "xxxx@localhost:~/Bureau"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer les données d'une fenêtre popup ?
    Par Felixfel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/04/2012, 16h59
  2. [Lazarus] Récupérer les dimensions d'une fenêtre en plein écran
    Par Modulpro dans le forum Lazarus
    Réponses: 6
    Dernier message: 03/05/2011, 17h05
  3. Récupérer les dimensions d'une fenêtre
    Par developppez dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/12/2008, 15h04
  4. [VB.NET] Récupérer les caractéristiques d'une couleur
    Par leSeb dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/08/2004, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo