it-swarm.com.de

So verschieben Sie Anwendungen mit dem Befehl von Arbeitsbereich 1 nach 2

Kann ich die Anwendung, die in einem Arbeitsbereich ausgeführt wird, in der Befehlszeile auf eine andere umschalten? Ich benutze Ubuntu 10.04

PDATE1
Gemäß nachstehenden Vorschlägen

 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 [email protected]: ~
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

jetzt, wenn ich tippe

wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.

Also, wie man es richtig benutzt, was ist der Fehler oben?

PDATE2
Ich habe es versucht

wmctrl -r 0x05000072 -t 2

aber die Fenster hatten keine Wirkung und blieben im gleichen Arbeitsraum.

9
Registered User

Wenn Sie einen kompatiblen Fenstermanager wie Metacity (Unity 2-d) verwenden, können Sie mit wmctrl ein Fenster auf einen anderen Desktop umschalten. Die Syntax lautet wmctrl -r :ACTIVE: -t <DESKTOP>. Sie können Ihren aktuellen Desktop auch mit wmctrl -s <DESKTOP> ändern. Desktop-Nummern beginnen bei 0. In einer Zeile wäre dies:

wmctrl -r :ACTIVE: -t 1; wmctrl -s 1

Wenn Sie ein anderes Fenster als das aktive auf einen anderen Desktop umschalten möchten, verwenden Sie Text aus dem Titel als Argument für -r. Zum Beispiel:

wmctrl -r "Chromium" -t 1

Alternativ können Sie wmctrl -l verwenden, um die verfügbaren Fenster aufzulisten und die ID-Nummer anstelle der Sonderzeichenfolge :ACTIVE: an -r zu übergeben. Wenn Sie eine ID übergeben, müssen Sie auch -i hinzufügen. Zum Beispiel:

$ wmctrl -l
0x03e00189  0 hostname Ask Ubuntu - Chromium
$ wmctrl -i -r 0x03e00189 -t 2

(wmctrl kann unter Ubuntu mit Sudo apt-get install wmctrl installiert werden.) Derzeit scheint dies leider nicht mit Standard Unity zu funktionieren.

11
skyblue

Hier ist ein Skript von mir, das implementiert, was Sie fragen: https://github.com/norswap/wmov/blob/master/wmov.sh

In der aktuellen Form kann es Fenster (ausgewählt durch Abgleichen einer Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung mit dem Titel der Teilzeichenfolge, wie bei der Option wmctrl-r) an andere Desktops senden, indem entweder eine explizite Desktop-Nummer oder ausgewählt wird indem Sie die Richtung des Desktops vom aktuellen Desktop aus angeben.

Zum Beispiel:

./wmov.sh mov "Google Chrome" 3 # sends Chrome to desktop 3 (bottom left)
./mov.sh mov Skype right # sends Skype to the desktop to the right of
                         # the current desktop (if any)

Es funktioniert in der Tat wie in Desguas Post beschrieben. Es gibt auch die Möglichkeit, Fenster an andere Arbeitsbereiche zu senden.

3
Norswap

Wenn Sie compiz verwenden, schauen Sie hier im compiz wiki nach. Dort finden Sie mehrere Beispiele. Schau dir das "put" Plugin an.

Beispiel

./compiz-dbus-send.py put put_viewport_right_key
2
nsg

Dies ist mit xdotool, möglich, aber , wenn Sie compiz verwenden, ist diese Lösung möglicherweise nicht anwendbar behalte dies im Kopf.

Um ein bestimmtes Fenster (das aktive Fenster) in einen anderen Arbeitsbereich zu verschieben, können Sie verwenden

xdotool getactivewindow set_desktop_for_window 1

Oder für ein Skript möchten Sie möglicherweise die Fenster eines bestimmten Programms auf einen bestimmten Arbeitsbereich umschalten:

xdotool search --class firefox set_desktop_for_window %@ 1

Dieser Befehl sucht und findet die firefox Fenster und überträgt sie in den Arbeitsbereich 1, wo sie minimiert erscheinen. Um firefox auf den Standarddesktop zurückzusetzen, ersetzen Sie einfach die 1 am Ende des Befehls durch eine 0. Um ein anderes Fenster an einen anderen Arbeitsbereich zu senden, ersetzen Sie einfach firefox durch einen anderen Programmnamen.

