System okienkowy

Typowe elementy okna . Dekoracja okna jest rysowana przez zarządcę okien lub przez klienta. Rysowanie zawartości jest zadaniem klienta.

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

Podstawowe komponenty GUI : Serwer wyświetlania implementuje system okienkowy. Prosty menedżer okien tylko rysuje dekoracje okien , ale złożone menedżery okien robią więcej.

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

Serwer X.Org komunikuje się ze swoimi klientami, np. Amarokiem , poprzez protokół X11
X Window System logo

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

Protokół serwera wyświetlania Wayland
Wayland logo

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

Dla systemów operacyjnych z rodziny Windows NT

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ż