GNU/Linux >> Znalost Linux >  >> Linux

Jak funguje displej Linuxu?

Linuxový displej

Zobrazovací systém Linuxu používá různé technologie, protokoly, rozšíření, aplikace, servery (démon), ovladače a koncepty k vytvoření okenního systému, například:Xorg, Wayland, X11, OpenGL, RandR, XrandR, rozlišení obrazovky, DPI, server zobrazení , atd. To může být zdrcující pro úplné pochopení, ale každá jeho strana je určena pro konkrétní účel a nepoužívají se všechny společně ve stejnou dobu.

Protokol X

Systém X Window, X11 (X verze 11) je okenní systém pro bitmapové displeje, běžný v operačních systémech podobných Unixu, X poskytuje základní rámec pro prostředí GUI:kreslení a přesouvání oken na zobrazovacím zařízení a interakce s myší a klávesnicí. X nenařizuje uživatelské rozhraní, to řeší jednotlivé programy. Jako takový se vizuální styl prostředí založených na X velmi liší; různé programy mohou představovat radikálně odlišná rozhraní. X vznikl v Project Athena v Massachusetts Institute of Technology (MIT) v roce 1984. Protokol X je ve verzi 11 (odtud "X11") od září 1987. Nadace X.Org vede projekt X se současnou referenční implementací , X.Org Server, dostupný jako bezplatný a open source software pod licencí MIT a podobnými povolenými licencemi.

Implementace X

Většina distribucí Linuxu používá X.Org Server což je bezplatná a open-source implementace zobrazovacího serveru pro X Window System (X11) spravovaná nadací X.Org Foundation. Samotný Xorg/X nepodporuje více poskytovaných funkcí, jako je škálování nebo vykreslování, proto Xorg používá rozšíření jako jsou XFixes, RandR (RandR spravuje xrandr může například nastavit posouvání, rozlišení nebo škálování), GLX (rozšíření OpenGL), vykreslování nebo kompozitní, což způsobí, že celý podstrom hierarchie oken bude vykreslen do vyrovnávací paměti mimo obrazovku, aplikace pak mohou převzít obsah tohoto vyrovnávací paměti a dělají, co chtějí, vyrovnávací paměť mimo obrazovku lze automaticky sloučit do nadřazeného okna nebo sloučeny externími programy, nazývanými správci skládání dělat skládání sami jako někteří správci oken dělat; Např. Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter a Xfwm. Pro ostatní „neskládání " správce oken, lze použít samostatný kompozitní správce, například:Picom, Xcompmgr nebo Unagi. Rozšíření podporovaná Xorg mohou být uvedeny s:xdpyinfo -display :0 -queryExtensions | awk '/^number of extensions:/,/^default screen number/' .

Na druhou stranu Wayland je zamýšlen jako jednodušší náhrada za Xorg/X11, snadněji se vyvíjí a udržuje, ale od roku 2020 ještě není plně připravena desktopová podpora pro Wayland kromě Gnome (např. podpora KDE Kwin a Wayland); na straně distribucí Fedora standardně používá Wayland. Všimněte si, že Wayland a Xorg mohou pracovat současně, což může být případ v závislosti na použité konfiguraci. XWayland je série záplat na kódové základně serveru X.Org, které implementují X server běžící na protokolu Wayland. Záplaty vyvíjejí a udržují vývojáři Wayland kvůli kompatibilitě s aplikacemi X11 během přechodu na Wayland a byly zavedeny ve verzi 1.16 serveru X.Org v roce 2014. Když uživatel spustí aplikaci X z Westonu, zavolá XWayland k vyřízení požadavku.

Celý rozsah

Zobrazovací server nebo okenní server je program (jako Xorg nebo Wayland), jehož primárním úkolem je koordinovat vstup a výstup svých klientů do a ze zbytku operačního systému, hardwaru a navzájem. Zobrazovací server komunikuje se svými klienty prostřednictvím protokolu zobrazovacího serveru, což je komunikační protokol, který může být transparentní v síti nebo může být jednoduše síťový. Například X11 a Wayland jsou komunikační protokoly zobrazovacího serveru.

Jak je znázorněno na obrázku správce oken je dalším důležitým prvkem desktopového prostředí, kterým je systémový software, který řídí umístění a vzhled oken v okenním systému v grafickém uživatelském rozhraní. Většina správců oken je navržena tak, aby pomáhala poskytovat pracovní prostředí. Pracují ve spojení se základním grafickým systémem, který poskytuje požadovanou podporu funkcí pro grafický hardware, ukazovací zařízení a klávesnici, a jsou často psány a vytvářeny pomocí sady nástrojů widget. KDE používá jako správce oken KWin (od roku 2020 má omezenou podporu pro Wayland), podobně Gnome 2 používá Metacity a Gnome 3 používá Mutter jako správce oken.

