Iniciando um programa em janela em um espaço de trabalho específico, na linha de comando

Iniciando um programa em janela em um espaço de trabalho específico, na linha de comando

Gostaria de saber se posso "enviar" um programa em janela para um espaço de trabalho específico ao iniciá-lo via linha de comando.

Por exemplo, gostaria de iniciar meu computador com um certo número de programas em janelas abertas em diferentes espaços de trabalho. Isso é possível? Quais são alguns conceitos básicos por trás disso?

Estou usando o Unity, no Ubuntu 14.04.

Eu também tentei começar, gdevilspiemas parece queafetado por um bug.

obrigado! :)

Responder1

Usando wmctrl, exemplo gedit:

gedit & sleep 3; wmctrl -i -r `wmctrl -l -p | grep $! | awk '{ print $1 }'` -t 1
  • gedit &execute o gedit em segundo plano
  • sleep 3durma por 3 segundos, espere pela criação da janela (minha máquina está um pouco lenta)
  • $!retornar PID do comando anterior (ou seja: gedit pid)
  • wmctrl -l -p | grep PID | awk '{ print $1 }'obter WID do gedit PID
  • wmctrl -i -r WID -t 1mover janela com WID para a segunda área de trabalho

Outra maneira:

wmctrl -s 1 ; gedit & sleep 3; wmctrl -s 0;
  • Mude para a segunda área de trabalho, inicie o gedit, espere 3 segundos; voltar para a primeira área de trabalho

Referência:

Responder2

É basicamente o mesmo @user.dz respondido, apenas parametrizado e em vez de dormir por 3 segundos para que o manipulador do Windows seja criado, este faz um loop até encontrá-lo.

# workspace target
_WS=3
export DISPLAY=:0 

gedit &
_PID="$!" 
_WID=""
while [[ $_WID == "" ]]; do
  _WID=$(wmctrl -l -p 2>/dev/null | grep $_PID | awk '{ print $1 }')
sleep 1
done

wmctrl -i -r $_WID -t $_WS

informação relacionada