Es ist wichtig, dass Sie %@ verwenden, um die vom Parameter --search übergebenen Fenster darzustellen, als ob Sie keine Fenster übertragen würden.

Weitere Informationen finden Sie unter man xdotool und in den buntu-Hilfeseiten online.

1
user76204

Erstens ist der Doppelpunkt Teil des magischen Tokens :ACTIVE:, um das aktive Fenster anzuzeigen. Du willst es nicht normal. Zweitens müssen Sie Zeichenfolgen mit Leerzeichen in Anführungszeichen setzen.

Sie können auch die Fenster-ID (den 0x... am Anfang jeder Zeile) abrufen und diese verwenden, anstatt zu versuchen, dass der Titel funktioniert.

$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium' -t 2 # wherever it is, move it to 2
$ wmctrl -r 0x0482a380 -t 2 # same thing
1
geekosaur

Durch Ändern des Skripts, das als Lösung für diese Frage angegeben wurde, wird mit dem folgenden Befehl ein bestimmtes Fenster in den aktuellen Arbeitsbereich "verschoben" (in compiz):

#!/bin/bash

SCREEN_W=$(xwininfo -root | sed -n 's/^  Width: \(.*\)$/\1/p')
SCREEN_H=$(xwininfo -root | sed -n 's/^  Height: \(.*\)$/\1/p')

NAME="$1"

wmctrl -xlG | awk -v NAME="$NAME" '$7==NAME {print $1}' | while read WINS; do wmctrl -ir "$WINS" -e "0,0,0,$SCREEN_W,$SCREEN_H"; done

exit 0

Wenn ein beliebiger Arbeitsbereich gewünscht wird, muss der entsprechende $SCREEN_W/$SCREEN_H addiert/subtrahiert werden, so oft ein Fenster vom Zielbereich entfernt ist.

0
ivotron

Versuchen:

wmctrl -r “window name(or any string in the title)” -t `wmctrl -d | grep “workspace name” | cut -d" " -f1`

lass es mich erklären: in der hilfe von wmctrl zeigt

    -r <WIN> -t <DESK>   Move the window to the specified desktop.
    <DESK>               A desktop number. Desktops are counted from zero.
    <WIN>          This argument specifies the window. By default it's
                   interpreted as a string. The string is matched
                   against the window titles and the first matching
                   window is used. The matching isn't case sensitive
                   and the string may appear in any position
                   of the title.

                   The -i option may be used to interpret the argument
                   as a numerical window ID represented as a decimal
                   number. If it starts with "0x", then
                   it will be interpreted as a hexadecimal number.

wmctrl -d kann alle Arbeitsbereiche auflisten, auf meinem Computer wird nun Folgendes angezeigt:

 0 - DG: 1600 x 900 VP: N/A WA: 0,0 1600 x 868 Code 
 1 * DG: 1600 x 900 VP: 0,0 WA: 0,0 1600 x 868 Wiedergabe 
 2 - DG: 1600 x 900 VP: N/A WA: 0,01600 x 868 Forschung 

* steht für den aktuellen Arbeitsbereich

Übrigens, wmctrl -l listet alle Fenster (die Sie bereits gekannt haben) auf, auf meinem Computer sind sie jetzt:

 0x05400008 1 Benutzer-LinuxMint-Terminal 
 0x03a0008e 0 Benutzer-LinuxMint Mozilla Firefox 


da der "SCHREIBTISCH" die Nummer sein muss, benutze ich grep “workspace name” | cut -d" " -f1, um sie zu erhalten.

Wenn ich beispielsweise Firefox in den Arbeitsbereich "Code" verschieben möchte, kann ich Folgendes verwenden:

wmctrl -r "firefox" -t 0 

oder

wmctrl -r "moz" -t `wmctrl -d | grep "code" | cut -d" " -f1`

aber

wmctrl -r -i 0x03a0008e -t `wmctrl -d | grep "code" | cut -d" " -f1`

Arbeite mich nur einmal und ich weiß nicht warum!

0
highwind