É possível mover uma janela de uma tela X para outra no mesmo host?

12

Estou executando o XFCE 4.12 com 3 monitores configurados em duas telas X e duas placas de vídeo no mesmo computador. Dois dos monitores formam uma única tela X usando a funcionalidade nvidia twinview, que é Screen0 em Device0 na configuração do Xorg. O terceiro monitor é para a segunda tela, que é Screen1 no Device1 na configuração do Xorg. Eu posso arrastar janelas bem entre os monitores no Screen0. Eu também posso mover meu mouse livremente entre Screen0 e Screen1 e até mesmo os dados da prancheta são carregados entre as duas telas X ok.

Ambas as telas X atuam como áreas de trabalho independentes que possuem seu próprio conjunto de viewports. Eu gosto desse jeito e é útil para fazer um "stick" de lado automaticamente. No entanto, se eu iniciar um programa em uma tela X, não posso movê-lo para a outra tela X simplesmente arrastando-o. Se eu quiser rodar esse programa na outra tela, preciso reiniciá-lo nessa tela.

Minha pergunta é se existe uma maneira de mover o programa enquanto ele está sendo executado para a outra tela usando algum comando ou outra função do X windows. Obrigado.

Atualização: Vou começar uma recompensa por essa questão, mas venho me perguntando sobre isso há algum tempo. Para ganhar a recompensa, você tem que fornecer alguma citação para a prova.

    
por deltaray 28.10.2015 / 15:08

1 resposta

9

Você não pode mover um aplicativo X iniciado diretamente com o servidor X no qual o aplicativo é finalmente exibido, isto é devido a um cliente X estar "ligado ao servidor X (X display) em que foi iniciado durante sua vida útil" [< a href="https://en.wikipedia.org/wiki/Xmove"> 1 ] Isso é mais provável com os metadados que o servidor X mantém sobre as janelas de um cliente que não podem ser facilmente transferidas entre os servidores X .

O mesmo acontece com as telas configuradas separadamente (quando não estão sendo usadas extensões como Xinerama ou Twinview) para programas que não têm suporte para várias telas explicitamente gravados - "Com essa configuração não é possível mover janelas entre telas , além de alguns programas especiais como o GIMP e Emacs, que têm suporte multi-screen. "[ 2 ]

Em teoria, se um aplicativo foi projetado para lidar com um comutador de contexto do servidor X, ele pode ser fornecido com o novo número de tela / exibição, salvar o estado de suas janelas, conectar-se ao novo servidor / tela X e ressuscitar suas janelas , mas poucos aplicativos seriam projetados dessa maneira e envolveriam necessariamente um monte de clichê ou a inclusão de uma biblioteca que facilitaria isso de alguma forma.

A melhor opção para você é provavelmente usar outros aplicativos que podem atuar como um proxy entre um cliente X e o servidor X de exibição de uma forma similar que a tela GNU pode ser usada para aplicativos de console e o terminal. Xmove e Xpra [ 3 & 4 ] parecem ser as implementações mais utilizadas para isso. A ressalva de usá-los é que os aplicativos que você inicia têm que se registrar com Xmove ou Xpra como seu servidor X para poder mudar o contexto entre diferentes servidores de exibição.

Finalmente, há outra pergunta, no SuperUser, que está fazendo uma pergunta semelhante para um propósito um pouco diferente (reconectar ao X após X travar, em vez de desconexão / reconexão deliberada do cliente) [5 ]

por 05.11.2015 / 18:20

Tags