Pages : 1
#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
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
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...
Hors ligne