Dalším důležitým aspektem správce oken je kompozitor nebo správce skládání oken , což je správce oken, který poskytuje aplikacím vyrovnávací paměť mimo obrazovku pro každé okno. Správce oken složí vyrovnávací paměti oken do obrazu představujícího obrazovku a zapíše výsledek do paměti displeje. Správci skládání oken mohou provádět další zpracování na oknech s vyrovnávací pamětí, aplikují 2D a 3D animované efekty, jako je prolnutí, vyblednutí, změna měřítka, rotace, duplikace, ohýbání a zkroucení, míchání, rozmazávání, přesměrování aplikací a překládání oken do jednoho z mnoha zobrazení. a virtuální desktopy. Technologie počítačové grafiky umožňuje vykreslování vizuálních efektů v reálném čase, jako jsou vržené stíny, živé náhledy a komplexní animace. Vzhledem k tomu, že obrazovka má dvojitou vyrovnávací paměť, během aktualizací nebliká. Mezi nejčastěji používané kompoziční správce oken patří:Linux, BSD, Hurd a OpenSolaris-Compiz, KWin, Xfwm, Enlightenment a Mutter. každý z nich má svou vlastní implementaci, například KWin'scompositor KDE mají mnoho funkcí/nastavení, jako je rychlost animace, zabránění roztržení (vsync), miniatury oken, metoda změny velikosti a mohou používat OpenGLv2/OpenGLv3 nebo XRender jako backend vykreslování spolu s Xorg. (XRender/Render nezaměňovat s XRandR/RandR).

OpenGL (Otevřená grafická knihovna) je vícejazyčné rozhraní pro programování aplikací pro různé platformy (API) pro vykreslování 2D a 3D vektorové grafiky. Rozhraní API se obvykle používá k interakci s grafickým procesorem (GPU) k dosažení hardwarově akcelerovaného vykreslování. OpenGL je renderovací knihovna, kterou lze použít s Xorg, Wayland nebo jakoukoli aplikací, která ji implementuje. Instalaci OpenGL lze zkontrolovat pomocí glxinfo | grep OpenGL .

Rozlišení displeje nebo režimy zobrazení počítačového monitoru nebo zobrazovacího zařízení je počet odlišných pixelů v každém rozměru, které lze zobrazit. Obvykle se uvádí jako šířka × výška s jednotkami v pixelech:například 1024 × 768 znamená, že šířka je 1024 pixelů a výška je 768 pixelů. xrandr lze použít k přidání nebo vykreslení/simulaci nového rozlišení displeje.

DPI představuje počet bodů na palec a je mírou prostorového tisku/zobrazení , zejména počet jednotlivých bodů, které lze umístit do řádku v rámci rozpětí 1 palce (2,54 cm). Obrazovky počítačů nemají body, ale mají pixely, úzce související koncept je pixelů na palec neboli PPI, takže DPI je implementováno s konceptem PPI. Výchozí 96 DPI znamená 96x96 vertikálně a horizontálně. Je navíc nastavení X DPI (bod na palec) určeno pouze pro změnu měřítka textu? QA je velmi informativní.

Poznámky

Některé gui nástroje KDE: systemsettings5> displej, kcmshell5 xserver a kinfocenter .

Odkazy

Odkazy a zdroje: 1,2,3,4,5,6,7,8,9,10,11 a 12.


Otázka je poměrně široká a na toto téma by se dalo napsat mnohem víc, než pokrývá tato odpověď. Pokusil jsem se poskytnout historický pohled na vývoj grafiky Linuxu. Grafika, okenní systémy a grafická uživatelská rozhraní (GUI) v Linuxu prošly mnoha změnami od počátku 90. let, kdy byl na Linux portován X Window System (X11).

Systém X Window

X Window System byl vyvinut na MIT v 80. letech 20. století. Název X11 odkazuje na protokol verze 11 protokolu X, ale X10 byl také používán mimo MIT, než byl v roce 1987 nahrazen verzí 11.

X Window System byl navržen pro práci na grafických systémech, které byly nejmodernější v 80. letech. Typická pracovní stanice měla vyrovnávací paměť pro jeden snímek připojenou k jednoduchému řadiči CRT, který zobrazoval obsah vyrovnávací paměti snímků na monitoru displeje. Výpočetní práce před érou PC a pracovních stanic byly prováděny přes sériové linky („němé“) terminály připojené k centrálním počítačům umístěným v počítačových strojovnách. Tento historický kontext ovlivnil design X11:grafické aplikace mohly být spouštěny na vzdálených počítačích s uživatelskou interakcí s programem pomocí terminálů s grafickými schopnostmi. "Terminál" může být pracovní stanice nebo vyhrazený terminál X.

