Como dividir o widescreen verticalmente em dois espaços de trabalho virtuais no Ubuntu / Gnome?

23

Meu novo laptop possui uma tela grande de 16: 9, e acho difícil utilizá-lo totalmente durante os 95% do tempo em que não assisto a filmes em HD.

Gostaria de configurá-lo como uma espécie de tela dupla virtual dividindo a tela física em dois espaços de trabalho. Sei que poderia organizar minhas janelas manualmente, mas gostaria de poder maximizar uma janela e consumir apenas metade do monitor, e ter suas caixas de diálogo pop-up centralizadas na meia-tela, esse tipo de coisa.

Existe algum tipo de plug-in disponível para fazer isso?

David
fonte
Se você estiver usando o compiz, poderá encontrar o plug-in de grade mais direto, veja minha resposta abaixo.
Kynan

Respostas:

24

você pode usar ' fakexinerama ' para conseguir o que deseja:

 Fake Xinerama is a replacement libXinerama library that instead 
 of querying the XServer reads ~/.fakexinerama and provides fake 
 information about Xinerama screens based on this file. It can be 
 used to fake a Xinerama setup even on computers with just one monitor
 or to fake Xinerama setup other than one specified in the XServer 
 configuration (e.g. making one screen smaller when using two same 
 screens). It's probably only useful for developers.
akira
fonte
1
Obrigado, isso funciona perfeitamente e melhor do que eu esperava. Minhas docas, barras de painel e janelas flutuantes abrangem a tela física, mas os aplicativos maximizados e em "tela cheia" (incluindo minhas instâncias de convidado do vmware) mantêm educadamente a metade da tela. Eu sou muito novo no linux, portanto, hackear minhas configurações de exibição me pareceu um pouco arriscado, mas não há muito trabalho envolvido. Estou documentando minhas etapas exatas para outros amadores do linux (como eu) em uma resposta adicional abaixo.
David
2
Link quebrado. Alguma idéia de onde eu poderia encontrar esse software?
Maxime19
17

Para expandir a dica de akira acima, sobre o uso do "falso xinerama" de Lubos Lunak, eis exatamente como eu o fiz funcionar para mim:

  1. Eu fiz o download deste arquivo Xinerama.c do local Xinerama Falso .
  2. Abri um terminal e naveguei para a pasta da pasta onde salvei o Xinerama.c.
  3. Eu executei:
    gcc -O2 -Wall Xinerama.c -fPIC -o libXinerama.so.1.0.0 -shared
  4. Abri o nautilus (o explorador de arquivos gnome) como root, digitando Alt-F2 e depois:
    gksu nautilus
  5. Naveguei para / usr / lib, encontrei libXinerama.so.1.0.0 e fiz uma cópia de backup dele.
  6. Copiei o libXinerama.so.1.0.0 do meu diretório de download para o diretório / usr / lib, substituindo a cópia lá (que eu havia acabado de fazer backup na etapa 5, para poder desfazer isso mais tarde, se necessário). Para esclarecer as coisas, foi útil observar que o tamanho do arquivo da versão "falsa" era maior (12,6 kb) do que a versão "real" que eu estava substituindo (8,6 kb).
  7. Criei um novo arquivo de texto chamado .fakexinerama no meu diretório / home / dave e o coloquei: (com base no tamanho da tela física de 1440x900)
    2
    0 0 720 900
    720 0 720 900

O Xinerama falso permite definir qualquer tipo de configuração de tela virtual desejada, mas eu só quero uma tela dividida vertical. Para conseguir isso em seu monitor, X por Y pixels de tamanho, observando meu exemplo de arquivo, substitua 720 por X / 2 e 900 por Y.

É isso aí. Saí e voltei a entrar e estava em funcionamento.

Mais uma vez obrigado a Lubos Lunak por criar este mod e a akira por me apontar para ele.

David
fonte
Isso me ajudou muito com uma tela de três cabeças. O Xinerama é muito lento com três desktops, portanto, usar isso me permitiu colocar dois deles no modo twinview sem a maximização irritante de ambos os problemas e ter o terceiro como uma tela X separada associada ao twinview com o Xinerama. Obrigado por tomar o tempo para escrever as etapas David!
Kry Brandt
7

Agora existe um novo projeto chamado FakeXRandR que funciona muito bem.

Esta é uma ferramenta para enganar um servidor X11 para acreditar que há mais monitores do que realmente existem. Ele se conecta ao libXRandR e libXinerama e substitui certas configurações configuráveis ​​do monitor por vários monitores virtuais. Uma ferramenta que acompanha este pacote pode ser usada para configurar como os monitores são divididos.

mperrin
fonte
Eu usei fakexrandr com sucesso de vez em quando. Infelizmente, minha tela fica embaralhada quando tenho o xorg.conf (necessário para uma resolução personalizada para o meu monitor ultra-amplo). Sou forçado a excluir a configuração fakexrandr, reiniciar o X e reconfigurar fakexrandr.
JAponte
3

Isso pode ser feito no XRandR 1.5 sem software adicional. Embora nem fakexinerama nem FakeXRandR tenham funcionado para mim no Xubuntu, esta solução finalmente dividiu a tela em duas.

