Czy jest jakiś sposób na przełączenie aplikacji działającej w jednym obszarze roboczym na inny w wierszu poleceń? Używam Ubuntu 10.04
AKTUALIZACJA 1
Zgodnie z sugestiami poniżej
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
teraz kiedy piszę
wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.
Jak więc właściwie go używać, w czym jest powyższy błąd?
UPDATE2
Próbowałem
wmctrl -r 0x05000072 -t 2
ale okna nie działały i pozostawały w tym samym miejscu do pracy.
command-line
workspaces
zarejestrowany użytkownik
źródło
źródło
Odpowiedzi:
Jeśli używasz zgodnego menedżera okien, takiego jak Metacity (Unity 2-d), możesz użyć wmctrl, aby przełączyć okno na inny pulpit. Składnia jest następująca
wmctrl -r :ACTIVE: -t <DESKTOP>
. Możesz także zmienić swój obecny pulpit za pomocąwmctrl -s <DESKTOP>
. Numery na pulpicie zaczynają się od 0. W jednym wierszu byłoby to:Jeśli chcesz przełączyć okno inne niż aktywne na inny pulpit, użyj tekstu z tytułu jako argumentu na -r. Na przykład:
Alternatywnie możesz użyć,
wmctrl -l
aby wyświetlić listę dostępnych okien i przekazać numer identyfikacyjny do -r zamiast specjalnego ciągu:ACTIVE:
. Przy przekazywaniu identyfikatora musisz również dodać -i. Na przykład:(wmctrl można zainstalować na Ubuntu przy pomocy
sudo apt-get install wmctrl
.) Obecnie nie wydaje się, aby działało to ze standardowym Unity, niestety.źródło
wmctrl -r "Chromium" -t 1
wzmianki w swojej odpowiedzi, o ile używasz zgodnego menedżera okien, takiego jak Unity-2d.Oto mój skrypt, który implementuje to, o co prosisz: https://github.com/norswap/wmov/blob/master/wmov.sh
W swojej obecnej formie może wysyłać okna (wybrane przez dopasowanie łańcucha znaków bez rozróżniania wielkości liter do tytułu podłańcuchów, tak jak w przypadku
wmctrl
-r
opcji) na inne komputery, poprzez wybranie jawnego numeru pulpitu lub poprzez wskazanie kierunku pulpitu od bieżącego pulpit.Na przykład:
Działa naprawdę tak, jak opisano w poście desgua. Umożliwia także wysyłanie okien do innych obszarów roboczych.
źródło
Można to zrobić za pomocą
xdotool
, ale jeśli używaszcompiz
tego rozwiązania, może nie mieć zastosowania, więc pamiętaj o tym.Aby przełączyć określone okno (aktywne okno) na inny obszar roboczy, możesz użyć
Lub w przypadku skryptu możesz chcieć przełączyć okna określonego programu do danego obszaru roboczego za pomocą:
To polecenie wyszukuje i znajduje
firefox
okna (okna) i przenosi je do obszaru roboczego 1, gdzie wydają się zminimalizowane. Aby powrócićfirefox
do domyślnego pulpitu, po prostu zamień 1 na 0 na końcu polecenia. Aby wysłać inne okno do innego obszaru roboczego, po prostu zamień nafirefox
inną nazwę programu.Bardzo ważne jest,
%@
aby reprezentować okna przekazane z--search
parametru, ponieważ jeśli nie, żadne okna nie zostaną przeniesione.Aby uzyskać więcej informacji, zobacz
man xdotool
i strony internetowe Ubuntu online.źródło
Jeśli używasz compiz, zajrzyj tutaj na wiki compiz . Tam znajdziesz kilka przykładów. Spójrz na wtyczkę „put”.
Przykład
źródło
Po pierwsze, dwukropek jest częścią
:ACTIVE:
magicznego tokena wskazującego aktywne okno. Nie chcesz tego normalnie. Po drugie, musisz zacytować łańcuchy ze spacjami.Możesz także uzyskać identyfikator okna (
0x...
na początku każdej linii) i użyć go zamiast próbować uruchomić tytuł.źródło
xwininfo
a następnie kliknięcie okna, którego identyfikator chcesz.wmctrl -m
)wmctrl
nie zadziała. (W szczególności musi nasłuchiwaćPropertyChange
zdarzeń w oknie głównym dla określonych właściwości, a następnie działać na podstawie tych właściwości).Zmieniając nieco skrypt podany jako rozwiązanie tego pytania , następujące „przenosi” dane okno do bieżącego obszaru roboczego (w compiz):
Jeśli pożądany jest dowolny obszar roboczy, chodzi o dodanie / odjęcie odpowiedniego
$SCREEN_W
/$SCREEN_H
, tyle razy, ile obszarów roboczych okno jest oddalone od docelowego.źródło
Próbować:
pozwól mi wyjaśnić: w pomocy programów wmctrl
wmctrl -d
mogę wyświetlić listę wszystkich obszarów roboczych, na moim komputerze teraz pokazuje się następująco:* oznacza bieżący obszar roboczy
BTW,
wmctrl -l
jest na liście wszystkich okien (które już znasz), na moim komputerze są teraz:ponieważ „DESK” musi być liczbą, używam
grep “workspace name” | cut -d" " -f1
go, aby go zdobyć.Na przykład, jeśli chcę przenieść Firefox do „kodu” obszaru roboczego, mogę użyć:
lub
ale
Po prostu przepracuj mnie raz, a nie wiem dlaczego!
źródło