È possibile avere configurazioni DPI diverse per due schermi diversi?


123

Sto usando Ubuntu 12.04.3 con i driver NVidia (319) per la mia scheda grafica Quadro K2100M e quando passo il mio schermo principale per laptop 3200x1800 in modalità 1920x1080 (usando nvidia-settings), il display diventa sfocato ...

Sto usando due schermi:

  • La mia schermata principale è un LCD con risoluzione massima 1920x1200.
  • Lo schermo del mio laptop (risoluzione originale 3200x1800) è posizionato a destra.

Il problema principale è che, su Ubuntu, il carattere è troppo piccolo sullo schermo del mio laptop. Per questo motivo, volevo cambiare la risoluzione del mio laptop a 1920x1080.

Leggendo la risposta di Galgalesh , ho provato a calcolare il mio DPI ed ecco la configurazione DPI che dovrei avere:

  • 94x94 per il mio schermo LCD principale 1920x1200
  • 235x236 per lo schermo del mio laptop 3200x1800

C'è un modo per avere risoluzioni DPI doppie con un desktop esteso?


3
Bene, guidare qualsiasi schermo LCD con una risoluzione non nativa apparirà sfocato. Questo perché il modo in cui i pixel sono disposti in modo fisso e il segnale non corrisponde. Che cosa ti aspetti che accada esattamente? Disabilitare il ridimensionamento forse? Ma poi viene visualizzato solo al centro dello schermo e non a schermo intero. Per una visualizzazione ottimale, mantienilo sempre nella risoluzione nativa dello schermo. Non penso che questo abbia nulla a che fare con Ubuntu.
Gertvdijk,

2
@gertvdijk: Quindi hai un modo per mantenere entrambi i monitor alla loro risoluzione nativa dello schermo? Penso che sia quello che Anthony sta chiedendo.
Beldaz,

2
@beldaz La mia risposta era alla revisione 1 della domanda . All'epoca non menzionava nulla di legato alla configurazione a doppio schermo. Poiché la domanda è stata modificata in modo significativo, ciò solleva le sopracciglia per eventuali post modificati dopo tale data. Fondamentalmente invalida tutto ciò che ha contribuito e abbassa davvero la mia motivazione per aiutare. A mio avviso, gli utenti dovrebbero invece porre una nuova domanda.
gertvdijk,

@gertvdijk Siamo spiacenti, ora ha senso.
Beldaz,

Mi chiedo se la possibilità di utilizzare Wayland nel nuovissimo Ubuntu lo renda più facile da risolvere.
mkataja,

Risposte:


120

Sembra che le persone stiano ancora cercando di lavorare con diversi monitor e display HiDPI. Una buona soluzione è descritta nell'arch wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays . Quindi ho:

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

Ora uso Ubuntu 14.10 e GNOME Shell 3.12.2 che ha un supporto HiDPI abbastanza utilizzabile. Quindi uso solo il supporto immediato di HiDPI - il fattore di ridimensionamento è 2 (può essere impostato tramite la GUI). Ciò significa che sul monitor esterno ottengo tutto due volte più grande del possibile. Quindi, uso xrandr; ma invece di ridimensionare lo schermo del laptop, ingrandisco lo schermo del monitor esterno:

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

Quindi, uno per uno:

  1. --output HDMI1nel mio caso è lo schermo esterno, eDP1è lo schermo del laptop.
  2. --scale 2x2 - Rendi tutto più piccolo dello schermo esterno due volte
  3. --mode XxY - imposta esplicitamente la risoluzione per lo schermo (non necessario se è già impostato)
  4. --fb XxY- imposta le dimensioni di uno schermo virtuale (framebuffer) ( importante senza questo, sarai in grado di utilizzare solo una quarta parte dello schermo). Nel mio caso uno schermo era sopra l'altro, quindi ho aggiunto altezze effettive 2400 + 1800 = 4200. Si noti inoltre che la dimensione massima del framebuffer potrebbe essere specificata in xorg.conf - quindi non è possibile superarla (è scritta nella prima riga di xrandr -qoutput).
  5. --pos XxY- nel mio caso ho impostato il posizionamento assoluto degli schermi, quindi lo schermo del mio laptop si trova direttamente nella parte inferiore dello schermo esterno. Il valore Y qui è il doppio dell'altezza del monitor esterno.

