Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/10/2010, à 03:14

itsmokes

[Résolu] lancer une appli dans un autre espace de travail

Bonjour les gens !
Veuillez me pardonner si la question a déjà été posée, je cherche comment
ouvrir une application dans un espace de travail différent du courant, par exemple
lancer firefox dans l'espace de travail 3, bien sur en restant dans l'espace de travail
courant,
à savoir le 1 par défaut. Ça doit bien être possible ?
(environnement x86 )

Dernière modification par itsmokes (Le 11/10/2010, à 23:40)

Hors ligne

#2 Le 05/10/2010, à 04:57

chopinhauer

Re : [Résolu] lancer une appli dans un autre espace de travail

Tu peux utiliser wmctrl (pas installé par défaut) et ce script:

#!/bin/bash
wspc=$(($1 - 1))
shift
"$@" &
pid=$!

while true; do
	while read -a data; do
		if [ "$pid" -eq "${data[1]}" ]; then
			wmctrl -ir "${data[0]}" -t "$wspc"
			exit
		fi
	done < <(wmctrl -lp | awk '{print $1" "$3}')
	sleep .2
done

L'utilisation du script est:

nom_du_script espace_de_travail commande

espace_de_travail est un numéro (à partir de 1), commande est la commande à lancer.

La page tutoriel:script_shell peut t'intéresser.

PS: Le script ne fait aucun contrôle d'erreur (de saisi de paramètres par exemple). Et il part en boucle si commande n'ouvre pas de fenêtre.

Dernière modification par chopinhauer (Le 05/10/2010, à 05:02)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 05/10/2010, à 12:02

itsmokes

Re : [Résolu] lancer une appli dans un autre espace de travail

ok, et bien merci
je regarde ce script et donne un retour
d'ici ce soir ou demain (pas le temps avant)
merci smile

Hors ligne

#4 Le 06/10/2010, à 00:02

itsmokes

Re : [Résolu] lancer une appli dans un autre espace de travail

Ça marche très bien  smile
Encore merci.

Hors ligne

#5 Le 06/10/2010, à 01:22

chopinhauer

Re : [Résolu] lancer une appli dans un autre espace de travail

On peut faire quelque chose de plus intelligent avec Python et python-wnck

#!/usr/bin/python
# vim:fileencoding=utf-8
import sys
import signal
import subprocess
import gtk
import wnck

def on_new_application(screen, app, pid, wspace):
    if app.get_pid() == pid:
        xid = app.get_xid()
        window = wnck.window_get(xid)
        window.move_to_workspace(wspace)
        sys.exit(0)

def on_command_end(signum, frame):
    print "La commande", " ".join(sys.argv[2:]), "a terminé sans ouvrir de fenêtre."
    gtk.main_quit()

def main():
    if len(sys.argv) < 3:
        print "Utilisation:", sys.argv[0], " <numéro de espace de travail> <commande>"
        sys.exit(1)
    # Controle du premier parametre
    wspace_count = int(sys.argv[1])
    screen = wnck.screen_get_default()
    while gtk.events_pending():
        gtk.main_iteration()
    if wspace_count < 1 or wspace_count > screen.get_workspace_count():
        print "L'espace de travail numéro", wspace_count, "n'existe pas."
        sys.exit(1)
    # Lancer la commande
    commande = subprocess.Popen(sys.argv[2:])
    signal.signal(signal.SIGCHLD, on_command_end)
    screen.connect("application-opened", on_new_application,
            commande.pid, screen.get_workspace(wspace_count - 1))
    gtk.main()

if __name__ == '__main__':
    main()

Cette fois-ci il y a du contrôle d'erreur de saisi, ce qui rallonge pas mal le script. En revanche ce script ne consomme pas de processeur en attendant le lancement de la fenêtre.

Ce script ne marchera pas avec toutes les applications: par exemple les fenêtres de firefox et totem après la première ne seront pas gérées (ce deux logiciels ne se lancent que dans une seule copie). Aussi les logiciels lancés à l'aide de wrapper shell et dont les auteurs ne connaissent pas la commande exec.

Dernière modification par chopinhauer (Le 12/10/2010, à 00:04)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#6 Le 11/10/2010, à 23:40

itsmokes

Re : [Résolu] lancer une appli dans un autre espace de travail

ouh la, j'en demandais pas tant !
merci encore à toi,
je mets résolu en titre de thread

Hors ligne

#7 Le 12/10/2010, à 00:06

chopinhauer

Re : [Résolu] lancer une appli dans un autre espace de travail

J'aime pas les solutions sales, surtout celles qui vont consommer pas mal de processeur en cas de erreur (genre si la fenêtre ne se lance jamais le script bash tourne sans cesse). Les utilisateurs qui vont passer ici et prendre le script bash pour de l'or coulé ne vont pas forcement savoir faire un kill.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#8 Le 25/10/2010, à 01:31

pge

Re : [Résolu] lancer une appli dans un autre espace de travail

Pour info, il existe aussi une solution avec compiz...

http://forum.ubuntu-fr.org/viewtopic.php?id=234172

Hors ligne