Jak použít xrandr v příkazové řádce?

Jak použít xrandr v příkazové řádce?
« kdy: 04. 01. 2020, 21:01:31 »
Chci změnit rozlišení na příkazové řádce linuxu (tedy ne v desktopovém prostředí.) Jak použít xrandr v příkazové řádce? . Hlásí to cant open display.Možná nedává dotaz smysl někomu na první pohled, ale jak přes xrandr nastavím "rozlišení"? Rozlišení "plochy", nikoli monitoru (to jde nastavit přes tvservice -e).
Situace je totiž taková že v současném rozlišení  je pokrytí plochy OK (obraz pokrává monitor.. Jenže po změně rozlišení monitoru na nativní -správné přes tvservice -e "DMT 87 HDMI" je sice nastaveno správné rozlišení, ale obraz se zobrazuje jen v levé horní části monitoru (pravo a dole je pruh rovný rozdílu rozměrů )

V desktopovém režimu jde použít  xrandr, což tady nelze.. Ani FBset nejde použít
ioctl FBIOOPUT_VSCREENINFO: Invalid argument.
« Poslední změna: 05. 01. 2020, 17:26:39 od Petr Krčmář »


_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
K tomu prvnímu: máš blbě nastavené proměnné prostředí DISPLAY a XAUTHORITY. Podívej se (ps axue) jak je má nastavená nějaká aplikace co v GUI funguje a nastav si je stejně.

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
pokud prikazovym radkem je myslena virtualni konzole nebo ssh:
Kód: [Vybrat]
DISPLAY=:0 xrandr ...

Tak pokud tou příkazovou řádkou myslíte to, co naběhne po startu systému - pokud pak nenabíhají Xka - tak na to xrandr fakt nepomůže. Ten je právě pro nastavení rozlišení v X Windows. Pro textovou konzoli se to dělalo a dělá jinak. Dříve se dával kernelu parametr vga= a nějaké číslo (to se někde muselo najít, které číslo je jaké rozlišení). To se dalo zadat v konfiguráku od Grubu nebo LiLo.

Pokud máte distribuci založenou na Debianu (takže třeba i Ubuntu), tak se zkuste podívat na soubor /etc/default/grub a zde na volbu GRUB_GFXMODE...

Je to raspbian na raspberry a k parametrům kernelu to dávat nechci, protože jde o změnu rozlišení dle situace — dle připojeného monitoru.


qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Jak použít xrandr v příkazové řádce?
« Odpověď #5 kdy: 05. 01. 2020, 21:24:08 »
sudo raspi-config

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Je to raspbian na raspberry a k parametrům kernelu to dávat nechci, protože jde o změnu rozlišení dle situace — dle připojeného monitoru.
mel bys zapracovat na dodani informaci pokud chces poradit a ne ze se to z tebe bude dolovat...

chces to meni v terminalu co mas pustenej v Xkach? nebo ve virtualni konzoli ci ssh ALE menit rozliseni X? nebo resis rozliseni framebufferu pro virtualni konzoli a Xka vubec nebezej?

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #7 kdy: 05. 01. 2020, 22:19:53 »
Poměrně dávno existovalo nějaké standardní rozhraní (directfb?) k framebufferové grafice v kernelu, kde se daly režimy s notnou dávkou štěstí přehazovat utilitou fbset . To kernelové rozhraní prezentoval framebufferový HW-specifický driver pro konkrétní značku či modelovou řadu grafických karet. V té době se rozlišení framebufferu nastavovalo všelijak, u různých výrobců různou syntaxí na "kernel command line" (v bootloaderu), často spíš nijak (driver se chytal na DDC/EDID, což ne vždycky zafunguje).

Pak se do jádra dostalo pár dalších frameworků pro jednotnou práci s rozlišením displejů: klíčová slova DRM="Direct Rendering Manager" a KMS="Kernel Mode Setting", což byly původně systémové pomůcky/rozhraní pro sjednocené nastavení videorežimu displeje pro X-Windows a "bezešvou grafiku od bootloaderu po Xwindows logon" (viz též příbuzné heslo Plymouth). A jaksi spíš na okraj to dostalo taky legacy-compatible framebufferové rozhraní, původně striktně read-only :-( A bohužel KMS+DRM dodnes nemá svoji vlastní dvorní utilitu v textové konzoli.

Nicméně se zdá, že v dnešní době to "okrajové" framebufferové rozhraní do DRM+KMS ledacos umí, potažmo fbset pořád ještě neskončil natrvalo ve starém železe. Dotaz do googlu mi našel dvě debaty, jak na to na RPi a na Odroidu. Zejména to heslo ohledně Odroidu je výživné a naznačuje, že je třeba řešit (sladit) dvě vrstvy: A) videorežim nastavený na fyzickém výstupním portu (řádky, snímky, pixely, temné místo, hodiny, hsync, vsync) a B) rozlišení (=rozměry) framebufferu, tzn. vlastně okna v paměti. Něco z toho zařídí fbcon, ta druhá vrstva by měla mít větev v sysfs. Těžko říct, nakolik je toto dneska skutečně nezávislé na hardwaru, jestli to pojede přesně stejně na PC apod. Jisté je, že dnešní DRM+KMS už mají ponětí o fyzických výstupních portech, takže se nedivte, pokud na Vás odkaz na ident fyzického výstupního portu tu a tam vykoukne v konfiguraci.

