Czy istnieje polecenie przejścia do określonego obszaru roboczego?

22

Próbuję utworzyć szybką listę w programie uruchamiającym Switcher Workspace, który pozwala na szybkie przełączenie do określonego obszaru roboczego. (Mój przyjaciel czasami korzysta z mojego komputera i po prostu nie lubi skrótów klawiaturowych, więc chcę mu pomóc.)

Czy istnieje więc polecenie, które można wpisać w terminalu, które zmusiłoby do skoncentrowania się na określonym obszarze roboczym?

Leron
źródło
Istnieje również możliwość ustawienia skrótu klawiaturowego w ustawieniach systemu5 dla kwin (zmień pulpit lub inny) lub innego menedżera ustawień pulpitu. następnie użyj xdotool do symulacji klawiszy skrótu, takich jak xdotool key ctrl + alt + b;
intika

Odpowiedzi:

34

Możesz użyć wmctrl .

Podstawowe polecenia:
wmctrl -daby wyświetlić wszystkie obszary robocze.
wmctrl -s <workspace_name>aby przejść do określonego obszaru roboczego.

Jeśli korzystasz z Compiz, będziesz musiał zrobić sztuczkę, ponieważ „obszary robocze” Compiz są w rzeczywistości rzutniami pojedynczego obszaru roboczego.

Sztuczki Instrukcje

Sprawdź dane wyjściowe na wmctrl -dprzykład, moja to:

0  * DG: 4098x2304  VP: 1366,0  WA: 0,23 1366x745  N/A  

Oznacza to, że faktycznie mam jeden obszar roboczy o wymiarach 4098 x 2304 zamiast tego, co „myślę”, że mam (dziewięć „obszarów roboczych”, 3 x 3).
Byłem w miejscu, które miało być „obszarem roboczym” 2, ale tak naprawdę byłem w obszarze wyświetlania (VP) 1366,0 (4098/3 = 1366), jak pokazano na powyższym wyjściu.

Tak to działa: bierzemy cały obszar roboczy i dzielimy na liczbę „obszarów roboczych”, które „myślimy”, że mamy. W moim przypadku: 4098/3 = 1366 i 2304/3 = 768.

Jeśli chcę przejść do mojego „obszaru roboczego” 1, polecenie brzmi:

wmctrl -o 0,0

Następnie, jeśli chcę przejść do mojego „obszaru roboczego” 4, polecenie brzmi:

wmctrl -o 0,768

Jeśli chcę przejść do mojego „obszaru roboczego” 8, polecenie brzmi:

wmctrl -o 1366,1536

Jeśli chcę przejść do mojego „obszaru roboczego” 9, polecenie brzmi:

wmctrl -o 2732,1536

Rozumiem? ;-)

The -oFlag „obcięte” ich wartości. Innymi słowy, zmienia „obszar roboczy”, do którego należy rzeczywisty piksel. Następujące są równoważne:

wmctrl -o 0,0
wmctrl -o 1365,767
desgua
źródło
1
Czy istnieje sposób, aby przejść do „bieżącego pulpitu + 1”?
xjcl
9

Pięknie łatwo jest osiągnąć to, co chcesz xdotool, dzięki wielu opcjom zarządzania różnymi obszarami roboczymi (zwanymi również w dokumentacji programu „pulpitami”). Uważam, że bardzo interesujące i kreatywne może być łączenie ze sobą poleceń man xdotool; polecenia, które sformułowałem poniżej, mogą być przydatne w skryptach.

Uwaga: W przypadku niektórych menedżerów okien lub jeśli używasz compiz, może być konieczne użycie xdotoolpoleceń takich jak set_desktop_viewporti get_desktop_viewport. Być może będziesz musiał określić polecenia w inny sposób, jak sugeruje to desgua powyżej, ale dla mnie polecenia set_desktopi set_desktop_for_windowokazały się najbardziej przydatne w systemie innym niż compiz.)

( Rozwiązanie jest najbardziej przydatne dla użytkowników Xubuntu / Lubuntu lub tych, którzy nie korzystają z Compiz itp. )

Aby wyświetlić liczbę bieżących obszarów roboczych, wprowadź

xdotool get_num_desktops

Następujące polecenia będą działać tylko wtedy, gdy masz co najmniej 1 inny obszar roboczy.

Aby zmienić fokus na obszar roboczy 1, wystarczy wejść

xdotool set_desktop 1 

Następnie, aby powrócić do domyślnego obszaru roboczego, wprowadź

xdotool set_desktop 0

Obszar roboczy musi zostać określony jako ostatnia wartość w poleceniu (1 lub 2 lub 3 itd.).

Aby znaleźć numer obszaru roboczego, w którym aktualnie się znajdujesz, możesz użyć

xdotool get_desktop

Te polecenia mogą być używane w skryptach i powinny być bardzo przydatne do osiągnięcia tego, co masz.

Aby dowiedzieć się, jak przełączać aplikacje na konkretny pulpit, zobacz moją odpowiedź tutaj:

Więcej przydatnych opcji dostępnych do przełączania przestrzeni roboczej znajduje się w man xdotool.

Społeczność
źródło
Podoba mi się ta odpowiedź bardziej niż zaakceptowana, dziękuję. Użyłem tego, aby ustawić dwa gorące rogi, aby łatwo przełączać się między dwoma obszarami roboczymi.
harmonogram
Przydatne również: przełącz się na następny pulpit w lewo / prawo, używając flagi względnej:xdotool set_desktop --relative -- -1
xjcl
1

Wdrożyłem skrypt, który robi to, co chcesz. Oto on: https://github.com/norswap/wmov/blob/master/wmov.sh

Działa naprawdę tak, jak opisano w poście desgua. Umożliwia także wysyłanie okien do innych obszarów roboczych.

Norswap
źródło
1
Uwaga: Nie działa dla liczby wirtualnych pulpitów> 9.
j6m8 21.07.15
0

Na wiki compiz znajduje się skrypt o nazwie compiz-send.py, który częściowo odnosi się do twojego pytania: nie jest to konkretny obszar roboczy, ale możesz przejść do następnego.

Dzięki temu możesz wydać polecenie
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
i sprawić, aby rzutnia przesunęła się 1 w lewo lub w prawo.

Rinzwind
źródło
0

Przechodzenie do określonego obszaru roboczego i wykonywanie działań można zaimplementować za pomocą Pythona i biblioteki pyautogui , która umożliwia skryptom Python wykonywanie kliknięć myszą, naciśnięć klawiszy itp.

Na forum dla Peppermint OS napisałem krótki samouczek na temat uruchamiania aplikacji w określonym miejscu pracy.

The_Fritz
źródło