Ubuntu / Gnome: Abra um aplicativo em um espaço de trabalho específico

9

Como dizer a um aplicativo para abrir em um espaço de trabalho específico?

Mais informações:

Eu gosto de ter meu IDE C ++ na área de trabalho 2, meu IDE Java na área de trabalho 3 e meu email, navegador e vários na área de trabalho quatro. Eu também uso um script de shell que é executado no login:

#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4

Claro que atualmente tudo é aberto na área de trabalho atual ... Existe uma maneira de especificar em qual espaço de trabalho cada comando deve começar?

Obrigado antecipadamente!

    
por bguiz 12.01.2011 / 02:08

4 respostas

4

Você pode usar o devilspie para definir regras para as quais as janelas vão em qual espaço de trabalho.

Veja os documentos para um exemplo exatamente disso.

Mas MrStatic também tem uma boa sugestão. Tente isso primeiro, você pode até não precisar do seu script de shell.

Se você precisar que ele seja um comando que você pode usar em um shell script, dê uma olhada em wmctrl .

    
por 12.01.2011 / 03:08
5

Eu tentei a ferramenta wmctrl e descobri que a solução mais fácil que funcionou para mim é mover a janela com o seguinte comando:

wmctrl -r <WindowName> -t <WorkspaceNumber>

Observe que os números da área de trabalho começam em 0. Por último, você pode mover para sua área de trabalho preferida com o comando:

wmctrl -s <WorkspaceNumber>
    
por 21.10.2012 / 11:00
1

Eu uso essa estrutura básica em scripts para abrir um conjunto específico de aplicativos em espaços de trabalho específicos ... o exemplo abre meu terminal e o move para o espaço de trabalho 1 ...

cd
gnome-terminal
until wmctrl -l | grep -q "me@mypc ~"; 
do
    sleep 0.1
done
wmctrl -r "me@mypc ~" -t 1
    
por 07.04.2018 / 08:00
-1

Tenho quase certeza de que é impossível fazer isso. O motivo é que os ambientes de janelas como o GNOME esperam que o software lide com isso, e os criadores de software esperam que os ambientes de janelas lidem com isso.

O Devilspie é uma boa ideia, mas faz correspondência de padrões (ou seja, se nome == 'google-chrome'). Então, o que acontece se eu abrir dois navegadores? Ambos são movidos para o mesmo espaço de trabalho? Eu tenho 6x3 = 18 espaços de trabalho, cada um com uma instância específica de cromo. Ajudaria se eu pudesse renomear esses programas (por exemplo, 'google-chrome1', 'google-chrome2' ...), mas não consigo encontrar uma maneira de fazer isso. Então temos que usar o wmctrl.

wmctrl é um pouco melhor b / c além de usar títulos de janela, você também pode usar IDs de janela ou apenas usar a janela realçada atualmente. IDs de janela são uma dor para obter b / c eles não são gerados imediatamente. Veja abaixo

gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

mas o controle não é retornado à linha de comando até que o gedit seja encerrado. Tudo o que temos que fazer para contornar isso é colocar um sinal &

gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

mas agora o controle é, 99,999% do tempo, retornado para a linha de comando ANTES de os gerenciadores de janela iniciarem a janela e não há como encontrar o ID da janela. É preciso configurar uma técnica de looping muito complexa para testar se alguma nova janela foi criada e para adivinhar se é a janela que estamos procurando.

Verificando a janela ativa através do sinalizador :ACTIVE: tem o mesmo problema, ela não espera que o programa termine de ser executado.

wmctrl parece-me um programa muito estranho. Parece que foi projetado para pessoas sem mouse ou não é possível arrastar fisicamente seus programas pelos espaços de trabalho.

    
por 18.10.2011 / 02:18