Xrandr, azaz két monitor Openbox alatt

Az openbox telepítése után szembesültem azzal, hogy a két monitorom felbontása és a pozíciója nem megfelelő. Fel van cserélve és maximális felbontással üzemelnek. Az egér a két monitor közt nem tud átmenni, a „rossz” oldalon lehet átmozgatni a másikra...

Ezen valamiképp segíteni kell, mert nem így akarom használni őket:

  • fordított elhelyezéssel és
  • kisebb felbontással

Eddigi ablakkezelőknél minden esetben volt valami olyan megoldás, ahol grafikusan lehetett mozgatni a két, vagy több monitor helyzetét, és a felbontást stb. állítani lehet. Itt is van, mert lehet(ne) telepíteni ArandR-t, ami egy jó grafikus beállítási lehetőség. Használata egyszerű, nem okoz senkinek sem gondot.

Én egy lehetőségre hívnám fel a figyelmet: a beállításokat scriptbe is menteni lehet, azaz több beállítást is létrehozhatunk, majd azt a scriptet, amibe mentettük lefuttatva váltani is lehet. Egy ilyen scriptet érdemes létrehozni és belenézni. Az elérési út (alapesetben)

/home/laci/.screenlayout/

ahol természetesen a laci a te felhasználói neved legyen.

Egy hibája van ennek a megoldásnak: induláskor nem azzal indul a rendszer, amivel akarom, hanem megint be kell állítani, vagy az adott scriptet futtatni.

Természetesen van arra is lehetőség, hogy az autostart-ba beírjuk a parancsokat és a paramétereket. Én ezt választottam.

Az ArandR az xrandr előtétprogramja, azaz „csak” azt paraméterezi fel és menti el a paramétereket a scriptekbe. Így már viszonylag egyszerű dolgunk van. Ha megfelel a beállítás, amit a ArandR létrehozott, akkor simán be kell másolni az autostart-ba és ki és belépni.

xrandr --output VIRTUAL1 --off --output DP2 --off --output DP1 --off --output HDMI2 --off --output HDMI1 --mode 1280x720 --pos 0x0 --rotate normal --output VGA1 --mode 1024x768 --pos 1280x0 --rotate normal

igencsak hosszú beállítást adott. A fele nem kell (off-al letiltott monitorok, rotate forgatás stb.) és jó lenne, ha számomra jobban átlátható lenne. Ezért a google keresés után javasolt manuális megoldást választottam.

Bár a fenti ArandR sorokból ki tudjuk olvasni az adatokat, de most elölről kezdve mutatom be.

xrandr

Futtassuk le paraméter nélkül, így felderíti a rendszert és kiírja az eredményeket:

Screen 0: minimum 8 x 8, current 2304 x 768, maximum 32767 x 32767 DP1 disconnected primary (normal left inverted right x axis y axis) DP2 disconnected (normal left inverted right x axis y axis) HDMI1 connected 1280x720+0+0 (normal left inverted right x axis y axis) 600mm x 340mm 1920x1080 60.00 + 1680x1050 59.88 1280x1024 75.02 60.02 1440x900 74.98 59.90 1280x960 60.00 1280x720 60.00* 1024x768 75.03 60.00 800x600 75.00 60.32 640x480 75.00 72.81 66.67 59.94 720x400 70.08 HDMI2 disconnected (normal left inverted right x axis y axis) VGA1 connected 1024x768+1280+0 (normal left inverted right x axis y axis) 470mm x 260mm 1920x1080 60.00 + 1600x1200 60.00 1680x1050 59.95 1280x1024 75.02 70.00 60.02 1440x900 59.89 1280x960 60.00 1152x864 75.00 1024x768 75.03* 70.07 60.00 832x624 74.55 800x600 75.00 60.32 56.25 640x480 75.00 72.81 59.94 VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Számunkra ebből két adat a fontos: a monitor megnevezése

HDMI1 és VGA1

Ez nyilván mindenkinél más lesz, pontosan ezért is futtattuk le a paracsot, hogy megtaláljuk a pontos megnevezést.

Illetve az adott monitornak az alapértelmezések szerinti felbontásait. Most tekintsünk el attól, hogy az xrandr-nak megadható ezektől letérő is. Az haladó megoldás és nem kezdő szint.

Ezután már fel tudjuk paraméterezni a xrandr-unkat, hogy azt tegye amit akarunk.

Bár ahogy az ArandR scriptben láttuk, megadható egy sorban is a paraméter a két monitorra, de én ketté vettem, mert így jobban átlátható.

xrandr --auto --output VGA1 --mode 1024x768

Azaz megmondjuk a VGA1 monitornak, hogy az általam kívánt felbontásban működjön. Arra mindenképp figyeljünk, hogy a képarány ne torzuljon, ha fontos nekünk a pontos szerkesztés. A monitor működni fog, de a képe kissé torz lesz, ha tényleges képarány és a kisebb képarány nem egyforma. A kör ellipszis, a négyzet pedig téglalap lesz. Illetve pontosan adjuk meg listában szereplő felbontást, mert alapesetben csak azokat ismeri fel.

xrandr --auto --output HDMI1 --mode 1280x720 --left-of VGA1

Ugyanaz, csak a másik monitorra adjuk meg a kívánt felbontást. Majd meg kell határozni, hogy az adott monitor a másikhoz képest hol helyezkedik el.

--left-of, --right-of, --above, --below, --same-as

Egy megadott, másik monitorhoz képest hol helyezkedik el.

A paraméter használata egyszerű: az másik monitorhoz képest balra van nálam a HDMI1-es.

Ezt akkor hasznos, ha jól definiálható a pozíció, de van lehetőség ennél sokkal bonyolultabb pozicionálásra is a --pos kapcsolóval. Ilyenkor kerül elő az ArandR újra. Azzal beállítjuk vizuálisan a monitorok helyzetét, majd lementjük a scriptet és abból kiolvassuk az értékeket.

VGA1 --mode 1024x768 --pos 1280x720

az alábbi helyzetben:

arandr

Így nem kell számolgatni a pixeleket. A képen láthatónál sokkal bonyolultabb (átfedés és eltolódás) monitor elhelyezésekkel is megbirkózhatunk ezzel.

-- auto paraméterrel megmondtuk az xrandr-nak, hogy minden az alapbeállítás szerinti, majd a kívánt monitoron (nálam mindegyiken) megváltoztattam amit akartam. A többi (elforgatás stb.) maradjon alapértéken.

Az xrandr -help és a man xrandr ennél lényegesen komolyabb műveletekre is segítséget nyújt, a lehetőségek tizedét sem érintettük, de a célt elértük: ott és olyan elhelyezkedésben és felbontásban működnek a monitorok, ahogy akartam. Szokjuk meg, hogy nem csak automatikusan bemásolunk egy parancsot, hanem elolvassuk a leírást és a helpet is.

Tipp: Egy script-et is készíthetünk valamilyen beállítással és azt futtatva ideiglenesen megváltoztathatjuk a felbontást – gyorsan, majd egy másikkal vissza.

Ennyi.

Az eredeti bejegyzés a blogomban jelent meg