Je me demande si je peux "envoyer" un programme fenêtré dans un espace de travail spécifique lorsque je le lance en ligne de commande.
Par exemple, je voudrais démarrer mon ordinateur avec un certain nombre de programmes fenêtrés ouverts dans différents espaces de travail. Est-ce possible? Quels sont les concepts de base derrière cela?
J'utilise Unity sur Ubuntu 14.04.
J'ai aussi essayé de démarrer gdevilspie
mais cela semble être affecté par un bogue.
merci! :)
Utilisation de wmctrl
, exemple gedit
:
_gedit & sleep 3; wmctrl -i -r `wmctrl -l -p | grep $! | awk '{ print $1 }'` -t 1
_
gedit &
_ exécuter gedit en arrière-plansleep 3
_ sommeil pendant 3 secondes en attente de la création de la fenêtre (ma machine est un peu lente)$!
_ return PID de la commande précédente (c'est-à-dire: gedit pid)wmctrl -l -p | grep PID | awk '{ print $1 }'
_ get WID de gedit PIDwmctrl -i -r WID -t 1
_ déplace la fenêtre avec WID vers le deuxième bureauAutrement:
_wmctrl -s 1 ; gedit & sleep 3; wmctrl -s 0;
_
Référence:
En gros, c'est la même chose que @ user.dz a répondu, juste paramétrée et au lieu de dormir pendant 3 secondes pour que le gestionnaire de fenêtres soit créé, celui-ci boucle jusqu'à ce qu'il soit trouvé.
# workspace target
_WS=3
export DISPLAY=:0
gedit &
_PID="$!"
_WID=""
while [[ $_WID == "" ]]; do
_WID=$(wmctrl -l -p 2>/dev/null | grep $_PID | awk '{ print $1 }')
sleep 1
done
wmctrl -i -r $_WID -t $_WS