Configuração de monitor duplo com xrandr: estendendo sem / com desabilitado rolagem

7

Esta não é uma questão, mas sim uma solução para um problema no Ubuntu, encontrei.

Configuração:
Dada uma tela de laptop (por exemplo, "LVDS-1-0") e uma segunda tela (por exemplo, "DP-1") com a segunda tela sendo sua tela principal e seu monitor à direita de sua tela principal (ou esquerda ) como uma extensão (ver imagem). A primeira tela sempre foi estendida virtualmente, apesar das instruções explícitas do xrandr de não fazer isso. Ao entrar nisso, eu consegui evitar a rolagem irritante ao mover o cursor do mouse para a direita no monitor principal.

xrandr --output LVDS-1-0 --off
xrandr --output DP-1 --mode 1920x1080 --primary --pos 0x0 --output LVDS-1-0 --mode 1920x1080 --pos 1920x0

Depois disso, ele vai de um monitor para o outro sem rolar a tela. Espero que isso ajude.

Atualizar

Depois de mudar para a placa gráfica discreta (a nvidia é discreta e a intel é integrada para o meu laptop), a ordem das saídas precisava ser alterada:

output_DP=$(xrandr | grep " connected" | grep DP | awk '{print $1}')
output_LVDS=$(xrandr | grep " connected" | grep LVDS | awk '{print $1}')

xrandr --output $output_LVDS --off
xrandr --output $output_LVDS --mode 1920x1080 --pos 1920x0 --output $output_DP --mode 1920x1080 --pos 0x0  --primary

Para maior conveniência, eu fiz essas variáveis terem mais flexibilidade, pois a troca entre placas gráficas discretas e integradas muda a designação dos dispositivos de saída (por exemplo, LVDS-1-0 vs LVDS-1).

    
por rocky_hiker 03.02.2016 / 18:34

1 resposta

3

Eu encontrei o mesmo bug. Sua solução não funcionou para mim. Seu truque é simplesmente um gatilho que faz com que o bug não caia. Eu investiguei um pouco e encontrei um cara legal com uma solução que pode ajudar outras pessoas aqui também.

O problema principal é que o erro que encontramos aqui faz com que o monitor que está rolando para o outro tenha uma tela virtual com o tamanho das duas telas somadas. Portanto, a solução pode parecer desabilitar esse espaço virtual extra nessa tela para ajustar-se à resolução do monitor. Isso geralmente é feito com o argumento --panning AxB - Usamos para definir o tamanho do espaço virtual.

É assim que você pode fazer isso:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 --panning 1920x1080 --pos 1920x0 \
  --output HDMI-0   --mode 1920x1080 --panning 1920x1080 --pos 0x0    --primary

(Slashed \ adicionado para usar novas linhas no comando.)

Infelizmente, o problema aqui é que o driver (que é o bug) parece substituir o pan que definimos (ou não). Mas o que não é para definir outra parte do panning: A área de rastreamento! A área de rastreamento é, na verdade, a parte da tela que a câmera segue o cursor naquele monitor.

tl: dr: Então, a ideia é definir o pan como driver, mas restringir a área de rastreamento.

Isso é feito com o seguinte comando:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 \
  --output HDMI-0   --mode 1920x1080 --panning 3840x1080+0+0/1920x1080+1920+0/0/0/0/0    --primary

"Os quatro primeiros parâmetros [do argumento panning ] especificam a área total de panoramização, os quatro seguintes a área de rastreamento de ponteiro (cujo padrão é a mesma área). Os últimos quatro parâmetros especificam a fronteira e padrão para 0. " [ man xrandr ]

    
por 17.09.2016 / 22:07