Pro úplnost: podobně zní zkratka DRI = Direct Rendering Infrastructure, ale jedná se o cosi dost "kolmého", týká se to 3D akcelerace a taky je to kdesi mezi GPU hardwarem a X-Windows (případně snad i bez X-windows), má to cosi společného s MESA/OpenGL a nejsem si jistý, nakolik je to dneska živé a perspektivní. Každopádně to zjevně nemá nic moc společného s konfigurací low-level geometrie videorežimu na konkrétním výstupním portu, tím méně v textové konzoli.

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #8 kdy: 06. 01. 2020, 00:05:25 »
X-ka naběhnou ale přepínám do virtuální konzole. Jelikož mám v xorg rozhašený obraz, tak že pozadí plochy je rozkouskované na do mřížky 6x10 asi, přesun oken dělá "stopy"(to znají uživatelé Windows Me, když se zasekne okno), nejsou vidět někde znaky při psaní a navíc v xovém směru jsou nějak zmršeně vidět věci jako kdyby byly pixelovově široké prvky decimovány nearest neighbor implementací, kurzor myši neodpovídá na co klikne. Zajímavé, že v Y-směru skorožádné problémy nejsou. (asi bug/url] )

Jelikož k nastavení rozlišení monitoru používám tvservice, pak to implikuje, že nepoužívám vc4-kms-v3d (tzv full KMS)
A jelikož nejde použít fbset, implikuje to, že není použit non GL driver.

Zbývá třetí  vc4-fkms-v3d
sudo raspi-config

co má tohle znamenat, co já s tím? nastavit/vyklopit?




chces to meni v terminalu co mas pustenej v Xkach? nebo ve virtualni konzoli ci ssh ALE menit rozliseni X? nebo resis rozliseni framebufferu pro virtualni konzoli a Xka vubec nebezej?
V Xkách jsem to již změnil, resp. už nevím, ztrácím se v tom, protože zkouším různé náhodné  kroky (pkill xorg, pkill xcompmgr, tvservice 87HMI, fbset, startx)
a v nativním rozlišení se desktopové prvky rozhasí, nebo nejsou vidět části ui, tak přepínám do konzole, která po změně přes tvservice z FULLHD na QHD  mapuje původní fullHD obraz do horní levé části. Když už jsem v té virtuální konzoli, tak bych tam rád viděl obraz přes celý monitor + v nativním rozlišení.

Celý problém se násobí tím, jestli monitor je připojen před zapnutím nebo až po (na to musím mít hdmi_force_hotplug=1)


Taky se mi stalo, že když jsem ukončil Xorg, že jsem pak měl 2 konzole přes sebe a nebo že jsem měl po startx  současně konzoli a desktopové rozhraní a někde klávesnice psala do konzole a někdy dělala úkony v DE.

Pro úplnost: podobně zní zkratka DRI = Direct Rendering Infrastructure, ale jedná se o cosi dost "kolmého", týká se to 3D akcelerace a taky je to kdesi mezi GPU hardwarem a X-Windows (případně snad i bez X-windows), má to cosi společného s MESA/OpenGL a nejsem si jistý, nakolik je to dneska živé a perspektivní. Každopádně to zjevně nemá nic moc společného s konfigurací low-level geometrie videorežimu na konkrétním výstupním portu, tím méně v textové konzoli.
Existuje nějaký článek, který by tyhle věci vysvětlil  a jak jsou propojené? Je tam spousta pojmů, jako Galium ,MESA,  GLES, Glamor, DRI, Tracker, týká se to 3D grafiky.

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #9 kdy: 06. 01. 2020, 13:18:00 »
@pivotal: asi jsem měl pečlivěji číst, co jste psali prve, než jsem odpověděl :-)

