Espaço de trabalho separado para segunda tela

16

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?

velop
fonte
Já consegui ativar os espaços de trabalho com Aparência -> Behvior e desabilitei os espaços de trabalho verticais com o CompizConfig Settings Manager. Existem também os plugins Expo e Viewport Switcher que parecem capazes de fazer o que eu quero, mas tenho medo de alterar as configurações sem o conhecimento.
Velop #
Sua pergunta é um pouco confusa. Se você está pedindo para fazer exibições como dois espaços de trabalho separados, a resposta é não, não é possível. Se você está pedindo para alterar automaticamente o número de áreas de trabalho ao conectar a segunda tela, isso é possível. Por favor, esclareça / simplificar o que você está pedindo
Sergiy Kolodyazhnyy
2
Encontrei a opção Compiz -> Desktop Wall -> Viewport Switching -> Multimonitor bahvior -> Switch separadamente. Mas, aparentemente, isso não funciona.
velop
@velop, você pode editar esses comentários na pergunta?
SDsolar

Respostas:

1

Esse comportamento já é possível?

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 1920x1080configuração. A seguir, todas as janelas serão movidas da tela do xinerama da direita para a esquerda.

while read xwindowid; do
    eval $(xdotool getwindowgeometry --shell "$xwindowid")
    if (( X > 1920 && X <= (1920 * 2))); then
        xdotool windowmove --relative $WINDOW -1920 y
    fi
done <<< "$(xdotool search --screen 0 '.*')"

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.

xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach

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.

xpra attach :99
xpra detatch :99

Há também uma extensão de shell gnome descontinuada que pode ser útil se você quiser mover manualmente uma janela do oculto :99para o normal :0entre 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

ukos
fonte