É possível ter duas configurações diferentes de DPI para duas telas diferentes?

85

Estou usando o Ubuntu 12.04.3 com drivers NVidia (319) para a minha placa gráfica Quadro K2100M, e quando eu alterno a tela do meu laptop principal de 3200x1800 para o modo 1920x1080 (usando nvidia-settings ), a tela fica desfocada ...

Estou usando duas telas:

  • Minha tela principal é um LCD com resolução máxima de 1920x1200.
  • A tela do meu laptop (resolução original de 3200 x 1800) está à direita dela.

O principal problema é que, no Ubuntu, a fonte é pequena demais na tela do meu laptop. Por causa disso, eu queria mudar a resolução do meu laptop para 1920x1080.

Lendo Resposta de Galgalesh Eu tentei calcule meu DPI e aqui está a configuração de DPI que eu deveria ter:

  • 94 x 94 para o meu ecrã LCD principal 1920x1200
  • 235 x 236 para a tela do meu laptop de 3200 x 1800

Existe uma maneira de ter duas resoluções de DPI com uma área de trabalho estendida?

    
por Anthony O. 20.12.2013 / 10:15

5 respostas

90

Parece que as pessoas ainda estão lutando para trabalhar com vários monitores e monitores HiDPI. Uma boa solução alternativa é descrita em arch link . Então eu tenho:

  • laptop asus ln303ux: 3200x1800,
  • monitor externo
  • : 1920x1200

Agora eu uso o Ubuntu 14.10 & amp; GNOME Shell 3.12.2 que tem suporte HiDPI bastante utilizável. Então eu uso apenas o suporte out-of-the-box do HiDPI - o fator de escala é 2 (pode ser configurado via GUI). Isso significa que no monitor externo fico tudo duas vezes maior que o aceitável. Assim, eu uso o xrandr; mas em vez de downscaling tela do laptop, eu upscale tela do monitor externo:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

Então, um por um:

  1. --output HDMI1 no meu caso é a tela externa, eDP1 é a tela do laptop.
  2. --scale 2x2 - faz tudo na tela externa duas vezes menor
  3. --mode XxY - define explicitamente a resolução para a tela (não é necessário se já estiver definido)
  4. --fb XxY - defina o tamanho de uma tela virtual (framebuffer) ( importante sem isso, você poderá usar apenas uma quarta parte da tela). No meu caso, uma tela estava em cima da outra, então eu adicionei alturas efetivas 2400 + 1800 = 4200. Observe também que o tamanho máximo do framebuffer pode ser especificado no xorg.conf - então você não pode excedê-lo (está escrito na primeira linha do xrandr -q output).
  5. --pos XxY - no meu caso, eu defino o posicionamento absoluto das telas, então a tela do meu laptop está diretamente na parte inferior do sceen externo.

E é isso! Tudo é tão nítido quanto poderia ser.

FYI: para obter os nomes das telas e resoluções disponíveis, pode-se executar xrandr --current . Mais informações sobre como definir a resolução podem ser encontradas aqui: link .

ATUALIZAÇÃO - OPÇÃO 2: mais uma solução interessante para aplicativos que suportam o GTK3. Se eu normalmente uso apenas um aplicativo na tela grande (por exemplo, algum IDE, como o leksah), não redimensiono a tela, mas executo o aplicativo dimensionado para o tamanho original

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname
    
por artem 02.12.2014 / 14:43
6

Por que está embaçada?

Sua tela sempre exibe 3200x1800 pixels. Se você diminuir a resolução da tela no computador, isso significa apenas que a tela precisa dimensionar a imagem para caber na tela. Dependendo da proporção entre a resolução nativa e a resolução atual, esse dimensionamento produzirá uma imagem borrada.

Você pode encontrar mais informações sobre redimensionamento e resolução nativa aqui: link

Como posso aumentar o texto?

Se o texto for pequeno, você tem duas opções:

1. Alterar o tamanho da fonte do Ubuntu

Como faço para mudar fontes e ajustar seu tamanho?

2. Alterar DPI (fará toda a interface maior, não apenas texto)

Como encontrar e alterar o DPI da tela? (answer by @whtyger)

    
por Galgalesh 23.12.2013 / 17:23
4

Eu usei a solução do artmem, mas corri para o problema do mouse mencionado por EoghanM. A solução que encontrei no antigo relatório de bugs com o qual ele estava vinculado está relacionado a --panning.

Estou fotografando por:  - DP1-2 3840x2160 no DIP nativo.  - eDP1 1366x768, dimensionado para parecer razoável à direita do DP1-2.

Eu tenho isso acontecendo por ter um buffer de quadro que é como DP1-2 + (2x eDP1), então eu dimensionar tudo indo para eDP1 por 1/2.

Isso deve ser simples, mas o xrandr é um pouco complicado.

Aqui - a escala é usada para reduzir tudo que vai para eDP1 por 1/2. --panning é o mesmo que eDP1 no buffer de quadros original com a posição (+ 3840 + 0) à direita de DP1-2. + 0 + 2160 estaria abaixo dela.

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

Eu também configurei o Xft.dpi para 185

$ cat ~/.Xresources
Xft.dpi: 185

Quando desligo o monitor externo, corro:

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

Isso não parece ótimo, mas eu não estou muito longe da minha mesa. Você poderia contornar isso alterando o Xft.dpi e reiniciando todos os seus programas de desktop. Eu não sei como alterar o Xft.dpi e depois fazer com que os clientes o usem sem reiniciá-lo.

    
por Brian C. 16.03.2017 / 16:47
2

Consegui resolver isso (com problemas) usando os detalhes descritos na seguinte discussão do github: link

Monitor externo QHD (2560X1440), monitor interno / laptop 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

OR

Monitor externo FHD (1920x1080), monitor interno / laptop 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

Estes funcionam, mas há uma quantidade significativa de rasgos no monitor de alta resolução (laptop) quando eu movo janelas, redimensiono telas ou rola em um navegador. Isso parece uma solução de software para conserto (que tem todos esses problemas de rasgo e lentidão).

Em 2017, o Linux / Gnome precisa lidar com a solução de vários monitores e escala mista. Tanto o Windows 10 quanto o OS X resolveram isso sem ter que recorrer a correções de band-aid de linha de comando que funcionam parcialmente (o problema de rasgo não é aceitável para jogos)

    
por Jeets 20.07.2017 / 20:54
1

Essas respostas são ótimas e me ajudaram anteriormente, mas uma recente

sudo apt-get upgrade 

excluiu meu randr-config! Ao tentar restaurar minhas configurações, descobri que não consegui mais passar o mouse além do primeiro / quarto quadrante da segunda tela, independentemente da entrada --fb. A partir do link , acabei descobrindo que adicionar panning resolveu o problema. Além disso, o uso de '- right-of' ou '--left-of' é mais simples que '--pos'.

"Genericamente, se seu monitor HiDPI (laptop) for pixels AxB e seu monitor regular (externo) for CxD e você estiver redimensionando por [ExF], a linha de comando para a direita será:"

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1
    
por ONECore 15.05.2018 / 17:39