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.