System okienkowy
W informatyce system okienkowy (lub system okienkowy ) to oprogramowanie zarządzające oddzielnie różnymi częściami ekranów . Jest to rodzaj graficznego interfejsu użytkownika (GUI), który implementuje paradygmat WIMP ( okna , ikony , menu , wskaźnik ) dla interfejsu użytkownika .
Każdej aktualnie działającej aplikacji przypisuje się zwykle zmienną wielkość i zwykle prostokątną powierzchnię wyświetlacza, aby zaprezentować użytkownikowi swój GUI; te okna mogą nakładać się na siebie, w przeciwieństwie do interfejsu kafelkowego , w którym nie mogą się nakładać. Zwykle wokół każdego okna rysowana jest dekoracja okienna . Programowanie zarówno dekoracji okna, jak i dostępnych w nim widżetów , które są elementami graficznymi służącymi do bezpośredniej interakcji użytkownika, takimi jak suwaki, przyciski itp., jest ułatwione i uproszczone dzięki zastosowaniu zestawów narzędzi widżetów .
Szczegóły techniczne
Główny składnik każdego systemu okienkowego jest zwykle nazywany serwerem wyświetlania , chociaż używane są również alternatywne nazwy, takie jak serwer okien lub kompozytor. Każda aplikacja, która działa i prezentuje swój graficzny interfejs użytkownika w oknie, jest klientem serwera wyświetlania. Serwer wyświetlania i jego klienci komunikują się ze sobą za pośrednictwem protokołu komunikacyjnego , który jest zwykle nazywany protokołem serwera wyświetlania, przy czym serwer wyświetlania jest pośrednikiem między klientami a użytkownikiem. Otrzymuje wszystkie dane wejściowe z jądra , które jądro otrzymuje ze wszystkich podłączonych urządzeń wejściowych , takich jak klawiatury , urządzeń wskazujących lub ekranu dotykowego i przesyła je do właściwego klienta. Serwer wyświetlania jest również odpowiedzialny za wyjście klientów na monitor komputera . Wyjście dźwięku zwykle nie jest zarządzane przez serwer wyświetlania, ale głośność dźwięku jest zwykle obsługiwana przez aplety GUI i to serwer wyświetlania decyduje, które aplikacje są na wierzchu. System okienkowy umożliwia użytkownikowi komputera pracę z kilkoma programami jednocześnie. Każdy program prezentuje swój graficzny interfejs użytkownika we własnym oknie, które na ogół jest prostokątnym obszarem ekranu. [ potrzebny cytat ]
Z punktu widzenia programisty system okienkowy implementuje prymitywy graficzne. Na przykład: renderowanie czcionek lub rysowanie linii na ekranie. Zapewnia abstrakcję sprzętu graficznego do użytku przez elementy interfejsu graficznego wyższego poziomu, takie jak menedżer okien. [ potrzebne źródło ]
Protokół serwera wyświetlania może działać w sieci lub nawet być przezroczysty dla sieci , co ułatwia implementację cienkich klientów . [ potrzebne źródło ]
Serwer wyświetlania
Serwer wyświetlania lub serwer okien to program, którego głównym zadaniem jest koordynowanie danych wejściowych i wyjściowych swoich klientów do iz pozostałej części systemu operacyjnego, sprzętu i siebie nawzajem. Serwer wyświetlania komunikuje się ze swoimi klientami za pośrednictwem protokołu serwera wyświetlania, protokołu komunikacyjnego , który może być przezroczysty dla sieci lub po prostu zdolny do pracy w sieci.
Serwer wyświetlania jest kluczowym elementem każdego graficznego interfejsu użytkownika , w szczególności systemu okien.
Wyświetl protokoły komunikacyjne serwera
X11
Jednym z przykładów serwera wyświetlania jest serwer X.Org , który działa na jądrze (zazwyczaj jądro podobne do systemu Unix , takie jak Linux lub BSD ). Otrzymuje dane wejściowe użytkownika (np. z evdev w systemie Linux) i przekazuje je jednemu ze swoich klientów. Serwer wyświetlania otrzymuje również dane od swoich klientów; przetwarza dane, zajmuje się komponowaniem, aw Linuksie przekazuje dane do jednego z trzech komponentów jądra – DRM , gem lub sterownika KMS . Komponent zapisuje dane do bufora ramki a zawartość bufora ramki jest przesyłana do podłączonego ekranu i wyświetlana. X polega na GLX .
Jedną z implementacji koncepcji serwera wyświetlania jest X Window System , aw szczególności jego aktualnie używana wersja – X.Org Server oraz biblioteki klienckie Xlib i XCB . Serwer X.Org jest serwerem wyświetlania, ale w obecnej implementacji opiera się na drugim programie, menedżerze okien do tworzenia kompozycji, który wykonuje kompozycję. Przykładami są Mutter lub KWin .
Godnymi uwagi przykładami serwerów wyświetlania implementujących protokół serwera wyświetlania X11 są X.Org Server , XFree86 , XQuartz i Cygwin/X , podczas gdy biblioteki klienckie implementujące protokół serwera wyświetlania X11 to Xlib i XCB .
Waylanda
Serwery wyświetlania, które implementują protokół serwera wyświetlania Wayland, nazywane są kompozytorami Wayland . Jak każdy serwer wyświetlania, kompozytor Wayland jest odpowiedzialny za obsługę danych wejściowych i wyjściowych dla swoich klientów oraz – w przeciwieństwie do X11 – dodatkowo za składanie plików . Przykładami są Weston , Mutter , KWin lub Enlightenment .
Kompozytorzy Wayland komunikują się z klientami Wayland za pośrednictwem protokołu serwera wyświetlania Wayland . Protokół ten określa, że klienci mogą bezpośrednio zapisywać dane do bufora ramki przy użyciu interfejsu API renderowania EGL . Serwer wyświetlania nadal decyduje, które okno jest na górze, a tym samym widoczne dla użytkownika, a także nadal jest odpowiedzialny za przekazywanie danych dotyczących urządzeń wejściowych z evdev do swoich klientów.
Wayland jest używany do pewnego stopnia w niektórych dystrybucjach Linuksa, takich jak Fedora . Jest również dobrze przystosowany do komputerów przenośnych i został przyjęty na przykład w projektach skoncentrowanych na smartfonach i tabletach Tizen , Sailfish OS i AsteroidOS .
Implementacja Waylanda jest dostępna na licencji MIT , w bibliotekach libwayland-client i libwayland-server.
Trwają prace nad dodaniem obsługi Wayland do ChromeOS .
Mir
Serwer wyświetlania Mir jest dostarczany z własnym protokołem serwera wyświetlania Mir, który różni się od tych używanych przez X11 i Wayland. Mir dodatkowo obsługuje protokół X11. Został opracowany przez Canonical i miał być preferowanym serwerem wyświetlania dla Ubuntu . Od 2017 roku został zastąpiony serwerem wyświetlania Wayland dla komputerowych wersji Ubuntu.
Istnieją implementacje serwera wyświetlania Mir, biblioteki libmir-server i libmir-client dostępne na licencji GPLv3 .
SurfaceFlinger
Firma Google opracowała serwer wyświetlania o nazwie SurfaceFlinger dla systemu Android (inny system operacyjny oparty na jądrze Linuksa, przeznaczony głównie dla urządzeń mobilnych):
Wszystko w Androidzie jest renderowane na „powierzchni”; „powierzchnie” są tworzone przez aplikacje i umieszczane w kolejce zarządzanej przez SurfaceFlinger.
Jeszcze innym rozwiązaniem specyficznym dla Androida jest „Gralloc”. Gralloc obsługuje pamięć urządzenia, tj. zajmuje się alokacją, arbitrażem, obsługuje synchronizację za pomocą deskryptorów plików ogrodzenia systemu Android/Linux. Gralloc konkuruje z innymi rozwiązaniami, takimi jak np. Mesa Generic Buffer Management (GBM) czy Nvidia EGLStreams. Warstwa abstrakcji sprzętu Gralloc (HAL) jest używana do przydzielania buforów leżących u podstaw „powierzchni”.
W przypadku komponowania w systemie Android Surfaces są wysyłane do SurfaceFlinger, który używa OpenGL ES do komponowania.
Hardware Composer HAL (HWC) został wprowadzony w systemie Android 3.0 i stale ewoluował przez lata. Jego głównym celem jest określenie najbardziej efektywnego sposobu komponowania buforów przy pomocy dostępnego sprzętu. Jako HAL, jego implementacja jest specyficzna dla urządzenia i zwykle wykonywana przez producenta OEM sprzętu wyświetlającego.
Kompozytor kwarcowy
rodziny systemów operacyjnych macOS firmy Apple Quartz Compositor spełnia zadania serwera wyświetlania i menedżera okien w systemie okienkowym.
Menedżer okien pulpitu
W systemie Microsoft Windows , począwszy od systemu Windows Vista , Menedżer okien pulpitu umożliwia korzystanie z akceleracji sprzętowej w celu renderowania graficznego interfejsu użytkownika. Pierwotnie został stworzony, aby umożliwić części nowego interfejsu użytkownika „Windows Aero”, który pozwolił na takie efekty, jak przezroczystość, przełączanie okien 3D i inne. Jest również dołączony do systemu Windows Server 2008, ale wymaga zainstalowania funkcji „Desktop Experience” i zgodnych sterowników graficznych. Począwszy od systemu Windows 8, DWM nie może zostać wyłączone i jest renderowane programowo jeśli nie jest zainstalowana odpowiednia karta graficzna.
Lista systemów okienkowych
Dla systemów operacyjnych typu Unix
- 8½ i Rio dla planu 9
- System okienkowy FramebufferUI w jądrze
- HP Windows/9000 (we wczesnych wersjach HP-UX )
- Szafir dla PERQ
- KIEROWNIK (MGR)
- Metisse
- Mir
- NeWS / OpenWindows
- NeXT DPS
- Orbitalny ( redoks )
- Qt rozszerzony
- Quartz Compositor ( Mac OS X )
- Widok słońca
- Bliźniacze (okna tekstowe)
- System okienny W
- Waylanda
- System okien X
- XSzybko
- Xynth
Dla systemów operacyjnych z rodziny Windows NT
- Menedżer okien pulpitu (DWM) w systemie Microsoft Windows ( Vista i nowsze)
- Eksplorator ReactOS
- Klasyczna skorupa
- Pokki
- RetroUI
- Pulpit Talismana
Sieciowe systemy okienkowe
Inny
Niektóre systemy, takie jak Microsoft Windows ( XP , 9x i wcześniejsze), klasyczny Mac OS (wersja 9 i wcześniejsze) oraz Palm OS zawierają zintegrowany z systemem operacyjnym system okienkowy. [ potrzebne źródło ]
Zobacz też
- Lista serwerów wyświetlania
- Historia graficznego interfejsu użytkownika
- Zestaw narzędzi widżetów
- Środowisko pulpitu