X11 byl navržen jako systém server-klient. X server byl jedinou částí, která komunikovala přímo s grafickým hardwarem. X klienti jsou aplikační programy, které komunikují se serverem pomocí protokolu X, buď pomocí místního soketu domény Unix nebo připojení TCP/IP. Protokol X používá klient k odesílání požadavků na server a přijímání zpráv o událostech ze serveru.

Požadavky zahrnují zprávy pro:

  • vytvoření okna
  • mapování/zrušení mapování okna:zviditelnění/neviditelní okna
  • kreslení v okně:kreslení pixelů, čar, oblouků, elipsů, pixmap atd.
  • zobrazení textu pomocí zadaného písma, velikosti a stylu
  • přesouvání a změna velikosti oken, změna pořadí překrývání oken atd.

Klienti dostávají zprávy (nejedná se o vyčerpávající seznam):

  • odpovědi na žádosti
  • události stisknutí klávesy a kliknutí myší
  • zobrazit události (je třeba překreslit oblast okna)
  • zaměřte se na události zisku/ztráty

Aby uživatel mohl ovládat okna na obrazovce, například přesouvat, měnit velikost, zavírat, zvedat a snižovat okno, je k dispozici zvláštní aplikace zvaná správce oken. Správce oken může také zobrazovat dekorace oken, jako jsou okraje, záhlaví a globální nabídky.

Dalo by se říci, že server X11 je poměrně „na vysoké úrovni“, protože zpracovává (nebo alespoň tradičně zpracovává) všechny druhy zdrojů:okna, fonty, pixmapy, barevné mapy, grafické kontexty (věci jako barva popředí/pozadí, šířka čáry atd. ). Kromě toho se server stará o věci, jako jsou vztahy mezi rodiči a potomky oken a pořadí překrývání oken.

Protokol X je navržen tak, aby byl rozšiřitelný. X server lze naučit dělat nové triky a do protokolu jsou přidány nové operační kódy, aby server tyto triky prováděl. Rozšíření XRender například zavádí způsob, jak zacházet s průhledností ("alfa prolnutí"). Toto rozšíření bylo představeno hlavně pro podporu vyhlazených písem, ale bylo také použito pro efekty na ploše, jako jsou vržené stíny na oknech. Rozšíření RandR ("Resize and Rotate") umožňuje měnit velikost, otáčet a odrážet kořenové okno na obrazovce. To vám umožní promítat obrazovku pomocí projektoru, který je obrácený, nebo použít nakloněný monitor.

Rozšíření GLX (OpenGL Extension to the X Window System) umožňuje používat OpenGL v okně poskytovaném X serverem. Volání OpenGL jsou součástí požadavků protokolu X.

V určitém okamžiku evoluce X11 byla manipulace s fonty přesunuta tak, aby ji ovládal klient. Důvody této změny jsou diskutovány v New Evolutions v X Window System.

Přímé vykreslování

Na počátku 21. století ušel zobrazovací hardware dlouhou cestu od jednoduchých černobílých bitmapových displejů, které existovaly, když vývoj X začal v 80. letech. Relativní režie X11 modelu inter-process communication (IPC) se příliš zvětšila, a to i při použití místního soketu. Řešením bylo opustit princip, že X server je jedinou částí, která komunikuje přímo s hardwarem, a nechat klienty mluvit přímo s grafickou kartou. Zrodila se infrastruktura přímého vykreslování (DRI).

DRI umožňuje klientské aplikaci X obejít X server a vykreslit přímo na grafickém adaptéru. Protože kromě tradičního X serveru může být současně aktivních několik aplikací přímého vykreslování, byla zavedena komponenta jádra nazvaná Direct Rendering Manager, která určovala přístup k hardwaru. Existují tři verze architektury DRI, původní DRI (zastaralá), DRI2 a DRI3.

Správci skládání oken

Další novinkou, která vstoupila na linuxovou grafickou scénu, byl compositing window manager. Tradičně byla každá X klientská aplikace zodpovědná za překreslení svých oken (částečně nebo celého okna) na vyžádání. X server odeslal aplikaci událost Expose, když bylo potřeba překreslit v důsledku mapování okna na obrazovce, nebo pokud již není zakryto nějakým jiným oknem. Když je odstraněno překrývající se okno, okno pod ním se obnaží. Pokud tuto oblast nepřekreslíte, bude se stále zobrazovat starý obsah. https://cs.wikipedia.org/wiki/Visual_artifact

