
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, gdevilspie
mas 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 planosleep 3
durma 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 PIDwmctrl -i -r WID -t 1
mover 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