Fönstersystem
Inom datorer är ett fönstersystem (eller fönstersystem ) programvara som hanterar olika delar av bildskärmar separat . Det är en typ av grafiskt användargränssnitt (GUI) som implementerar WIMP- paradigmet ( fönster , ikoner , menyer , pekare ) för ett användargränssnitt .
applikation som körs för närvarande tilldelas en vanligen storleksändringsbar och vanligtvis rektangulär yta på skärmen för att presentera dess GUI för användaren; dessa fönster kan överlappa varandra, till skillnad från ett sida vid sida där de inte får överlappa varandra. Vanligtvis ritas en fönsterdekoration runt varje fönster. Programmeringen av både fönsterdekorationen och tillgängliga widgets inuti fönstret, som är grafiska element för direkt användarinteraktion, såsom skjutreglage, knappar, etc., förenklas och förenklas genom användning av widget-verktygssatser .
Tekniska detaljer
Huvudkomponenten i alla fönstersystem kallas vanligtvis visningsservern, även om alternativa valörer som fönsterserver eller kompositör också används. Varje applikation som kör och presenterar sitt GUI i ett fönster är en klient till visningsservern. Displayservern och dess klienter kommunicerar med varandra över ett kommunikationsprotokoll , som vanligtvis kallas displayserverprotokoll, varvid displayservern är förmedlaren mellan klienterna och användaren. Den tar emot all indata från kärnan , som kärnan tar emot från alla anslutna inmatningsenheter , såsom tangentbord , pekdon eller pekskärm och överför den till rätt klient. Displayservern ansvarar också för utdata från klienterna till datorskärmen . Utmatningen av ljud hanteras vanligtvis inte av displayservern, utan ljudvolymen hanteras vanligtvis via GUI-appletar och det är displayservern som bestämmer vilka applikationer som ligger överst. Ett fönstersystem gör det möjligt för datoranvändaren att arbeta med flera program samtidigt. Varje program presenterar sitt GUI i sitt eget fönster, som vanligtvis är ett rektangulärt område på skärmen. [ citat behövs ]
Ur en programmerares synvinkel implementerar ett fönstersystem grafiska primitiver. Till exempel: rendera typsnitt eller rita en linje på skärmen. Det ger en abstraktion av grafikhårdvaran för användning av element på högre nivå i det grafiska gränssnittet, såsom en fönsterhanterare. [ citat behövs ]
En visningsserverprotokoll kan vara nätverksanpassad eller till och med nätverkstransparent , vilket underlättar implementeringen av tunna klienter . [ citat behövs ]
Visa server
En skärmserver eller fönsterserver är ett program vars primära uppgift är att koordinera in- och utdata från sina klienter till och från resten av operativsystemet, hårdvaran och varandra. Displayservern kommunicerar med sina klienter via displayserverprotokollet, ett kommunikationsprotokoll , som kan vara nätverkstransparent eller helt enkelt nätverksanpassat.
Visningsservern är en nyckelkomponent i alla grafiska användargränssnitt , speciellt fönstersystemet.
Visa serverkommunikationsprotokoll
X11
Ett exempel på en visningsserver är X.Org Server , som körs ovanpå kärnan (vanligtvis en Unix- liknande kärna, såsom Linux eller BSD ). Den tar emot användarindata (t.ex. från evdev på Linux) och skickar den till en av sina klienter. Displayservern tar också emot data från sina klienter; den bearbetar data, den gör sammansättningen och på Linux skickar den data till en av tre kärnkomponenter – DRM , gem eller KMS-drivrutin . Komponenten skriver in data i framebuffern och innehållet i framebuffern överförs till den anslutna skärmen och visas. X förlitar sig på GLX .
En av implementeringarna av skärmserverkonceptet är X Window System , i synnerhet dess faktiskt använda version – X.Org Server och Xlib och XCB klientbibliotek. X.Org-servern är en visningsserver, men i sin nuvarande implementering förlitar den sig på ett andra program, fönsterhanteraren för sammansättning, för att göra sammansättningen. Exempel är Mutter eller KWin .
Anmärkningsvärda exempel på bildskärmsservrar som implementerar X11-skärmserverprotokollet är X.Org Server , XFree86 , XQuartz och Cygwin/X , medan klientbibliotek som implementerar X11-skärmserverprotokollet är Xlib och XCB .
Wayland
Displayservrar som implementerar Wayland displayserverprotokoll kallas Wayland-kompositörer . Precis som alla skärmservrar är en Wayland-kompositör ansvarig för att hantera in- och utdata för sina klienter och – till skillnad från X11 – dessutom för sammansättningen . Exempel är Weston , Mutter , KWin eller Enlightenment .
Wayland-kompositörer kommunicerar med Wayland-klienter via Wayland displayserverprotokoll . Detta protokoll definierar att klienter kan skriva data direkt i rambufferten med hjälp av EGL- renderings-API :et . Visningsservern får fortfarande bestämma vilket fönster som är överst och därmed synligt för användaren och är också fortfarande ansvarig för att skicka data om indataenheter från evdev till sina klienter.
Wayland används till en viss grad i vissa Linux-skrivbordsdistributioner, såsom Fedora . Den är också väl lämpad för mobil datoranvändning och har antagits till exempel av de smartphone- och surfplattor-fokuserade projekten Tizen , Sailfish OS och AsteroidOS .
En implementering av Wayland är tillgänglig under MIT License , biblioteken libwayland-klient och libwayland-server.
Det pågår ett pågående försök att lägga till Wayland-stöd till ChromeOS .
Mir
Mir -displayservern kommer med sitt eget Mir-displayserverprotokoll som skiljer sig från de som används av X11 och Wayland. Mir stöder dessutom X11-protokollet. Den utvecklades av Canonical och var avsedd att vara den valda skärmservern för Ubuntu . Från och med 2017 har den ersatts med Wayland-skärmservern för skrivbordsutgåvor av Ubuntu.
Det finns implementeringar av Mir-visningsservern, libmir-servern och libmir-klientbiblioteken tillgängliga under GPLv3 .
SurfaceFlinger
Google utvecklade en visningsserver som heter SurfaceFlinger för Android (ett annat Linux-kärnbaserat operativsystem främst för mobila enheter):
Allt i Android renderas till en "yta"; "ytor" produceras av applikationer och placeras i en kö som hanteras av SurfaceFlinger.
Ytterligare en Android-specifik lösning är "Gralloc". Gralloc hanterar enhetsminne dvs den gör allokering, skiljedom, den hanterar synkronisering via Android/Linux fence filbeskrivningar. Gralloc konkurrerar med andra lösningar som t.ex. Mesas Generic Buffer Management (GBM) eller Nvidias EGLSreams. Gralloc hårdvaruabstraktionslager (HAL) används för att allokera buffertarna som ligger under "ytor".
För sammansättning i Android skickas Surfaces till SurfaceFlinger, som använder OpenGL ES för att göra sammansättningen.
Hardware Composer HAL (HWC) introducerades i Android 3.0 och har utvecklats stadigt under åren. Dess primära syfte är att bestämma det mest effektiva sättet att sammansätta buffertar med tillgänglig hårdvara. Som en HAL är dess implementering enhetsspecifik och görs vanligtvis av skärmhårdvaru-OEM.
Kvartskompositör
För Apples macOS- familj av operativsystem, uppfyller Quartz Compositor uppgifterna för en bildskärmsserver och en fönsterhanterare i fönstersystemet.
Desktop Window Manager
För Microsoft Windows , från Windows Vista och framåt, möjliggör Desktop Window Manager användning av hårdvaruacceleration för att återge det grafiska användargränssnittet. Det skapades ursprungligen för att möjliggöra delar av den nya "Windows Aero"-användarupplevelsen, som möjliggjorde effekter som transparens, 3D-fönsterbyte och mer. Den ingår också i Windows Server 2008, men kräver att funktionen "Desktop Experience" och kompatibla grafikdrivrutiner är installerade. Från Windows 8 och framåt kan DWM inte inaktiveras och renderas mjukvara om inget lämpligt grafikkort är installerat.
Lista över fönstersystem
För Unix-liknande operativsystem
- 8½ och rio för Plan 9
- FramebufferUI fönstersystem i kärnan
- HP Windows/9000 (på tidiga versioner av HP-UX )
- Sapphire för PERQ
- ManaGeR (MGR)
- Metisse
- Mir
- NYHETER / Öppna Windows
- NeXT DPS
- Orbital ( Redox )
- Qt Utökad
- Quartz Compositor ( Mac OS X )
- SunView
- Twin (Text WINdows)
- W Fönstersystem
- Wayland
- X fönstersystem
- XFast
- Xynth
För operativsystem i Windows NT-familjen
- Desktop Window Manager (DWM) i Microsoft Windows ( Vista och senare)
- ReactOS Explorer
- Klassiskt skal
- Pokki
- RetroUI
- Talisman Desktop
Webbfönstersystem _
Övrig
Vissa system som Microsoft Windows ( XP , 9x och tidigare), det klassiska Mac OS (version 9 och tidigare), och Palm OS , innehåller ett fönstersystem som är integrerat med operativsystemet. [ citat behövs ]
Se även
- Lista över visningsservrar
- Historik för det grafiska användargränssnittet
- Widget verktygslåda
- Skrivbordsmiljö