Есть ли команда для перехода в определенное рабочее пространство?

22

Я пытаюсь сделать быстрый список на панели запуска Workspace Switcher, который позволяет быстро переключаться на определенную рабочую область. (Мой друг иногда использует мой компьютер и просто не пользуется сочетаниями клавиш, поэтому я хочу помочь ему.)

Так есть ли команда, которую можно ввести в терминале, которая заставит определенное рабочее пространство быть сосредоточенным?

Лерон
источник
Также есть возможность установить сочетание клавиш на systemsettings5 для kwin (переключение рабочего стола или другое) или другого менеджера настроек рабочего стола. затем используйте xdotool для имитации сочетаний клавиш, таких как xdotool key ctrl + alt + b;
Интика

Ответы:

34

Вы можете использовать wmctrl .

Основные команды:
wmctrl -dпоказать все ваши рабочие пространства.
wmctrl -s <workspace_name>перейти на конкретное рабочее пространство.

Если вы используете Compiz, вам придется сделать трюк, потому что «рабочие пространства» Compiz на самом деле являются Viewports одной рабочей области.

Трюк Инструкции

Проверьте вывод wmctrl -dНапример, у меня есть:

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

Это означает, что на самом деле у меня есть одна Рабочая область 4098 x 2304 вместо того, что я «думаю», у меня есть (девять «рабочих областей», 3 x 3).
Я был в том, что должно было быть «рабочим пространством» 2, но на самом деле я был в окне просмотра (VP) 1366,0 (4098/3 = 1366), как показано в выходных данных выше.

Вот как это работает: мы берем все рабочее пространство и делим на количество «рабочих пространств», которые мы «думаем» у нас есть. В моем случае: 4098/3 = 1366 и 2304/3 = 768.

Если я хочу перейти в свое «рабочее пространство» 1, команда:

wmctrl -o 0,0

Затем, если я хочу перейти к своему «рабочему пространству» 4, команда:

wmctrl -o 0,768

Если я хочу перейти к моей «рабочей области» 8, команда:

wmctrl -o 1366,1536

Если я хочу перейти в свое «рабочее пространство» 9, команда:

wmctrl -o 2732,1536

Понял? ;-)

В -oфлаг «усекает» их значения. Другими словами, он изменяет «рабочее пространство», к которому относится фактический пиксель. Следующее эквивалентно:

wmctrl -o 0,0
wmctrl -o 1365,767
desgua
источник
1
Есть ли способ добраться до "текущего рабочего стола + 1"?
xjcl
9

Добиться того, с чем вы хотите xdotool, очень просто: у вас есть несколько вариантов управления различными рабочими пространствами (также называемыми «рабочими столами» в документации программы). Я считаю, что может быть очень интересно и креативно объединять команды man xdotool; команды, которые я сформулировал ниже, могут быть полезны в сценариях.

Примечание. С некоторыми оконными менеджерами или, если вы используете compiz, вам может понадобиться использовать xdotoolтакие команды, как set_desktop_viewportи get_desktop_viewport. Возможно, вам придется задавать команды другим способом, как предлагает выше desgua , но для меня команды set_desktopand set_desktop_for_windowоказались наиболее полезными в некомпизной системе.)

( Решение наиболее полезно для пользователей Xubuntu / Lubuntu, или тех, кто не использует compiz и т. Д. )

Чтобы просмотреть количество текущих рабочих пространств, введите

xdotool get_num_desktops

Следующие команды будут работать, только если у вас есть хотя бы 1 другое рабочее пространство.

Чтобы изменить фокус на ваше рабочее пространство 1, просто введите

xdotool set_desktop 1 

Затем, чтобы вернуться в рабочее пространство по умолчанию, введите

xdotool set_desktop 0

Рабочее пространство просто необходимо указать в качестве последнего значения в команде (1, 2 или 3 и т. Д.).

Чтобы узнать номер рабочей области, в которой вы сейчас находитесь, вы можете использовать

xdotool get_desktop

Эти команды могут быть использованы в сценариях, и они должны быть очень полезны для достижения того, что вы что.

Чтобы узнать, как переключать приложения на определенный рабочий стол, см. Мой ответ здесь:

Для более полезных опций, доступных для переключения рабочего пространства, обратитесь к man xdotool.

Сообщество
источник
Мне нравится этот ответ лучше, чем принятый, спасибо. Я использовал это, чтобы установить два горячих угла, чтобы легко переключаться между двумя рабочими пространствами.
13:00
Также полезно: переключиться на следующий рабочий стол влево / вправо, используя соответствующий флаг:xdotool set_desktop --relative -- -1
xjcl
1

Я реализовал скрипт, который делает то, что вы хотите. Вот оно: https://github.com/norswap/wmov/blob/master/wmov.sh

Это действительно работает, как описано в посте Десгуа. Это также возможности отправки окон в другие рабочие пространства.

Norswap
источник
1
Примечание: не работает для количества виртуальных рабочих столов> 9.
j6m8
0

Существует скрипт называется compiz-send.py на Compiz вики , что частично АДРЕСА ваш вопрос: это не конкретное рабочее место , но вы можете получить на один рядом с ним.

При этом вы можете выполнить команду,
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
и окно просмотра перейдет на 1 влево или вправо.

Rinzwind
источник
0

Переход к определенной рабочей области и выполнение действий могут быть реализованы с помощью Python и библиотеки pyautogui , которая позволяет сценариям Python выполнять щелчки мыши, нажатия клавиш и т. Д.

На форуме для Peppermint OS я написал краткое руководство по запуску приложения на определенном рабочем месте.

The_Fritz
источник