Separar espaço de trabalho para segunda tela

17

Gostaria de obter um comportamento como este: Quando uso a tela do meu laptop, meu primeiro espaço de trabalho é usado. Quando eu conecto uma segunda tela (via HDMI), uma segunda área de trabalho é usada e todas as novas janelas abertas nessa segunda tela ficarão no segundo espaço, exceto que eu alterno a área de trabalho na segunda tela para outra área de trabalho.

Quando eu desconectar minha segunda tela, todas as janelas ficarão nos espaços de trabalho em que foram criadas e eu posso mudar os espaços de trabalho no meu laptop para vê-los.

Esse comportamento já é possível?

    
por velop 12.10.2016 / 10:17

1 resposta

1

Is this behavior already possible?

Tudo é possível no linux. Você precisará de algum conhecimento básico sobre o Xserver , algum tempo e um sistema para testar, já que você está mexendo com seu X e você certamente precisa do navegador rodando se precisar de ajuda: -)

Na minha opinião, existem três soluções possíveis:

  • Configurações de multimonitor usam Xinerama . A solução mais simples que posso imaginar é adicionar uma terceira tela virtual à sua configuração e simplesmente mover as janelas usando o xdotool. Há algumas desvantagens nessa solução, mas isso não exigiria o esforço de ter que move janelas entre diferentes Xservers que em geral não é possível.

  • Como não é possível mover janelas entre diferentes Xservers , precisamos de um tipo de proxy como < a href="https://en.wikipedia.org/wiki/Xmove"> xmove ou Xpra fazer isso por nós. Acho que as janelas vivem em uma sessão separada Xfvb esconda as janelas. Você pode anexar e desanexar a sessão.

  • Independentemente do método que você está usando, você precisa de um evento quando o monitor for desconectado. O evento deve ser acionado quando a tela é desconectada e também quando reconectado. Você pode daemonizar o script para assistir ao evento.

Eu preferiria a solução usando o Xpra por vários motivos. Eu só posso te dar algumas dicas de como fazer isso. As soluções não estão completas, mas você deve começar.

Solução Xinerama

Configuração

A configuração do Xinerama deve ser estendida para ter uma configuração estática: Consulte o link

veja também terceira tela falsa e Xdummy

obter janelas afetadas

Podemos usar o xdotool para procurar por janelas. Depois, podemos verificar sua posição e movê-los. Estou assumindo dois monitores com configuração 1920x1080 . A seguir, todas as janelas serão movidas da tela xinerama direita para 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 seu laptop (screen0) para uma terceira tela (virtual) se um monitor for anexado. Ao mesmo tempo, você pode mover qualquer janela armazenada na terceira tela para a primeira tela.

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 sua á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 sendo executada em uma sessão xpra separada e anexar / desconectar quando o monitor alterna.

xpra attach :99
xpra detatch :99

Há também uma extensão do shell do gnome dicontinued que pode ser útil se você quiser mover manualmente uma janela do oculto :99 para o% normal:0 entre os displays xpra iniciados.

O evento

  • Você pode observar o desconectar / reconectar de um display específico

  • talvez fique atento às dimensões alteradas do seu xinerama usando xwininfo para que ele seja independente do monitor não conectado se você quer, por exemplo, estender sua configuração para 3 monitores e desconectar um dispositivo arbitrário. Observe que isso só funcionará para a solução xpra.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

por ukos 16.02.2018 / 17:13
-1

Anos atrás, quando comecei, pensei da mesma maneira. Seria bom ter dois ambientes com dois desktops diferentes nas diferentes janelas. O problema é que estamos basicamente pedindo um desktop "virtual".

  

Esse comportamento já é possível?

Para responder à sua pergunta sem rodeios, NÃO!

Mas, enquanto eu estava lendo sua pergunta, percebi que é muito parecido com o que estou vendo no meu computador agora ... Mas, não é exatamente o que você quer.

O que você está vendo é um VirtualBox do Lubuntu à direita. Windows 10 à esquerda.

(Por acaso estou experimentando com VB como meus planos são para definir meu laptop quebrado como um servidor VirtualBox para que eu possa converter este computador de volta para 'buntu e RDP no Laptop para usar qualquer outro sistema operacional que eu quiser.)

Eu configurei cada VM para diferentes programas que quero, para que eles permaneçam pequenos. Eu tenho três monitores e no outro dia eu tinha RDP no computador Win7 da minha esposa, e meu Win7 e Lubuntu estavam abertos em monitores diferentes. Eu acho que eu precisava de um quarto monitor para o meu desktop real, LOL.

Quanto ao nosso desejo de ter desktops diferentes a partir da mesma instalação do SO, receio que o SO precise de mais recursos do que dois dos sistemas de MS mais inchados que o Gates pode inventar.

Caso contrário, basta alternar entre os espaços de trabalho conforme necessário.

    
por Buck 08.01.2018 / 13:40