Něco podobného popisoval ten člověk s Odroidem - ale jemu fungoval fbset, a dostal radu, aby provedl fbset a zároveň ještě šáhl do sysfs. Tzn. pokud Vám nefunguje fbset, tak ten nápad stojí už jenom na jedné noze a asi se chystá upadnout.

Obecně mám pocit, že tyhle generické fígle mají šanci spíš na x86 a Intel IGP. Na ARMech budou ovladače GPU typicky proprietary a odhadem i míň otestavané/dotažené v kontextu té volné tvorby, o kterou se snažíte. Odhadem má Raspbian prošlápnutou jednu cestičku, aby X nastartovaly se správným rozlišením, a po obou stranách této prošlapané cestičky jsou nášlapné miny.

Obecně při přepínání mezi X a textovou virtuální konzolou se mění videorežim, i když ta konzola jede v high-res framebufferu (a dokonce asi i v případě, že mají konzola i X shodné rozlišení). Pokud se to při nějakém zásahu sejde spolu na jedné obrazovce, asi jste mimo bezpečnou zónu, nebo jste šlápl do nějakých bugů v grafických ovladačích pro Váš hardware, nebo tak něco.
Opět: obecně bych se úplně nedivil, pokud se někde nastavuje časování videorežimu pro fyzický výstup, a jinde framebuffer jakožto obdélníkové okno ve videoRAM, do toho se ovladače snaží třeba ještě pokonfigurovat nějaký letmý scaler mezi framebufferem a fyzickým výstupem, tak z toho můžou být slušné halušky :-) Máte moje sympatie.

A zpátky k tomu původnímu dotazu: pokud jeho smyslem mělo být, připojit se vzdáleně přes SSH a spustit XRANDR proti relaci Xserveru který kreslí na lokální grafický výstup (poštelovat mu rozlišení), tak přesně tohle jsem včera zkusil na svém x86/Intel HTPC, jenom bez parametrů = nechat si vypsat tabulku videorežimů, a výsledkem bylo "cannot open display" nebo tak něco. Asi ještě zkusím nastavit proměnnou DISPLAY, zatím jsem nebádal nad přesnou syntaxí. EDIT: aha, on už mi k3dAR napověděl výše :-)
« Poslední změna: 06. 01. 2020, 13:19:41 od František Ryšánek »

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #10 kdy: 06. 01. 2020, 16:38:22 »
ke vzdálenému přístupu jsem se ještě nedostal.

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #11 kdy: 03. 03. 2020, 16:32:31 »
Odebrání externího monitoru mi zasekává grafiku.
Tak se přepínám přes ctrl+alt+F1 do příkazového řádku a tam spouštím:


sleep 5; xrandr -d :0 --output LVDS-1 --mode 1280x800  --rate 60 --verbose


Hned po spuštění přepínám alt+F7 do GUI.

Noteobook od HP, Hewlett-Packard Compaq 6720s ročník 2008 s Ubuntu 18.04.4 LTS, Xfce.

CPU: Intel Pentium M na 2 GHz

VGA compatible controller: Intel Corporation Mobile
GME965/GLE960 Integrated Graphics Controller (rev 0c)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Jak použít xrandr v příkazové řádce?
« Odpověď #12 kdy: 03. 03. 2020, 17:27:37 »
Odebrání externího monitoru mi zasekává grafiku. [...] HP, Hewlett-Packard Compaq 6720s ročník 2008 s Ubuntu 18.04.4 LTS, Xfce.[...]
nema to S-Video vystup? myslim ze na necem podobnem bylo treba s novejsim jadrem vypnout s-video, jadernym parametrem:
Kód: [Vybrat]
video=SVIDEO-1:d
pripadne Xfce 4.14 kde je lepe resene vicemonitorstvo...

Re:Jak použít xrandr v příkazové řádce?
« Odpověď #13 kdy: 04. 03. 2020, 11:42:44 »
Jen pro zajímavost, arandr (grafické klikátko k xrandr) umí vyexportovat nastavení monitorů jako xrandr skript, docela často to používám když si v arandr-u nastavím nějaký layout monitorů a pak si na to chci udělat klávesovou zkratku.