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 no 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 bem as janelas entre os monitores no Screen0. Também posso mover meu mouse livremente entre Screen0 e Screen1 e até os dados da área de transferência são transportados entre as duas telas X, ok.
Ambas as telas X atuam como desktops independentes, com seu próprio conjunto de viewports. Eu gosto dessa maneira e é útil para fazer um lado "ficar" 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 executar esse programa na outra tela, tenho que 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 nessa questão, mas estou pensando nisso há algum tempo. Para ganhar a recompensa, você deve fornecer uma citação para a prova.
Respostas:
Você não pode mover um aplicativo X iniciado diretamente com o servidor X no qual o aplicativo é exibido, devido ao fato de um cliente X estar "vinculado ao servidor X (exibição X) em que ele foi iniciado durante toda a vida útil" [ 1 ] provavelmente com metadados que o servidor X contém sobre as janelas de um cliente que não podem ser facilmente transferidas entre os servidores X.
O mesmo se aplica às telas configuradas separadamente (quando não se usa extensões como Xinerama ou Twinview) para programas que não possuem suporte para várias telas explicitamente escrito em - "Com essa configuração, não é possível mover janelas entre telas, além de alguns programas especiais, como o GIMP e o Emacs, que oferecem suporte para várias telas ". [ 2 ]
Em teoria, se um aplicativo foi projetado para lidar com uma alternância 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 poucas os aplicativos seriam projetados dessa maneira e necessariamente envolveriam muitos clichês ou a inclusão de uma biblioteca que facilitaria isso de alguma forma.
A melhor opção para você é provavelmente usar outros aplicativos que possam atuar como proxy entre um cliente X e o servidor X de exibição de maneira semelhante à tela GNU que pode ser usada para aplicativos de console e terminal. Xmove e Xpra [ 3 e 4 ] parecem ser as implementações mais usadas para fazer isso. A ressalva de usá-los é que os aplicativos que você inicia precisam se registrar no Xmove ou no Xpra como servidor X para poder alternar o contexto entre os diferentes servidores de exibição.
Finalmente, há outra pergunta, no SuperUser, que está fazendo uma pergunta semelhante para um propósito ligeiramente diferente (reconecte-se ao X após a falha do X, em vez de desconectar / reconectar deliberadamente o cliente) [ 5 ]
fonte