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

21

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

Então, há um comando que se pode digitar em um terminal que forçaria um determinado espaço de trabalho a ser focado?

    
por Leron 07.05.2011 / 23:58

4 respostas

31

Você pode usar wmctrl .

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

Se você estiver usando o Compiz, você terá que fazer um truque porque os "espaços de trabalho" do Compiz são na verdade Viewports de um único espaço de trabalho.

Instruções de truques

Verifique a saída de wmctrl -d Por exemplo, o meu é:

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

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

Então é assim que funciona: nós 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 ao meu "espaço de trabalho" 1, o comando é:

wmctrl -o 0,0

Então, se eu quiser ir ao 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 ao meu "espaço de trabalho" 9, o comando é:

wmctrl -o 2732,1536

Entendeu? ; -)

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

wmctrl -o 0,0
wmctrl -o 1365,767
    
por desgua 08.05.2011 / 03:34
7

É muito simples conseguir o que você deseja com xdotool , que tem várias opções para gerenciar diferentes espaços de trabalho (também conhecidos como 'desktops' na documentação do programa). Eu acho que pode ser muito interessante e criativo juntar comandos de man xdotool ; os comandos que eu formulei abaixo podem ser úteis em scripts.

Observação: Com alguns gerenciadores de janela ou usando o compiz , talvez seja necessário usar os comandos xdotool , como set_desktop_viewport e get_desktop_viewport . Você pode ter que especificar os comandos de uma maneira diferente como desgua sugere acima, mas para mim o set_desktop e set_desktop_for_window de comandos se mostraram mais úteis em um sistema que não é compiz.)

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

Para listar o número de espaços de trabalho atuais, digite

xdotool get_num_desktops

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

Para mudar 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, digite

xdotool set_desktop 0

O espaço de trabalho só precisa ser especificado 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 alcançar o que você quer.

Para saber como alternar aplicativos para uma determinada área de trabalho, veja minha resposta aqui:

Para mais opções úteis disponíveis para a mudança de espaço de trabalho, consulte man xdotool .

    
por user76204 12.01.2013 / 20:46
1

Eu implementei um script que faz o que você quer. Aqui está: link

Funciona de fato conforme descrito no post do site. É também a capacidade de enviar janelas para outros espaços de trabalho.

    
por Norswap 12.01.2013 / 19:21
0

Existe um script chamado compiz-send.py no wiki compiz que aborda parcialmente a sua pergunta: não é um espaço de trabalho específico, mas você pode chegar a um ao lado dele.

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 ter a janela de exibição 1 para a esquerda ou para a direita.

    
por Rinzwind 08.05.2011 / 00:14