๊ฐ์ ๐
์ง์ ์ ์ผ๋ก ์ฐ๊ด๋ ์
๋ฌด๋ ์๋์ง๋ง ํ ๋ด์์ wayland
, weston
์ด๋ผ๋
์ฉ์ด๊ฐ ์์ฃผ ๋ค๋ฆฐ๋ค. ์ด๋ ธ์ ์ ์ ๋ฆฌ๋
์ค ๋ฐ์คํฌํ ํ๊ฒฝ์ ๊ด์ฌ์ด ๋ง์
X11
๊ธฐ๋ฐ์ผ๋ก ์ต์ํ์ ์์
ํ๊ฒฝ์ ๋ง์ถ๊ณ gnome
์ด๋ kde
, xfce
๊ฐ
์๋ fluxbox
, blackbox
, i3
, xmonad
, enlightenment
๋ฑ์
์ด์ฉํด์ ์ด๋ฐ์ ๋ฐ ์๋๋ฅผ ํด๋ณด์๋ ๊ธฐ์ต์ด ๋๋ค. ๋น์์๋ ๊ทธ์ ์ค์นํด์
์ฌ์ฉํ๊ธฐ์๋ง ๊ธ๊ธํ์ง ์ค์ ๋ก ์
๋ฌด์์ ๊ทธ๋ฌํ ๊ฒ๋ค์ด ์ฌ์ฉ๋ ์ค์ ๊ฟ์๋
๋ชฐ๋๋ค.
์ด๋ฒ ํฌ์คํ
์์๋ ์ฌ๋ด ์ํค์ ๋ด์ฉ์ ์ถ์ฒ๋ก ํ์ฌ, wayland
,
weston
์ ๋ํ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๊ณ ํด๋ผ์ด์ธํธ ์์ ๋ฅผ ๊ธฐ์ ํ๊ณ ์ ํ๋ค.
Wayland ๐
wayland
๋ display server protocol์ด๋ค. ์๋์ฐ์ฆ์ ๋ฌ๋ฆฌ ๋ฆฌ๋
์ค๋ GUI
ํ๊ฒฝ์ ๋ํด์๋ server - clients ๊ฐ๋
์ผ๋ก ์ฒ์ ๊ตฌํ๋์๊ณ X11 ๋ผ๋
์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋์๋ค. ๊ทธ๋ฌ๋ ๋ณต์กํ ํ๋กํ ์ฝ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ก ์ธํด
๋ถํ์ํ ํธ์ถ์ด ๋ง์๊ณ ์ด๋ฅผ ๊ฒฝ๋ํํ๊ธฐ ์ํ ๋
ธ๋ ฅ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ก
wayland
์ด๋ค.
X11
์์ wayland
๋ก์ ๋ณํ๋ ์๋์ ๊ฐ๋ค.
-
X11
์ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ก์ ๋์ํ์ง๋งwayland
๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ๊ตฌํ๋์ด ์ค๋ฒํค๋๊ฐ ๊ฐ์ -
X11
์ server, compositor๋ก ๊ตฌ๋ถ๋์ด ์์ง๋งwayland
๋ server์ compositor๊ฐ ํตํฉ๋์ด ๋ ์ปดํฌ๋ํธ ๊ฐ์ ๋ถํ์ํ ํต์ ์ด ๊ฐ์ -
X11
์์ ๋ ๋๋ง์ ์๋ฒ๊ฐ ๋ด๋นํ์์ง๋ง,Wayland
๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ ๋๋ง์ ๋ด๋นํ์ฌ ์๋ฒ์์ ๋ณต์ก๋๊ฐ ๊ฐ์ -
X11
์ ์๋ฒ๊ฐclient
,compositor
,kernel
๊ฐ์ ๋ชจ๋ ๋์์ ์ค๊ฐํ์์ง๋ง,Wayland
๋server
๊ฐclient
,kernel
๋ง ์ค๊ฐํ์ฌ ๋ณต์ก๋๊ฐ ๊ฐ์ํจ
Android์์ Wayland๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๐
Android Graphic์์๋ SurfaceFlinger
, Gralloc
์๋ฃจ์
์
์ฌ์ฉํ๋ค. ๊ฐ๊ฐ์ ๋ํ ๋ด์ฉ์ ์๋๋ฅผ ์ดํด๋ณด์.
SurfaceFlinger ๐
SurfaceFlinger
๋ ์ฌ์ฉ์ ํ๋ก์ธ์ค๋ ์ฑ์์ ์์ฑํ ํ๋ฉด์ ๊ด๋ฆฌํ๊ณ
ํ๋ฉด์ ์์น๋ ํ์ ์์, ์์ ๋ฑ์ ๊ด๋ฆฌํ๋ค. ๋ํ, ์ปค๋์ ์์นํ
ํ๋ ์ ๋ฒํผ ๋๋ผ์ด๋ฒ์ ์ฐ๋ํ์ฌ ์์ฑ๋ ์ต์ข
์ด๋ฏธ์ง๋ฅผ ํ๋ ์ ๋ฒํผ
๋๋ผ์ด๋ฒ๋ฅผ ํตํด ํ๋ฉด์ ์ถ๋ ฅํ ์ ์๋๋ก ํ๋ ์ ๋ฒํผ์ ์ฐ๋ํ๋ ์ญํ ์
ํ๋ค.
Gralloc ๐
Android์์ ๊ทธ๋ํฝ ๋ฒํผ์ ํ ๋น๊ณผ ํด์ ๋ฅผ ๋ด๋นํ๋ค.
์๋์ฐ์ฆ์ ๋งฅ์์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๐
์๋์ฐ์ฆ๋ DWM (Desktop Window Manager)๋ฅผ, ๋งฅ์ Quartz Compositor๋ฅผ ์ฌ์ฉํ๋ค.
Server/Client Model ๐
Wayland
๋ ์ฌ๋ฌ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์๊ณ ๊ฐ๊ฐ์
์ธํฐํ์ด์ค๋ request
์ event
๋ก ๊ตฌ์ฑ๋๋ค.
- kernel์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ผ๋ฉด wayland compositor๋ก ์ ๋ฌํ๋ค. kernel์ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- compositor๋ ์ฌ๋ฌ ํด๋ผ์ด์ธํธ ์ค์์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์์ ํ client๋ฅผ ๊ฒฐ์ ํ๋ค.
- client๊ฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ฉด ๋ ๋๋ง์ด ๋ฐ์ํ๋ค. client๋ ์ ๋ฐ์ดํธ ๋ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด compositor์ ์์ฒญ์ ๋ณด๋ธ๋ค.
- compositor๋ client๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ํ์ ํ๋ฉด์ ์ฌ๊ตฌ์ฑํ๋ค. ๊ทธ ๋ค, ioctl์ ํตํด KMS์๊ฒ ์ฌ๊ตฌ์ฑ ๋ ํ๋ฉด์ ์ ์กํ๋ค.
๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ ๐
์ถ์ฒ์์๋ ๋ชจ๋์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ์ ์ ํ ๊ฒ์ด๋ผ ์๊ฐํ์ฌ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ธฐ์ ํ๊ฒ ๋ค. ์ด์ ์ ๋ณด์ง ๋ชปํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค(clutter, SDL)์ด ์์ด ํจ๊ป ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
QT5 ๐
์ด์ ์๋ qt4, qt5์ ํธํ์ฑ์ผ๋ก ์์ฒญ๋๊ฒ ์์ ๋จน์์๋๋ฐ ์ต๊ทผ์๋ ํด๊ฒฐ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ๋ฆฌ๋ ์ค, ์๋๋ก์ด๋, ์๋์ฐ์ฆ ๋ฑ์ ์ด์์ฒด์ ๋ฅผ ์ง์ํ๋ฉฐ, qt์ ๋ํ์ ์ธ ๋ชจ๋์ ์๋์ ๊ฐ๋ค.
- QtCore: ์ปจํ ์ด๋ ๊ด๋ฆฌ, ์ค๋ ๋ ๊ด๋ฆฌ, ์ด๋ฒคํธ ๊ด๋ฆฌ ๋ฑ์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- QtGui & QtWidgets: ๋ฐ์คํฌํ์ฉ GUI ํดํท์ผ๋ก์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ๊ทธ๋ํฝ ๊ตฌ์ฑ ์์ ์ ๊ณต
- QtMultimedia: ๋น๋์ค, ์นด๋ฉ๋ผ, ์ค๋์ค ๊ธฐ๋ฅ์ ๊ฐ์ง ํด๋์ค ์ ๊ณต
- QtNetwork: ๋คํธ์ํฌ ํต์ ์ ์ํ ํด๋์ค ์ ๊ณต
- QtSQL: ODBC, SQLite, MySQL ์ฌ์ฉ๊ฐ๋ฅํ๋๋ก ์ง์
- QtWayland: Wayland ๊ธฐ๋ฅ ์ฌ์ฉํ ์ ์๋๋ก API ์ ๊ณต
GTK+ ๐
GTK+ (GIMP Toolkit+)๋ GUI๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ค์ ์ฌ์ฉํด๋ณด๋ฉด ์๊ฒ ์ง๋ง, ์ ๊ณต๋๋ ํ๋ ์์ํฌ API๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ฝ๋๊ฐ ๋๋ฝ๋ค. GTK์ ๋ํด์๋ ๋ณ๋๋ก ์ธ๊ธํ์ง ์๊ฒ ๋ค.
Clutter ๐
์ธํ ์ ํฉ๋ณ๋ OpenedHand์์ C์ธ์ด๋ก ๊ตฌํํ 2D ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ์ฒด Actor์ ์ด๋ฅผ ๊ทธ๋ฆฌ๋ Canvas๋ผ๋ ์ถ์ํ๋ ๊ฐ๋ ์ด ์๋ค. OpenGL ES๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์คํฌํ ๋ฟ๋ง ์๋๋ผ ๋ค์ํ ํ๋ซํผ์ ์ ์ฉํ ์ ์๋ค.
SDL (Simple DirectMedia Layer) ๐
์ค๋์ค, ํค๋ณด๋, ๋ง์ฐ์ค, ์กฐ์ด์คํฑ ๋ฑ ํ๋์จ์ด๊ฐ OpenGL ๋ฐ Direct3D์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋ ํฌ๋ก์ค ํ๋ซํผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. SDL์ ์๋์ฐ์ฆ์ฉ ๊ฒ์์ ๋ฆฌ๋ ์ค๋ก ์ฝ๊ฒ ํฌํ ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ฐ๋ฐ๋์๊ณ ํ์ฌ๋ ๋ฉํฐ ํ๋ซํผ ์์์ ๊ฒ์ ๊ฐ๋ฐ ๋ฐ ํฌํ ๋ชฉ์ ์ผ๋ก ๋๋ฆฌ ์ด์ฉ๋๊ณ ์๋ค.
EFL ๐
Enlightenment Foundation Library๋ก Enlightenment์ ์ฝ์ด ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
Weston ๐
weston์ wayland compositor์ ์ฐธ์กฐ ๊ตฌํ(ํ๋์จ์ด ๋๋ ์ํํธ์จ์ด ๊ตฌํ์ ๋๊ธฐ ์ํด ์ ๊ณตํ๋ ์ํ ํ๋ก๊ทธ๋จ)์ด๋ค. Desktop, ์๋์ฐจ, ํค์ค์คํฌ, ์ ํฑ๋ฐ์ค ๋ฑ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ Wayland API์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐฝ๊ด๋ฆฌ์ composite ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์๋ค.
๊ธฐ๋ณธ ์ญํ ๐
Weston์ ๊ธฐ๋ณธ ์ญํ ์ ์๋์ ๊ฐ๋ค.
- ์๋์ฐ๋ค์ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถํ์ฌ ๊ด๋ฆฌํ๋ค.
- shell(์๋์ฐ ๊ด๋ฆฌ ๊ท์น)์ ์ด์ฉํด ์ถ๋ ฅ๋๋ ์๋์ฐ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์๋์ฐ๋ฅผ ํ๋ฉด์ ๋ํ๋๊ฒ ํ๊ฑฐ๋ ์์น๋ฅผ ์ฎ๊ธฐ๊ณ ํ๋ฉด ํฌ๊ธฐ ๋ณ๊ฒฝ์ ๊ด๋ฆฌํ๋ค.
์ถ์ฒ ๐
- Telechips, Graphic Framework