#howto - Simulazione di schermi più o meno grandi con xrandr

Scritto da il
Redatto da

Wayland offre diverse ottimizzazioni per HiDPI, nonostante ciò non è ancora possibile sfruttarlo ovunque a causa del supporto software non ancora completo.  Possiamo però ottimizzare la nostra esperienza utente su Xorg, grazie a xrandr.

Il metodo che vediamo oggi, ci permette di simulare una particolare risoluzione su uno schermo che, non ufficialmente la supporta.

Installazione

Tramite il vostro gestore di pacchetti installate il pacchetto xrandr:

# Debian/Ubuntu e derivate
apt install xrandr

# Fedora e derivate
dnf install xrandr

# RHEL/Centos e derivate
yum install xrandr

# ArchLinux e derivate
pacman -S xorg-xrandr

Utilizzo di xrandr

Una volta installato il pacchetto, digitando xrandr dovremmo ricevere un output simile al seguente:

Screen 0: minimum 8 x 8, current 2390 x 924, maximum 32767 x 32767eDP1 connected primary 1366x768+0+156 (normal left inverted right x axis y axis) 340mm x 190mm  1366x768      60.01*+  1280x720      59.86    60.00    59.74     1024x768      60.00     1024x576      60.00    59.90    59.82     960x540       60.00    59.63    59.82     800x600       60.32    56.25     864x486       60.00    59.92    59.57     640x480       59.94     720x405       59.51    60.00    58.99 680x384       60.00     640x360       59.84    59.32    60.00   
DP1 connected 1024x768+1366+0 (normal left inverted right x axis y axis) 0mm x 0mm  1024x768      60.00 +  75.03    60.00*    1280x768      59.87     800x600       72.19    75.00    60.32     640x480       75.00    72.81    59.94   
HDMI1 disconnected (normal left inverted right x axis y axis)VIRTUAL1 disconnected (normal left inverted right x axis y axis)

gli schermi riconosciuti vengono elencati con le loro modalità di output, nell’esempio potete vedere il mio schermo primario (quello del notebook) che supporta quelle risoluzioni (come 1366x768) e con accanto il refresh rate (60 fps ad esempio)
Fate un po’ di test con il vostro gestore di impostazioni per capire quali tra le risoluzioni elencate occupano l’intera porzione di schermo del monitor, annotatele e andiamo al passo successivo.

Supponiamo di voler avere la seguente configurazione: 1366x768 per il primo schermo e 1280x768 al secondo schermo che però deve emulare uno schermo 1920x1152.

Come fare? Sfruttiamo framebuffer di xorg.

Troviamo quel numeretto tale che:

[1280,768] * y= 1920x1152

potete anche, in modo semplice, fare il passaggio inverso, cioè volendo ampliare ad esempio del doppio il vostro schermo secondario moltiplicate ogni dimensione per due e scegliete quindi la vostra modalità in base al risultato uscito.

Sempre sull’esempio, il fattore che cerco è di 1.5, in quanto

[1280,768] * 1.5= 1920x1152

Se volessi immaginare uno schermo abbastanza grande da inglobare entrambi i monitor, nella configurazione in cui il secondo monitor  sta alla destra del primo, questo monitor sarebbe grande [1920+1366,1152] cioè [3286x1152]

Abbiamo tutti i dati che ci servono, procediamo col comando:

xrandr --output eDP1 --mode 1366x768 --output DP1 --mode 1280x768 --scale 2x2 1920x1152 --fb 3286x1152 --pos 1366x0

ora il nostro secondo schermo ha le sembianze di uno schermo 1920x1152.

Supponiamo ora che il nostro schermo del notebook sia hidpi 2880x1800  e che il nostro secondo monitor invece sia un monitor HD 1920x1080 per complicare un pochino le cose supponiamo anche di volere la predisposizione inversa, il pc a destra e lo schermo esterno a sinistra. 
Il trucco ora sta nel far si che il secondo schermo, con questo tool, abbia più o meno le stesse dimensioni dello schermo hidpi, così quando porterete una finestra da uno schermo all’altro non avrete tutto ingigantito!

  • Utilizzando i dati nell’esempio, si possono effettuare i seguenti calcoli:
  • il fattore di scala che dovrete utilizzare è 1.5, infatti 1920x1080 * 1.5 = 2880x1620
  • la lunghezza del frame buffer, mettendo gli schermi uno accanto all’altro, è la somma delle due lunghezze, 2880+2880=5760
  • al contrario l’altezza è semplicemente il massimo delle due quindi 1800
  • la posizione del monitor esterno è 0x0, si trova a sinistra
  • la posizione del monitor del pc è invece a destra del monitor esterno, quindi inizia esattamente dalla sua lunghezza virtuale, ovvero 2880x0

il comando è :

xrandr --output HDMI-1 --scale 1.5x1.5 --mode 1920x1080 --fb 5760x1800 --pos 0x0 --output eDP-1 --scale 1x1 --mode 2880x1800 --pos 2880x0

Potete proseguire con la sperimentazione del comando, nel caso di problemi irreparabili, vi basterà scollegare il cavo del monitor per poi ricollegarlo.

Possiamo inoltre mettere due valori di scala diversi per la larghezza e l’altezza, equiparando in toto le dimensioni del vostro monitor più grande, ma le immagini potrebbero risultare distorte sullo schermo. Potete anche utilizzare questo comando per simulare che uno schermo hidpi sia più piccolo (riportandolo a dimensioni più globalmente compatibili, così che possiate utilizzare anche DE che non supportano nativamente lo scaling).

Per dubbi e chiarimenti, fate riferimento al nostro Gruppo Telegram.

history_edu Revisioni