Não é possível mover um aplicativo X window em execução para uma exibição diferente, conforme determinado pela variável DISPLAY
, por dois motivos.
O primeiro é que é difícil alterar o ambiente de um processo em execução , e é impossível fazê-lo de maneira confiável e de tal forma que a mudança é levada em conta.
A segunda é que a variável DISPLAY
é apenas uma entrada e normalmente é considerada apenas na inicialização do aplicativo. Um aplicativo X chama XOpenDisplay
no início de sua inicialização, direta ou indiretamente, e que (ou melhor, XTOpenDisplay
) é o que leva DISPLAY
em conta (se necessário - o servidor X a ser usado pode ser especificado de outras maneiras). XOpenDisplay
retorna um ponteiro para uma estrutura Display
opaca que representa a conexão com o servidor X, e isso é tudo o que é usado para falar com o servidor X depois disso. Alterar o valor de DISPLAY
depois disso não terá efeito algum. o aplicativo teria de alguma forma perceber que o valor mudou, fechar sua conexão com o servidor X e abrir um novo.
Os dois pontos juntos significam que é muito difícil até escrever um aplicativo que pode alterar sua exibição (porque foi projetado para isso), e muito menos alterar a exibição quando um aplicativo não espera.