Hogyan állíthatjuk be monitorunk pontos képernyőfelbontását, ha az nem szerepel a Linux asztalunk beállításaiban

botond küldte be 2019. 01. 14., h - 02:15 időpontban

Tartalom

 

Bevezető

Friss Linux telepítés után a monitorunk felbontása nem szerepel az asztal beállításban lévő képernyőfelbontások között. Így nem tudjuk natív felbontásban használni a monitorunkat. A vonalak életlenek, a betűk homályosak, vajon mit csináltunk rosszul?

Ha ismerős ez a szituáció, akkor ebből a leírásból megtudhatjuk, hogyan hozhatunk létre egyedi felbontásokat a megfelelő képernyő frissítési frekvenciákkal társítva. Legyen bármilyen monitorunk is, felbontását ezután pontosan be tudjuk állítani.

 

 

Képernyőfelbontás beállítása

Az ilyen esetek többségében mindent jól csináltunk, csak a rendszer nem tudja kiolvasni a monitorunk pontos felbontását és frissítési frekvenciáját. Bizonyos hardvereknél elő szokott ez fordulni, illetve ha egy VirtualBox-ban futó gépről van szó, akkor ez a helyzet gyakrabban előfordul. Virtualbox esetén ilyenkor célszerű feltelepíteni a vendég integrációs szolgáltatásokat, hogy pontosabban felismerje gépünk hardverét. Ha ez után sem került még elő a megfelelő felbontás, akkor jöhetnek az alábbiak.

Nyissunk egy terminál ablakot, majd a sima felhasználónkkal kérdezzük le a rendelkezésre álló monitor bemeneteket és a hozzájuk kapcsolódó felbontásokat az xrandr paranccsal, hogy lássuk mi a helyzet a felbontásaink körül:

xrandr -q

Nálam friss telepítés után ezt a kimenetet adta:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
VGA-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*  
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)

Nekem egy Intel I7-be integrált Intel HD4000-es videokártyám van, és egy 19" -os monitorom, aminek a natív felbontása 1440x900, 75 Hz, de nincs a listán, tehát a telepítés után nem ismerte fel a monitorom felbontását.

A továbbiakban a saját képernyő felbontásommal és frissítési frekvenciámmal (1440x900x75) viszem végig a példát, mindenki helyettesítse be a saját monitorának megfelelő paramétereket a parancsokba.

A beállításhoz először ki kell kalkuláltatnunk a "modeline"-t, azaz a paraméterekből álló sort, amivel a hardver megfelelően fog tudni működni. Ha újabb, LCD/TFT/stb monitorunk van akkor ezt a cvt paranccsal tudjuk lekérdezni:

cvt 1440 900 75

Ahol értelemszerűen szóközökkel elválasztva megadjuk a vízszintes és függőleges felbontását a monitorunknak, utána pedig a frissítési frekvenciáját. Ekkor visszaadja a modeline-t, ami nálam így néz ki:

# 1440x900 74.98 Hz (CVT 1.30MA) hsync: 70.64 kHz; pclk: 136.75 MHz
Modeline "1440x900_75.00"  136.75  1440 1536 1688 1936  900 903 909 942 -hsync +vsync

Ha régi crt monitort használunk, akkor pedig a régi szabványokat tartalmazó gtf parancsot futtassuk:

gtf 1440 900 75

A paramétereket itt is ugyanebben a sorrendben adjuk meg. A kimenet itt picit eltér:

# 1440x900 @ 75.00 Hz (GTF) hsync: 70.50 kHz; pclk: 136.49 MHz
  Modeline "1440x900_75.00"  136.49  1440 1536 1688 1936  900 901 904 940  -HSync +Vsync

Természetesen én az elsőt használom, mivel LCD monitorom van, csak szemléltetésnek mutattam be a gtf parancs használatát, ha valakinek régebbi monitora van.

Ezután az xrandr paranccsal hozzunk létre egy új felbontást a kapott modeline alapján:

xrandr --newmode "1440x900_75.00"  136.75  1440 1536 1688 1936  900 903 909 942 -hsync +vsync

Elhagyva a "Modeline" szót, az utána lévő részt egy az egyben másoljuk az xrandr parancs --newmode paramétere után. Helyes működés esetén nem ad kimenetet.

Ha ekkor lekérdezzük újra a felbontásokat:

xrandr -q

akkor már elő is került az újonnan felvitt felbontás, csak még nincs a "helyén":

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
VGA-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
  1440x900_75.00 (0xd6) 136.750MHz -HSync +VSync
        h: width  1440 start 1536 end 1688 total 1936 skew    0 clock  70.64KHz
        v: height  900 start  903 end  909 total  942           clock  74.98Hz

Itt tehát láthatjuk a monitorunk bemeneteit (VGA, HDMI, stb). Majd amelyikkel használjuk a számítógépünket, ahhoz kell hozzáadni a felbontásunkat. Én a sima VGA csatlakozóval használom, így a listámban szereplő bemenetek közül a "VGA-1" -et használom:

xrandr --addmode VGA-1 1440x900_75.00

Ekkor ha újra megnézzük a felbontásainkat, akkor már a megfelelő helyen van az újonnan felvitt képernyőfelbontás:

xrandr -q
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
VGA-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
   1440x900_75.00  74.98  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)

Ezután már csak át kell váltani az új felbontásra. Mostmár az asztal grafikus beállító ablakában is megjelenik a felbontás, tehát ott is átállíthatjuk, vagy adjuk ki a következő parancsot:

xrandr -s 1440x900

Ekkor a monitor átvált a kért felbontásra.

 

 

Tartós beállítás

A felbontásunk tehát megvan, és működik is szépen. Viszont ha újraindítjuk a gépet, akkor ezt újra el kellene játszanunk. Ezért egy egyszerű megoldással tartóssá tesszük a beállításunkat.

Hozzunk létre magunknak egy shell szkript fájlt, például:

nano ~/.config/sajat_felbontas.sh

Majd tegyük bele a fentiek alapján a szükséges beállító parancsokat:

#!/bin/bash                                                                                    
xrandr --newmode "1440x900_75.00"  136.75  1440 1536 1688 1936  900 903 909 942 -hsync +vsync
xrandr --addmode VGA-1 1440x900_75.00
xrandr -s 1440x900

(Itt a lekérdező (cvt/gtf) parancsot nem kell beletenni, mert a modeline-t már kiolvastuk, és annak nem változik a tartalma.)

Tegyük futtathatóvá a chmod paranccsal:

chmod +x ~/.config/sajat_felbontas.sh

Ezután tegyük bele grafikus asztalkörnyezetünk automatikus indításába.

 

Konklúzió

Ezzel a módszerrel bármilyen monitorhoz beállíthatjuk a megfelelő felbontást, ha az ablakkezelőnk nem ismerné fel magától. Természetesen ehhez szükséges a videokártya driverünk megfelelő működése is. Hibás vagy rosszul bekonfigurált video vezérlővel a felbontások sem működnek megfelelően.