Gostaria de obter um comportamento como este: Quando uso a tela do meu laptop, meu primeiro espaço de trabalho é usado. Quando conecto uma segunda tela (via HDMI), um segundo espaço de trabalho é usado e todas as novas janelas abertas nessa segunda tela ficam no segundo espaço, exceto que eu troque o espaço de trabalho na segunda tela para outro espaço de trabalho.
Quando eu desconecto minha segunda tela, todas as janelas permanecem nos espaços de trabalho em que foram criados e eu posso alternar os espaços de trabalho no meu laptop para vê-los.
Esse comportamento já é possível?
multiple-monitors
workspaces
velop
fonte
fonte
Respostas:
Tudo é possível no linux. Você precisará de algum conhecimento básico sobre o Xserver , algum tempo e um sistema para testar, já que está mexendo com o seu X e certamente precisará do navegador em execução se precisar de ajuda :-)
Na minha opinião, existem três soluções possíveis:
As configurações de monitores múltiplos usam o Xinerama . A solução mais simples que consigo pensar é adicionar uma terceira tela virtual à sua configuração e simplesmente mover as janelas para lá usando o xdotool. Existem algumas desvantagens nesta solução, mas não seria necessário o esforço de mover janelas entre diferentes Xservers, o que geralmente não é possível.
Como não é possível mover janelas entre diferentes Xservers , precisamos de um tipo de proxy como xmove ou Xpra para fazer isso por nós. Acho que as janelas vivem em uma sessão Xfvb separada para ocultar as janelas. Você pode anexar e desanexar à sessão.
Independentemente do método usado, você precisa de um evento quando o monitor é desconectado. O evento deve ser acionado quando a tela é desconectada e também quando reconectada. Você pode daemonizar o script para assistir ao evento.
Eu preferiria a solução usando o Xpra por vários motivos. Só posso lhe dar algumas dicas de como fazê-lo. As soluções não estão completas, mas você deve começar.
Solução Xinerama
Configuração
A instalação do Xinerama deve ser estendida para ter uma configuração estática: consulte https://help.ubuntu.com/community/XineramaHowTo
veja também terceira tela falsa e Xdummy
obter janelas afetadas
Podemos usar o xdotool para procurar janelas. Depois, podemos verificar a posição deles e movê-los. Estou assumindo dois monitores com
1920x1080
configuração. A seguir, todas as janelas serão movidas da tela do xinerama da direita para a esquerda.Agora você pode mover todas as janelas da tela do laptop (tela0) para uma terceira tela (virtual) se um monitor for conectado. Ao mesmo tempo, você pode mover qualquer janela armazenada na terceira tela para a primeira.
Solução XPRA
Para usar o Xpra para mover as janelas, todas as janelas precisam ser gerenciadas pelo Xpra antes. Você precisa iniciar toda a área de trabalho usando o Xpra na inicialização do sistema. Duas vezes uma é a área de trabalho principal onde você trabalha e a outra é principalmente uma área de trabalho virtual.
Agora você pode ter o Windows para a tela desconectada em execução em uma sessão xpra separada e anexar / desconectar quando o monitor alternar.
Há também uma extensão de shell gnome descontinuada que pode ser útil se você quiser mover manualmente uma janela do oculto
:99
para o normal:0
entre as exibições xpra iniciadas.O evento
Você pode observar a desconexão / reconexão de um monitor específico
talvez preste atenção nas dimensões alteradas do seu xinerama usando o xwininfo para torná -lo independente do monitor desconectado, se você quiser, ou seja, estender sua configuração para 3 monitores e desconectar um dispositivo arbitrário. Observe que isso funcionará apenas para a solução xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0
fonte