Não, você não pode fazer isso diretamente. Na arquitetura X, os dois monitores físicos que você vê não são discerníveis pelos aplicativos. Você só pode trabalhar em torno dessa abstração, determinando quais áreas do espaço de trabalho visível correspondem a qual monitor e, em seguida, colocar as janelas no deslocamento correto.
Os kits de ferramentas compatíveis suportam a opção -geometry
, que permite que seu aplicativo solicite a colocação em uma posição específica. Se você não tiver essa opção disponível, poderá usar wmctrl
se tiver um X Window Manager compatível com EWMH / NetWM para mover e redimensionar janelas já existentes (consulte wmctrl (1), você precisa das opções -r
e -e
). Eu uso devilspie
para forçar a colocação de algumas janelas e, claro, o seu gerenciador de janelas de escolha pode ter sua própria facilidade para forçar a colocação de janelas.
devilspie
permite aplicar certas ações no X Windows e pode usar as propriedades da janela X para discernir janelas e aplicativos diferentes. A regra principal para você seria geometry "<width>x<height>+<xoffset>+<yoffset>"
.
No entanto, você sempre precisa fazer os cálculos de quando e onde outro monitor físico começa você mesmo. Mas isso não é muito difícil e xrandr
diz a você como e onde ele usa monitores na forma de "<width>x<height>+<xoffset>+<yoffset>
em cada linha, com um nome de saída.
Não existe a maneira infalível de apenas funcionar, porque as implementações podem (e variam!) variar. wmctrl
normalmente trabalha no título da janela para identificar o alvo. devilspie
também pode se referir a sua classe, mas não tenho conhecimento de nenhum kit de ferramentas que permita especificar uma classe do X Window, mas não sua geometria.
É claro que você sempre pode iniciar duas xephyr
instâncias e fazer uma preencher a tela esquerda e a outra a tela da direita e depois endereçar telas pela variável de ambiente DISPLAY
, mas essa solução tem outras desvantagens.
Em teoria, a autoridade para governar a colocação de janelas é o gerenciador de janelas. Conseqüentemente, se você quiser coisas que seu gerenciador de janelas não pode, será hacky e é também a razão pela qual não existe uma maneira genérica de fazer isso.
Ainda, se o seu caso de uso concreto for o seu emulador android ... o que é muito diferente de pedir a opção para especificar SCREEN=n fooapp
no shell, então devilspie
pode ser o que você está procurando. Dica: descobri que é melhor identificar aplicativos por sua classe de janela.