Para dividir o monitor, faça o seguinte:

  1. Entre xrandrno terminal para verificar o nome da saída e a resolução atual da tela que você deseja dividir.
    No meu sistema, o resultado foi:

    Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
    HDMI1 disconnected (normal left inverted right x axis y axis)
    HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
       1920x1080     60.00*+  50.00    59.94
       1920x1080i    60.00    50.00    59.94  
       1600x900      60.00  
       1280x1024     75.02    60.02  
       1152x864      75.00  
       1280x720      60.00    50.00    59.94  
       1024x768      75.08    60.00  
       800x600       75.00    60.32  
       720x576       50.00  
       720x576i      50.00
       720x480       60.00    59.94
       720x480i      60.00    59.94
       640x480       75.00    60.00    59.94
       720x400       70.08
    VGA1 disconnected (normal left inverted right x axis y axis)
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    

    Podemos ver que meu monitor está conectado ao HDMI2 e a resolução está definida para 1920x1080.

  2. Adicione 2 monitores virtuais com o xrandr --setmonitorcomando, garantindo que eles se sobreponham à sua exibição física e sejam colocados um ao lado do outro. A sintaxe do comando é (sem aspas):

    xrandr --setmonitor "monitor_name" "width_px"/"width_mm"x"height_px"/"height_mm"+"x_offset_px"+"y_offset_px" "output_name" 
    

    Para o meu sistema era:

    xrandr --setmonitor HDMI2~1 960/254x1080/286+0+0 HDMI2
    xrandr --setmonitor HDMI2~2 960/255x1080/286+960+0 none
    
  3. Enquanto o acima exposto já configurou os monitores virtuais no meu sistema, as alterações não foram aplicadas até a execução (parece atualizar o xrandr):

    xrandr --fb 1921x1080
    xrandr --fb 1920x1080
    

Para persistir as alterações após a reinicialização, você deseja executar esses comandos ao fazer login. Você pode fazer isso anexando os comandos no final do seu ~/.profilearquivo.

Strachu
fonte
1
É bom que exista no xrandr, ótimo. Mas torna apenas o lado esquerdo do meu monitor utilizável, a parte certa não mostra nada. E não recebo nenhum erro mostrado. - Ah, parece que o Awesome WM não suporta os monitores, mas usa apenas as saídas. Então você também precisa de suporte no WM.
Nert 22/02
Oh, deixa pra lá, o incrível tem suporte para os monitores da xrandr, mas não funcionou para mim. Mas o awesome pode fazer isso por si só: awesomewm.org/apidoc/classes/screen.html#screen:fake_add
nert:
1

Me deparei com um artigo no omgubuntu que fornece uma maneira bastante fácil de imitar a funcionalidade Windows Snap no Ubuntu / Gnome usando o painel de controle Compiz. Esse Windows Snap me deixa com uma área de trabalho widescreen, mas as próprias janelas podem ser facilmente encaixadas para preencher a meia tela. (Não era exatamente o que eu estava procurando originalmente, mas ainda assim bastante útil.)

David
fonte
1

Eu tenho usado uma solução para essas perguntas exatas por alguns anos usando um triplehead2go. Esse dispositivo mesclará até 3 monitores e reportará um enorme monitor para o X.

Aqui está como dividir esse monitor enorme em áreas de trabalho virtuais no xorg.conf:

Section "Device"
    # ... your other settings above
    Option         "TwinViewXineramaInfoOverride" "1280x1024+0+0, 1280x1024+1280+1, 1280x1024+2560+0"
EndSection

E se você estiver usando os drivers mais recentes da nvidia, esses drivers fornecerão sua própria extensão xinerama, que parece ignorar a configuração acima, portanto você deve adicionar o seguinte nessa seção do dispositivo:

Option         "NoTwinViewXineramaInfo" "true"
domingo
fonte
0

Tenho certeza de que você pode fazer isso alterando seu arquivo de configuração do X , mas não faria isso porque provavelmente quebraria minha configuração de exibição. Se você tentar isso, tenha muito cuidado, faça backup de sua configuração e verifique se você tem um login alternativo que possa usar, caso precise corrigir sua exibição.

Você pode obter mais satisfação com um gerenciador de janelas lado a lado, como o xmonad , ou mesmo executando o compiz para controlar como as janelas são abertas, fechadas e lado a lado.

DaveParillo
fonte
0

Funciona bem para mim:

Usei o seguinte para dois monitores (1280x1024 + 2048x1152):

3
0 0 1280 1024
1280 0 1024 1152
2304 0 1024 1152
codeinthehole
fonte
0

Se você estiver usando o compiz, poderá encontrar seu plug - in de grade uma solução mais fácil e flexível. Você pode configurá-lo para colocar uma janela na metade esquerda / direita da tela ao arrastá-la contra a borda.

Esse é o recurso Snap da janela descrito no artigo ao qual David vincula. Além disso, você pode configurar atalhos e fazer com que uma janela ocupe a metade superior / inferior ou um quarto da tela.

O Xinerama causa um impacto notável no desempenho (uma vez que replica as ações do X em todas as telas do Xinerama) e não funciona bem com gerenciadores de janelas compostos.

kynan
fonte