como deslocar aplicativos da área de trabalho 1 para 2 usando o comando

9

Existe alguma maneira de alternar o aplicativo em execução em um espaço de trabalho para outro na linha de comando? Eu uso o Ubuntu 10.04

UPDATE1
Conforme sugestões abaixo

 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

agora quando digito

wmctrl -r :OMG! Ubuntu! | wmctrl - Chromium: -t 2 No window was specified.

Então, como usá-lo corretamente, qual é o erro acima?

UPDATE2
 Eu tentei

  

wmctrl-r 0x05000072 -t 2

mas as janelas não tiveram efeito e permaneceram no mesmo espaço de trabalho.

    
por Registered User 20.03.2011 / 19:15

7 respostas

10

Se você estiver usando um gerenciador de janelas compatível, como o Metacity (Unidade 2-d), poderá usar wmctrl para alternar uma janela para outra área de trabalho. A sintaxe é wmctrl -r :ACTIVE: -t <DESKTOP> . Você também pode alterar sua área de trabalho atual usando wmctrl -s <DESKTOP> . Os números da área de trabalho começam em 0. Em uma linha, isso seria:

wmctrl -r :ACTIVE: -t 1; wmctrl -s 1

Se você quiser mudar uma janela diferente da ativa para outra área de trabalho, use o texto do título como argumento para -r. Por exemplo:

wmctrl -r "Chromium" -t 1

Como alternativa, você pode usar wmctrl -l para listar as janelas disponíveis e passar o número de ID para -r em vez da string especial :ACTIVE: . Ao passar um id, você também precisa adicionar -i. Por exemplo:

$ wmctrl -l
0x03e00189  0 hostname Ask Ubuntu - Chromium
$ wmctrl -i -r 0x03e00189 -t 2

(wmctrl pode ser instalado no Ubuntu com sudo apt-get install wmctrl .) No momento, isso parece não funcionar com o padrão Unity, infelizmente.

    
por skyblue 20.03.2011 / 21:08
3

Aqui está um script meu que implementa o que você pergunta: link

Em sua forma atual, ele pode enviar janelas (selecionadas pela correspondência de uma string sem distinção entre maiúsculas e minúsculas, como a wmctrl -r ) a outras áreas de trabalho, seja escolhendo um número de área de trabalho explícito ou indicando a direção da área de trabalho na área de trabalho atual.

Por exemplo:

./wmov.sh mov "Google Chrome" 3 # sends Chrome to desktop 3 (bottom left)
./mov.sh mov Skype right # sends Skype to the desktop to the right of
                         # the current desktop (if any)

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:25
2

Se você estiver usando o compiz, então veja aqui no wiki do compiz . Lá você encontra vários exemplos. Veja o plugin "colocar".

Exemplo

./compiz-dbus-send.py put put_viewport_right_key
    
por nsg 20.03.2011 / 19:57
1

Primeiramente, o cólon faz parte do token mágico :ACTIVE: para indicar a janela ativa. Você não quer normalmente. Segundo, você precisa citar strings com espaços nelas.

Você também pode obter o ID da janela (o 0x... no início de cada linha) e usá-lo em vez de tentar fazer com que o título funcione.

$ wmctrl -r 'OMG! Ubuntu! | wmctrl - Chromium' -t 2 # wherever it is, move it to 2
$ wmctrl -r 0x0482a380 -t 2 # same thing
    
por geekosaur 21.03.2011 / 18:53
1

É possível fazer isso com xdotool , mas se você estiver usando compiz esta solução pode não ser aplicável, então lembre-se disso.

Para alternar uma janela específica (a janela ativa) para uma área de trabalho diferente, você pode usar

xdotool getactivewindow set_desktop_for_window 1

Ou, para um script, você pode querer mudar as janelas de um determinado programa para um determinado espaço de trabalho com:

xdotool search --class firefox set_desktop_for_window %@ 1

Esse comando pesquisa e localiza a (s) janela (s) firefox e as transfere para a área de trabalho 1, onde eles aparecerão minimizados. Para retornar firefox para a área de trabalho padrão, basta substituir o 1 por um 0 no final do comando. Para enviar uma janela diferente para outra área de trabalho, basta substituir firefox por outro nome de programa.

É crucial que você use %@ para representar as janelas passadas do parâmetro --search , como se nenhuma janela fosse transferida.

Para mais informações, consulte man xdotool e as páginas do Ubuntu online.

    
por user76204 12.01.2013 / 22:18
0

Modificando um pouco o script que é dado como solução para pergunta , o seguinte "traz" uma determinada janela para o espaço de trabalho atual (no compiz):

#!/bin/bash

SCREEN_W=$(xwininfo -root | sed -n 's/^  Width: \(.*\)$//p')
SCREEN_H=$(xwininfo -root | sed -n 's/^  Height: \(.*\)$//p')

NAME=""

wmctrl -xlG | awk -v NAME="$NAME" '==NAME {print }' | while read WINS; do wmctrl -ir "$WINS" -e "0,0,0,$SCREEN_W,$SCREEN_H"; done

exit 0

Se um espaço de trabalho arbitrário é desejado, então é uma questão de adicionar / subtrair o $SCREEN_W / $SCREEN_H correspondente, tantas vezes quanto os espaços de trabalho que uma janela está longe do alvo.

    
por ivotron 09.11.2012 / 03:06
0

Tente:

wmctrl -r “window name(or any string in the title)” -t 'wmctrl -d | grep “workspace name” | cut -d" " -f1'

deixe-me explicar: na ajuda do wmctrl mostra

    -r <WIN> -t <DESK>   Move the window to the specified desktop.
    <DESK>               A desktop number. Desktops are counted from zero.
    <WIN>          This argument specifies the window. By default it's
                   interpreted as a string. The string is matched
                   against the window titles and the first matching
                   window is used. The matching isn't case sensitive
                   and the string may appear in any position
                   of the title.

                   The -i option may be used to interpret the argument
                   as a numerical window ID represented as a decimal
                   number. If it starts with "0x", then
                   it will be interpreted as a hexadecimal number.

wmctrl -d pode listar todos os espaços de trabalho, no meu computador agora mostra como segue:

0  - DG: 1600x900  VP: N/A  WA: 0,0 1600x868  code
1  * DG: 1600x900  VP: 0,0  WA: 0,0 1600x868  play 
2  - DG: 1600x900  VP: N/A  WA: 0,01600x868  research

* significa a área de trabalho atual

BTW, wmctrl -l é listar todas as janelas (que você já conhece), no meu computador agora elas são:

0x05400008  1 user-LinuxMint Terminal
0x03a0008e  0 user-LinuxMint Mozilla Firefox


já que o "DESK" deve ser o número, eu uso grep “workspace name” | cut -d" " -f1 para obtê-lo.

Por exemplo, se eu quiser mover o Firefox para o "código" do espaço de trabalho, posso usar:

wmctrl -r "firefox" -t 0 

ou

wmctrl -r "moz" -t 'wmctrl -d | grep "code" | cut -d" " -f1'

mas

wmctrl -r -i 0x03a0008e -t 'wmctrl -d | grep "code" | cut -d" " -f1'

Apenas trabalhe comigo uma vez e não sei por quê!

    
por highwind 06.04.2014 / 06:50