30th Aug, 2008

Feche o X sem fechar os seus programas com o xmove

Ainda catalogando pacotes para o projeto descrito em post anterior, esbarrei com um programa muito interessante.

O xmove permite mover janelas de um servidor X para outro, ou ainda suspender janelas - o que permite deixar programas gráficos abertos mesmo que não estejam conectados a nenhum servidor X real.

Isso permite que você faça algo semelhante ao que se faz com o screen ao usar aplicações para console, só que com aplicações gráficas.

Darei um exemplo de uso do xmove a seguir - manter o xchat aberto mesmo que você precise fechar o X.

Usando o xmove para suspender clientes do X

Primeiramente, rode o xmove em segundo plano:

(xmove -interface localhost&)

Note os argumentos -interface localhost. Eles são colocados por medida de segurança pois, por padrão, o xmove escutaria em todas as interfaces de rede, e poderia ser acessado remotamente (esse comportamento é descrito em sua manpage).

Agora aponte a variável de ambiente DISPLAY para o display do xmove:

export DISPLAY=localhost:1

E inicie o processo do xchat em segundo plano:

(xchat&)

Você pode iniciar quantos programas quiser. Para suspender todos os programas que estão rodando debaixo do xmove, e poder fechar o seu servidor X, digite o seguinte comando:

xmovectrl -moveall -suspend

Note que para usar o xmovectrl, a variável DISPLAY precisa estar apontando para o display do xmove.

Fazendo isso, as janelas dos programas desaparecerão da tela, e você poderá fechar o seu servidor X.

Depois de reabrir o servidor X, para pegar as janelas de volta, volte a definir a variável de ambiente DISPLAY corretamente e chame o xmovectrl, da seguinte forma:

export DISPLAY=localhost:1
xmovectrl -moveall :0

Se aparecer a mensagem "Not authorized to connect with xmove", não se desespere. Apenas rode o comando mais uma vez.

Idéias

Um recurso interessante seria se o xmove suspendesse os clientes automaticamente caso detectasse que o servidor X foi desligado. Atualmente, caso você desligue o servidor X sem suspender os clientes como indiquei aqui, eles morrem. Se alguém quiser implementar, aí está uma boa dica. Senão, quem sabe eu mesmo não implemento algum dia?

Outros usos

É importante lembrar que o xmove não serve apenas para suspender clientes do X. Ele pode efetivamente mover janelas de um servidor X para outro. Conseqüentemente, pode mover janelas de um computador para outro.

Imagine um esquema automatizado desses no qual você mova a janela para o canto da tela, e ela apareça no computador vizinho. Isso seria possível de ser implementado estendendo o gerenciador de janelas, e permitiria uma interessante forma de trabalho em grupo.

Responses

[...] ao que se faz com o screen ao usar aplicações para console, só que com aplicações gráficas. Neste artigo, dou um exemplo de uso do xmove – manter o xchat aberto mesmo que você precise fechar o [...]

Achei muito interessante e já reportei também no meu Blog.

[...] artigo ensina como no caso de aplicações X que param de responder, podem ser direcionadas para outro [...]

[...] impressiona pela qualidade técnica e pela quantidade de bom material postado regularmente, como o Tutorial do Xmove, ou o Projeto Sheriff, criado junto com o Hugo Dória, líder do Archlinux-BR e desenvolvedor do [...]

[...] Feche o X sem fechar os seus programas com o xmove [...]

Leave a response

Your response:

Categories