Správce skládání oken to změní. Aplikace se vykreslují do vlastních vyrovnávacích pamětí mimo obrazovku, z nichž každá je jakousi samostatnou obrazovkou s výhradním přístupem aplikace vlastnící vyrovnávací paměť. Úkolem kompozičního správce oken je zobrazit tyto buffery v oknech na skutečné obrazovce a oříznout všechna okna, která jsou zakryta jinými okny nebo částečně mimo obrazovku. Správce oken zobrazuje "složení" oken.

Správce kompozice může obvykle také zobrazovat animované efekty, jako je změna měřítka, deformace, blednutí, otáčení, rozmazání oken. Například pohyb okna může způsobit jeho kývání nebo virtuální plochy mohou být zobrazeny na straně rotující krychle.

Nastavení režimu jádra

X server se tradičně staral také o nastavení režimů grafického adaptéru, jako je rozlišení a obnovovací frekvence. Nastavení režimu bylo od té doby přesunuto do součásti jádra Linuxu nazvané Nastavení režimu jádra (KMS). To vyřešilo spoustu problémů s přepínáním mezi virtuálními konzolami Linuxu.

Evdev

X server měl také znalosti o vstupních zařízeních a například typ myši musel být specifikován v X konfiguraci. X server byl zbaven tohoto úkolu zavedením subsystému evdev linuxového jádra, který poskytuje generické rozhraní vstupních událostí.

Wayland

Se vším tímto vývojem se mnoho úkolů prováděných X serverem přesunulo mimo X server. Při použití přímého vykreslování již klienti protokol X nepoužívají. Díky KMS se X server nemusí trápit nízkoúrovňovým programováním grafických adaptérů. S evdev byla manipulace se vstupními zařízeními na X serveru zjednodušena. Při použití skládacího správce oken, který přeuspořádává a deformuje okna, X server nemá ponětí, co se děje na obrazovce. "Správce oken je nový X server."

Wayland vznikl jako výsledek zjištění, že proces X serveru zbývalo jen málo práce, a odstraněním prostředníka (X server) bylo možné dosáhnout mnohem jednoduššího grafického systému pro stolní počítače. Zpětná kompatibilita je poskytována prostřednictvím Xwayland, upraveného serveru Xorg, který zobrazuje okna nejvyšší úrovně X pomocí povrchů Wayland.

Přesně řečeno, Wayland je pouze protokol, který definuje, jak klienti komunikují se zobrazovacím serverem. Protokol Wayland je zcela odlišný od protokolu X:protokol Wayland nedefinuje zprávy pro kreslení grafiky nebo textu, ani nezpracovává písma.

V architektuře Wayland jsou správce oken a zobrazovací server sloučeny do jedné softwarové komponenty, správce skládání oken. Klienti si mohou prostřednictvím softwarové knihovny pomocí protokolu Wayland vyžádat povrch, na který budou kreslit. "Povrch je objekt představující obdélníkovou oblast na obrazovce definovanou umístěním, velikostí a obsahem pixelů."

Klienti se vykreslují do vyrovnávací paměti mimo obrazovku, které jsou poté připojeny k povrchu a vytvářejí výstup na obrazovce. Klient může k vykreslování použít různá rozhraní API:OpenGL, OpenGL ES atd. („Co je to kreslicí API? Ať už to chcete mít cokoli“) Používá se dvojité ukládání do vyrovnávací paměti:klient aktualizuje svůj obraz pomocí druhé vyrovnávací paměti a pokud tato vyrovnávací paměť obsahuje koherentní obraz, přepne se na zobrazení při dalším intervalu vertikálního zatemnění monitoru. Mottem Waylanda je:"Každý rám je dokonalý", tj. okna se netrhají, neblikají ani neblikají.

Manipulace se vstupy ve Waylandu probíhá přes sazbu, což je jediná součást, která ví, které okno je pod kurzorem myši (nezapomeňte, že sazeč také mohl okna pokřivit). Kompozitor transformuje souřadnice obrazovky na souřadnice okna příslušného okna a odešle událost klientovi.

Pokud vás zajímá příběh, který vedl ke vzniku Waylandu, doporučuji zhlédnout povedenou prezentaci Daniela Stonea Skutečný příběh za Waylandem a X.


Linux
  1. Jak zobrazit směrovací tabulku v Linuxu

  2. Jak rm funguje? Co dělá rm?

  3. Jak funguje příkaz ps?

  1. Co je NGINX? Jak to funguje?

  2. Jak Awk ‚!a[$0]++‘ funguje?

  3. Jak Sticky Bit funguje?

  1. Linux – Jak funguje průměrná zátěž u moderních procesorů?

  2. Linux – Jak zobrazit uvítací zprávu v Unixu?

  3. Ssh – Jak funguje Tcp-keepalive v Ssh?