Existe um comando para ir para um espaço de trabalho específico?

22

Estou tentando fazer uma lista rápida no iniciador do Workspace Switcher que permite a troca rápida para um determinado espaço de trabalho. (Às vezes, meu amigo usa meu computador e simplesmente não gosta de atalhos de teclado, então eu quero ajudá-lo.)

Então, existe um comando que se possa digitar em um terminal que force uma determinada área de trabalho a ser focada?

Leron
fonte
Também existe a possibilidade de definir atalhos de teclado nas configurações do sistema5 para o kwin (alternar a área de trabalho ou outra opção) ou outro gerenciador de configurações da área de trabalho. use o xdotool para simular as teclas de atalho como a tecla xdotool ctrl + alt + b;
intika 22/04

Respostas:

34

Você pode usar wmctrl .

Comandos básicos:
wmctrl -dpara mostrar todos os seus espaços de trabalho.
wmctrl -s <workspace_name>para mudar para um espaço de trabalho específico.

Se você estiver usando o Compiz, precisará executar um truque, porque os "espaços de trabalho" do Compiz são na verdade viewports de um único espaço de trabalho.

Instruções para truques

Verifique a saída de wmctrl -dPor exemplo, a minha é:

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

Isso significa que, na verdade, tenho um espaço de trabalho de 4098 x 2304 em vez do que "penso" que tenho (nove "espaços de trabalho", 3 x 3).
Eu estava no que deveria ser o "espaço de trabalho" 2, mas na verdade estava na viewport (VP) 1366,0 (4098/3 = 1366), como mostra a saída acima.

Portanto, é assim que funciona: pegamos todo o espaço de trabalho e dividimos pelo número de "espaços de trabalho" que "pensamos" que temos. No meu caso: 4098/3 = 1366 e 2304/3 = 768.

Se eu quiser ir para o meu "espaço de trabalho" 1, o comando é:

wmctrl -o 0,0

Então, se eu quiser ir para o meu "espaço de trabalho" 4, o comando é:

wmctrl -o 0,768

Se eu quiser ir para o meu "espaço de trabalho" 8, o comando é:

wmctrl -o 1366,1536

Se eu quiser ir para o meu "espaço de trabalho" 9, o comando é:

wmctrl -o 2732,1536

Consegui? ;-)

O -osinalizador "trunca" seus valores. Em outras palavras, ele altera o "espaço de trabalho" ao qual o pixel real pertence. Os seguintes são equivalentes:

wmctrl -o 0,0
wmctrl -o 1365,767
desgua
fonte
1
Existe uma maneira de acessar a "área de trabalho atual + 1"?
xjcl 3/04
9

É lindamente simples alcançar o que você deseja xdotool, com várias opções para gerenciar diferentes áreas de trabalho (também conhecidas como 'áreas de trabalho' na documentação do programa). Acho que pode ser muito interessante e criativo encadear comandos de man xdotool; os comandos que formulei abaixo podem ser úteis em scripts.

Nota: Em alguns gerenciadores de janelas, ou se você estiver usando compiz, pode ser necessário usar xdotoolcomandos como set_desktop_viewporte get_desktop_viewport. Você pode precisar especificar os comandos de uma maneira diferente, como desgua sugere acima, mas, para mim, os comandos set_desktope se set_desktop_for_windowmostraram mais úteis em um sistema não compiz.)

( A solução é mais útil para usuários do Xubuntu / Lubuntu ou para aqueles que não estão executando o compiz, etc. )

Para listar o número de áreas de trabalho atuais, insira

xdotool get_num_desktops

Os seguintes comandos só funcionarão se você tiver pelo menos 1 outro espaço de trabalho.

Para alterar o foco para o seu espaço de trabalho 1, basta digitar

xdotool set_desktop 1 

Em seguida, para retornar ao espaço de trabalho padrão, insira

xdotool set_desktop 0

A área de trabalho só precisa ser especificada como o último valor no comando (1 ou 2 ou 3, etc).

Para encontrar o número da área de trabalho em que você está atualmente, você pode usar

xdotool get_desktop

Esses comandos podem ser usados ​​em scripts e devem ser muito úteis para conseguir o que você quer.

Para saber como alternar aplicativos para uma área de trabalho específica, consulte minha resposta aqui:

Para obter mais opções úteis disponíveis para alternar na área de trabalho, consulte man xdotool.

Comunidade
fonte
Gosto mais desta resposta do que a aceita, obrigado. Usei isso para definir dois cantos quentes para alternar facilmente entre dois espaços de trabalho.
horário de 8/08
Também útil: Alterne para a próxima área de trabalho à esquerda / direita usando o sinalizador relativo:xdotool set_desktop --relative -- -1
xjcl
1

Eu implementei um script que faz o que você deseja. Aqui está: https://github.com/norswap/wmov/blob/master/wmov.sh

Funciona de fato como descrito no post de desgua. Ele também possui os recursos para enviar janelas para outros espaços de trabalho.

Norswap
fonte
1
Nota: não funciona para a contagem virtual de desktop> 9.
j6m8
0

Existe um script chamado compiz-send.py no wiki do compiz que parcialmente responde à sua pergunta: não é um espaço de trabalho específico, mas você pode encontrar o próximo a ele.

Com isso, você pode emitir um comando
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
e fazer com que a viewport vá 1 para a esquerda ou para a direita.

Rinzwind
fonte
0

Ir para um espaço de trabalho específico e executar ações pode ser implementado com o Python e a biblioteca pyautogui , que permite que os scripts do Python executem cliques do mouse, pressionamentos de teclas, etc.

Escrevi um breve tutorial no fórum do Peppermint OS sobre como iniciar um aplicativo em um local de trabalho específico.

The_Fritz
fonte