Como alterar o DISPLAY do aplicativo em execução no momento

5

Eu tenho vários monitores abertos em um servidor central. É possível "mover" um aplicativo X-window que está sendo executado em um determinado DISPLAY para um diferente DISPLAY ? Como isso pode ser feito?

Estou usando xpra com vários monitores remotos.

    
por cerr 03.11.2017 / 19:02

1 resposta

0

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.

    
por 07.09.2018 / 11:14