Forum Programmation.shell Comment mettre au premier plan la fenêtre principale de l'instance déjà démarrée d'une application indiquée par son nom

Posté par  .
Étiquettes : aucune
0
9
jan.
2010
Bonjour,

Mon besoin est le suivant :

Je voudrait écrire un script qui me permette de :
1- rechercher si il existe déjà des instances en cours d'exécution de l'application désignée
2- si OUI alors de mettre au premier plan la fenêtre principale de l'application de toutes les instances déjà présentes. (Extra : si c'est une appli console, alors c'est la fenêtre de la console qui devrait être mise au premier plan)
3- sinon de lancer l'application.

Ex 1 : # le_script top
Et paf, toutes les "konsole", tous les "xterm", etc.. qui sont en train d'exécuter la commande "top" doivent apparaître au premier plan. Si il y en avait aucune, alors la commande top est lancée.

Rque 1 : Certaines applications se chargent de faire ce travail par elle même. A leur démarrage, elle vérifie si une instance existe déjà, et si oui la met au premier plan. (amarok)

Rque 2 : il est possible d'envisager que cela ne soit possible que pour les applications qui ont été démarrées par l'intermédiaire du script. En effet, il peut être intéressant de conserver des informations concernant l'application démarrée (pid, id fenêtre?, ...)

Mon environnement : kde4 (kubuntu)
Pour mettre au premier plan une fenêtre particulière il est peut être possible d'utiliser D-Bus pour piloter KWin?

En fait, il existe déjà peut-être quelque chose qui réponde -- au moins partiellement -- à ce besoin. Mais je ne connais pas!

Merci pour votre aide.
  • # opensource => regarde le code des autres

    Posté par  . Évalué à 2.

    cairo-dock permet de lancer une appli si elle n'est pas deja lancée
    et d'afficher la fenetre de l'appli si elle existe deja

    suffit peut-etre de regarder comment il fait...
    • [^] # Re: opensource => regarde le code des autres

      Posté par  . Évalué à 2.

      j'avais mal lu la question

      cairo-dock est surement ecrit dans un langage de programmation.

      mais le truc de base en general
      c'est un fichier dans /var/run/

      qui se place quand le programme se lance, et qui est supprimé quand le programme s'arrete
  • # xdotool et wmctrl

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

    Bonjour,

    As-tu essayé avec wmctrl ou xdotool?

    Cette commande me permet par exemple d'amener une application au premier plan :
    $ wmctrl -a firefox

    Ça ne la lance pas mais un petit script devrait faire l'affaire!

    J'avais aussi cherché autour de xdotools :
    Celle-la me permet de chercher l'id de la fenêtre
    $ xdotool search --name firefox

    Et celle-ci est sensée l'afficher (même si rapide essai ne semble pas fonctionner) :
    $ xdotool windowfocus

    Quelques URL :
    man wmctrl [http://pwet.fr/man/linux/commandes/wmctrl]
    xdotool [http://www.semicomplete.com/projects/xdotool/]
    Un exemple d'utilisation de xdotool [http://bbs.archlinux.org/viewtopic.php?id=71789]

Suivre le flux des commentaires

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