E questo è tutto! Tutto è nitido come potrebbe essere.

Cordiali saluti: per ottenere i nomi degli schermi e le risoluzioni disponibili, si può eseguire xrandr --current. Ulteriori informazioni sull'impostazione della risoluzione sono disponibili qui: https://wiki.ubuntu.com/X/Config/Resolution .

AGGIORNAMENTO - OPZIONE 2: un'altra soluzione interessante per le applicazioni che supportano GTK3. Se di solito utilizzo solo un'applicazione sul grande schermo (es. Alcuni IDE, come leksah), non ridimensiono lo schermo, ma eseguo l'applicazione ridimensionata alla sua dimensione originale

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname

7
ottenuto un error of failed request: BadValue (integer parameter out of range for operation):-(
Giovedì

4
L' --fbopzione non sembra abilitare più di un quarto dello 2x2schermo (il cursore del mouse non può essere spostato oltre il quadrante in alto a sinistra)
EoghanM

2
Il ridimensionamento funziona, ma non perdi l'HiDPI? Tutto appare ridimensionato e sfocato.
Andy,

8
Per una configurazione affiancata con un monitor esterno 1920x1080 seduto alla sinistra del mio laptop hiDPI 3200x1800:xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0
Daniel Bower,

2
Il parametro --fb è 2 * monitor esterno + schermo del laptop
Brian C.

10

Perché è sfocato?

Lo schermo visualizza sempre 3200x1800 pixel. Se si abbassa la risoluzione dello schermo sul computer, ciò significa che lo schermo deve ridimensionare l'immagine per adattarla allo schermo. A seconda del rapporto tra la risoluzione nativa e la risoluzione corrente, tale ridimensionamento produrrà un'immagine sfocata.

Puoi trovare ulteriori informazioni su ridimensionamento e risoluzione nativa qui: https://en.wikipedia.org/wiki/Native_resolution

Come posso ingrandire il testo?

Se il testo è troppo piccolo hai due opzioni:

1. Cambia la dimensione del carattere di Ubuntu

Come posso cambiare i caratteri e regolarne le dimensioni?

2. Modifica DPI (ingrandirà l'intera interfaccia, non solo il testo)

Come trovare e modificare il DPI dello schermo? (risposta di @whtyger)


1
Proprio come una nota sull'aumento delle dimensioni dei caratteri. Aumentare piuttosto il DPI in modo da ridimensionare l'intera interfaccia utente. Questo dovrebbe essere riconosciuto correttamente automaticamente (leggendo l'EDID dal display), ma in caso contrario: come trovare e modificare il DPI dello schermo?
gertvdijk,

23
In realtà non è una risposta alla mia domanda. Sto usando due schermi diversi con risoluzioni diverse . Ho fatto il calcolo: il mio schermo LCD principale sinistro dovrebbe avere una risoluzione di 94x94 DPI mentre lo schermo del mio portatile destro dovrebbe avere 235x235 DPI ... E non trovo alcun modo per impostare due diverse risoluzioni DPI se non configurando nvidia per l'esecuzione 2 separato X, e quindi non riesco a passare una finestra da sinistra a destra ... Windows è molto meglio per gestire questo problema :(
Anthony O.

9
-1 per aver completamente ignorato il punto della domanda
Martin Konecny,

8
@AnthonyO. Ti preghiamo di non modificare la tua domanda in modo considerevole dopo che è stata pubblicata una risposta che non ti piace. Al momento della pubblicazione di questa risposta non hai menzionato nulla di correlato a una configurazione a doppio schermo (vedere la revisione 1 ). La modifica della domanda annulla qualsiasi cosa già pubblicata e non dovresti farlo. Invece, ripristina le modifiche alla domanda e pubblica invece una nuova domanda.
gertvdijk,

5
@MartinKonecny ​​L'interrogatore originale ha sostanzialmente modificato la sua domanda, questa risposta risponde alla sua domanda originale, controlla le revisioni.
Jamie Kitson,

7

Ho usato la soluzione di artmem ma ho riscontrato il problema del mouse menzionato da EoghanM. La soluzione alternativa che ho trovato nella vecchia segnalazione di bug a cui era collegato relativo a --panning.

Sto girando per: - DP1-2 3840x2160 in DIP nativo. - eDP1 1366x768, ridimensionato per apparire ragionevole a destra di DP1-2.

Capisco che ciò accada avendo un frame buffer che è come DP1-2 + (2x eDP1), quindi ridimensiono tutto andando a eDP1 di 1/2.

Questo dovrebbe essere semplice ma xrandr è un po 'complicato.

Qui --scale viene utilizzato per ridurre di 1/2 tutto ciò che passa a eDP1. --panning è uguale a eDP1 nel frame buffer originale con la posizione (+ 3840 + 0) di appena a destra di DP1-2. + 0 + 2160 sarebbe sotto di esso.

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

Ho anche impostato Xft.dpi su 185

$ cat ~/.Xresources
Xft.dpi: 185

Quando scollego dal monitor esterno 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

Non sembra eccezionale ma non sono molto lontano dalla mia scrivania. È possibile aggirare il problema modificando Xft.dpi e riavviando tutti i programmi desktop. Non conosco un modo per modificare Xft.dpi e quindi far sì che i client lo utilizzino senza riavviarli.


Panning è stato l'ultimo pezzo del puzzle: ha risolto il cursore bloccato a un quarto del problema dello schermo. Grazie @Brian!
rtindru,

2
"eseguendolo due volte" ???? Holy Pixel, funziona (stavo già applicando il panning, ma è applicato correttamente solo se eseguo lo stesso comando due volte).
Riccardo Galli,

Ya, ho notato che funzionava ogni volta che lo eseguivo, quindi ho pensato di provarlo due volte e, beh, eccoci qui.
Brian C.,

Bene, quindi questo non funziona con il kernel 4.5.2. Ho installato proprio quel kernel per gestire un problema relativo alla finestra mobile in 4.5.1 e ora lo script sopra mi lascia con una schermata nera. Per risolvere questo problema su 4.5.2 eseguo prima i comandi eDP1 senza --off e poi il comando DP1-2.
Brian C.

1
Finalmente ho lavorato con il panning! Tuttavia ho ancora un mouse e uno schermo glitch (da quando ho iniziato a usare xrandr). Qualche idea?
hsandt

4

Sono stato in grado di risolverlo (con problemi) utilizzando i dettagli descritti nella seguente discussione su github: https://github.com/linuxmint/Cinnamon/issues/3606

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

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

O

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

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

Funzionano, ma c'è una notevole quantità di lacerazioni nel monitor ad alta risoluzione (laptop) quando muovo finestre, ridimensiono le schermate o scorro su un browser. Sembra una soluzione di software rending (che ha tutti questi problemi di lacrimazione e aggiornamenti lenti).

Nel 2017, Linux / Gnome deve affrontare la soluzione di ridimensionamento misto multi-monitor. Sia Windows 10 che OS X hanno risolto questo problema senza dover ricorrere a correzioni della banda di comando che funzionano parzialmente (il problema di lacerazione non è accettabile per i giochi)


1
È una nuova risposta o stai cercando di segnalare un bug?
user68186

È un'elaborazione su una risposta esistente, con più opzioni che si possono sfruttare. La risposta fornita da @artem sopra spiega come funzionano queste impostazioni. Ho semplicemente tentato di fornire 2 opzioni che possono essere utilizzate così come per le persone che hanno un monitor esterno QHD o FHD e un monitor principale 4K / monitor per laptop. Il bug sta nella lacerazione che vedi con questa soluzione. Questo è inerente a questo approccio.
Jeets,

2
Con la proliferazione di configurazioni 4k e multi-risoluzione, sono d'accordo con il paragrafo finale che richiede una risoluzione. Non era poi così male, ma ora sta semplicemente rovinando la mia configurazione su un monitor ora che ho un 4K. Speriamo che Ubuntu 18 LTS lo abbia risolto.
neuronet,

3
È il 2018 ... sempre la stessa merda :)
Stefanos Kalantzis,

Wayland funziona alla grande per questo. Solo che è solo per questo ... Ho avuto una buona esperienza anche con wayland + kde, meglio di gnome + wayland. Sono tornato su X a causa della mancanza di supporto per alcuni software che funzionano solo su X e di problemi di stabilità. 2018 ...
Victor,

4

Queste risposte sono tutte fantastiche e mi hanno aiutato in precedenza, ma di recente

sudo apt-get upgrade 

cancellato il mio randr-config! Nel tentativo di ripristinare le mie impostazioni ho scoperto che non riuscivo più a portare il mouse oltre il quadrante superiore 1/4 del secondo schermo, indipendentemente dall'input --fb. Da https://wiki.archlinux.org/index.php/HiDPI#Side_display alla fine ho scoperto che l'aggiunta di panning ha funzionato. Inoltre, l'uso di '--right-of' o '--left-of' è più semplice di '--pos'.

"In genere se il monitor HiDPI (laptop) è pixel AxB e il monitor normale (esterno) è CxD e si esegue il ridimensionamento di [ExF], la riga di comando per il diritto di scelta è:"

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

Questo è interessante e sembra sicuramente che possa essere utile a qualcuno, anche se non sono sicuro che appartenga come una risposta a questa domanda. Forse dovresti aprire e quindi rispondere alla tua domanda? Non sono proprio sicuro.
Hee Jin,

1
@Emily: penso che questa risposta appartenga qui. Ho usato la risposta di Artem oggi e ho avuto il problema esatto dichiarato da ONECore (solo il quadrante in alto a sinistra dello schermo era utilizzabile dal mouse). Fortunatamente, ho visto questa risposta e il panning ha funzionato all'istante.
BrainCore,

Sì, scusa, volevo che fosse una risposta alla risposta di @Artem, ma Stackexchange è super fantastico e non mi lascerà rispondere fino a quando non avrò 50 punti brownie.
ONECore

Si noti inoltre che questo non sembra essere persistente, quindi a meno che non lo si aggiunga a xorg.conf, scompare ad ogni riavvio. Ma poi se lo aggiungi lì, forza quell'impostazione a prescindere da cosa (a volte non collego il monitor). Quindi trovo super facile semplicemente creare una shell ed eseguirla quando voglio. Basta aggiungere il codice sopra a un file di testo che termina con .sh (come Resolution.sh), quindi renderlo eseguibile con "chmod 0700 Resolution.sh" nel terminale.
ONECore

Grazie mille per aver condiviso anche la tua esperienza @BrainCore!
Hee Jin,

1

Ho un monitor 1024x768 obsoleto, collegato a un notebook (meno obsoleto).
Le finestre sono rese in dimensioni piuttosto diverse, molto più grandi nel monitor esterno (che ha un punto più vecchio e più grande).
Ho trovato un comando per ridimensionare il monitor:

xrandr --output VGA-1 --scale 1.5x1.5

VGA-1 è il nome interno del monitor, trovato eseguendo il comando seguente:

xrandr --current | grep connected

L'effetto è che ora il vecchio monitor mostra i suoi contenuti quasi alle stesse dimensioni del notebook.

Curiosamente, funziona ridimensionando x1.5 ma non 1.45, il display (nel mio caso) diventa nero.

Quando ho eseguito il commento in scala la prima volta, il risultato è stato spaventoso perché i contenuti di entrambi gli schermi si sono sovrapposti. Ad esempio, il puntatore del cursore è apparso due volte.

Ho eseguito un programma:

arandr &

per impostare le posizioni relative dello schermo per risolverlo.
Funziona come l' impostazione Impostazioni> Dispositivi> Visualizza .

L'ho installato con:

sudo apt-get install arandr

Grazie @LuisAlvarado e altri per aver condiviso le tue conoscenze!


Questo funziona temporaneamente per me, ma non si attacca se riavvio. Penso di aver bisogno di trovare una sceneggiatura per fare ciò che arandrsta facendo qui, e poi mettere tutto nel mio bashrc o qualcosa del genere. Grazie!
Max von Hippel,

arandr può esportare un file di configurazione. Ho impostato il file sul desktop e l'ho inserito in arandr ad ogni riavvio. Non ho sviluppato uno script e ora ho un monitor e non uso più arandr.
Juan Lanus,

0

Pugno eseguito $xrandrper visualizzare tutte le uscite

Screen 0: minimum 320 x 200, current 7680 x 2160, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97   
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 521mm x 294mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02

Come puoi vedere in questo caso il secondo monitor è collegato DP-3 Quindi puoi rivendere il display: $xrandr --output DP-3 --auto --scale 2x2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.