Existe-t-il un moyen de basculer l'application en cours d'exécution dans un espace de travail vers un autre en ligne de commande? J'utilise Ubuntu 10.04
UPDATE1
Selon les suggestions ci-dessous
wmctrl -l
0x02200003 -1 bond Bottom Expanded Edge Panel
0x02200049 -1 bond Top Expanded Edge Panel
0x02000020 0 bond x-nautilus-desktop
0x04e00004 0 bond bond@bond: ~
0x0482a380 0 bond OMG! Ubuntu! | wmctrl - Chromium
0x05000072 0 bond how to shift applications from workspace 1 to 2 using command - Ask Ubuntu - Stack Exchange - Google Chrome
maintenant quand je tape
wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.
Alors, comment l'utiliser correctement quelle est l'erreur ci-dessus?
UPDATE2
j'ai essayé
wmctrl -r 0x05000072 -t 2
mais les fenêtres n'ont eu aucun effet et elles sont restées dans le même espace de travail.
command-line
workspaces
Utilisateur enregistré
la source
la source
Réponses:
Si vous utilisez un gestionnaire de fenêtres conforme comme Metacity (Unity 2-d), vous pouvez utiliser wmctrl pour basculer une fenêtre vers un autre bureau. La syntaxe est
wmctrl -r :ACTIVE: -t <DESKTOP>
. Vous pouvez également modifier votre bureau actuel à l'aide dewmctrl -s <DESKTOP>
. Les numéros de bureau commencent à 0. Sur une ligne, ce serait:Si vous souhaitez basculer une fenêtre autre que celle active vers un autre bureau, utilisez le texte du titre comme argument à -r. Par exemple:
Vous pouvez également utiliser
wmctrl -l
pour répertorier les fenêtres disponibles et transmettre le numéro d'identification à -r au lieu de la chaîne spéciale:ACTIVE:
. Lorsque vous passez un identifiant, vous devez également ajouter -i. Par exemple:(wmctrl peut être installé sur Ubuntu avec
sudo apt-get install wmctrl
.) À l'heure actuelle, cela ne semble malheureusement pas fonctionner avec Unity standard.la source
wmctrl -r "Chromium" -t 1
comme le mentionne skyblue dans sa réponse, tant que vous utilisez un gestionnaire de fenêtres conforme comme Unity-2d.Voici un de mes scripts qui implémente ce que vous demandez: https://github.com/norswap/wmov/blob/master/wmov.sh
Dans sa forme actuelle, il peut envoyer des fenêtres (sélectionnées en faisant correspondre une chaîne insensible à la casse au titre des sous-chaînes, comme pour l'
wmctrl
-r
option) vers d'autres bureaux, soit en choisissant un numéro de bureau explicite, soit en indiquant la direction du bureau à partir du courant bureau.Par exemple:
Cela fonctionne en effet comme décrit dans l'article de Desgua. Il a également la capacité d'envoyer des fenêtres à d'autres espaces de travail.
la source
Il est possible de le faire avec
xdotool
, mais si vous utilisezcompiz
cette solution peut ne pas être applicable, veuillez donc garder cela à l'esprit.Pour basculer une fenêtre particulière (la fenêtre active) vers un autre espace de travail, vous pouvez utiliser
Ou pour un script, vous voudrez peut-être basculer les fenêtres d'un programme particulier vers un espace de travail donné avec:
Cette commande recherche et trouve les
firefox
fenêtres et les transfère vers l'espace de travail 1, où elles apparaîtront réduites. Pour revenirfirefox
au bureau par défaut, remplacez simplement le 1 par un 0 à la fin de la commande. Pour envoyer une fenêtre différente vers un autre espace de travail, remplacez simplementfirefox
par un autre nom de programme.Il est essentiel que vous utilisiez
%@
pour représenter les fenêtres transmises à partir du--search
paramètre, comme si vous ne le faites pas, aucune fenêtre ne sera transférée.Pour plus d'informations, voir
man xdotool
et les pages de manuel Ubuntu en ligne.la source
Si vous utilisez compiz, regardez ici le wiki compiz . Vous y trouverez plusieurs exemples. Regardez le plugin "put".
Exemple
la source
Premièrement, les deux points font partie du
:ACTIVE:
jeton magique pour indiquer la fenêtre active. Vous ne le voulez pas normalement. Deuxièmement, vous devez citer des chaînes contenant des espaces.Vous pouvez également obtenir l'ID de la fenêtre (
0x...
au début de chaque ligne) et l'utiliser au lieu d'essayer de faire fonctionner le titre.la source
xwininfo
, puis à cliquer sur la fenêtre dont vous voulez l'ID.wmctrl -m
)wmctrl
ne fonctionnera donc pas. (Plus précisément, il doit écouter lesPropertyChange
événements sur la fenêtre racine pour des propriétés particulières, puis agir sur le contenu de ces propriétés.)En modifiant un peu le script qui lui est donné comme solution à cette question , ce qui suit "apporte" une fenêtre donnée à l'espace de travail courant (en compiz):
Si un espace de travail arbitraire est souhaité, il s'agit d'ajouter / de soustraire le
$SCREEN_W
/ correspondant$SCREEN_H
, autant de fois que d'espaces de travail une fenêtre est éloignée de la cible.la source
Essayer:
laissez-moi vous expliquer: à l'aide de wmctrl montre
wmctrl -d
peut répertorier tous les espaces de travail, dans mon ordinateur s'affiche maintenant comme suit:* signifie l'espace de travail actuel
BTW,
wmctrl -l
c'est de lister toutes les fenêtres (que vous connaissiez déjà), dans mon ordinateur maintenant ce sont:puisque le "DESK" doit être le numéro, j'utilise
grep “workspace name” | cut -d" " -f1
pour l'obtenir.Par exemple, si je veux déplacer Firefox vers le "code" de l'espace de travail, je peux utiliser:
ou
mais
Travaille-moi juste une fois, et je ne sais pas pourquoi!
la source