11๊ฐ์๊ฐ์ ๊ฐ๋ฐ ๋์ Wayland ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ i3 ํ์ผ๋ง ์๋์ฐ ๊ด๋ฆฌ์ ๋ฐ i3bar์ ์๋ฒฝํ๊ฒ ํธํ๋๋ ํฉ์ฑ ๊ด๋ฆฌ์ Sway 1.8์ด ์ถ์๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ์ ์ฝ๋๋ C ์ธ์ด๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋ค์์ ๋ชฉํ๋ก ํฉ๋๋ค. Linux ๊ทธ๋ฆฌ๊ณ FreeBSD.
i3 ํธํ์ฑ์ ๋ช ๋ น, ๊ตฌ์ฑ ํ์ผ ๋ฐ IPC ์์ค์์ ์ ๊ณต๋๋ฏ๋ก Sway๋ฅผ X3 ๋์ Wayland๋ฅผ ์ฌ์ฉํ๋ ํฌ๋ช ํ i11 ๋์ฒดํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Sway๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฐ์ ์ผ๋ก๊ฐ ์๋๋ผ ๋ ผ๋ฆฌ์ ์ผ๋ก ํ๋ฉด์ ์ฐฝ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์ฐฝ์ ํ๋ฉด ๊ณต๊ฐ์ ์ต์ ์ผ๋ก ํ์ฉํ๊ณ ํค๋ณด๋๋ง ์ฌ์ฉํ์ฌ ์ฐฝ์ ๋น ๋ฅด๊ฒ ์กฐ์ํ ์ ์๋๋ก ๊ฒฉ์ ๋ชจ์์ผ๋ก ๋ฐฐ์ด๋ฉ๋๋ค.
์์ ํ ์ฌ์ฉ์ ํ๊ฒฝ์ ๋ง๋ค๊ธฐ ์ํด swayidle(KDE ์ ํด ํ๋กํ ์ฝ์ ๊ตฌํํ๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค), swaylock(ํ๋ฉด ๋ณดํธ๊ธฐ), mako(์๋ฆผ ๊ด๋ฆฌ์), grim(์คํฌ๋ฆฐ์ท ๋ง๋ค๊ธฐ), slurp(์์ญ ์ ํ)๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๊ฐ ์ ๊ณต๋ฉ๋๋ค. wf-recorder(๋น๋์ค ์บก์ฒ), waybar(์์ฉ ํ๋ก๊ทธ๋จ ํ์์ค), virtboard(ํ๋ฉด ํค๋ณด๋), wl-clipboard(ํด๋ฆฝ๋ณด๋ ์์ ), wallutils(๋ฐ์คํฌํฑ ๋ฐฐ๊ฒฝ ํ๋ฉด ๊ด๋ฆฌ).
Sway๋ ๋ณตํฉ ๊ด๋ฆฌ์ ์์ ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ชจ๋ ๊ธฐ๋ณธ ๊ธฐ๋ณธ ์์๊ฐ ํฌํจ๋ wlroots ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๋ชจ๋์ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. Wlroots์๋ ํ๋ฉด, ์ ๋ ฅ ์ฅ์น, OpenGL์ ์ง์ ์ก์ธ์คํ์ง ์๊ณ ๋ ๋๋ง, KMS/DRM, libinput, Wayland ๋ฐ X11๊ณผ์ ์ํธ ์์ฉ(Xwayland ๊ธฐ๋ฐ X11 ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ๋ ์ด์ด๊ฐ ์ ๊ณต๋จ)์ ๋ํ ์ถ์ ์ก์ธ์ค๋ฅผ ์ํ ๋ฐฑ์๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. Sway ์ธ์๋ wlroots ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Librem5 ๋ฐ Cage๋ฅผ ํฌํจํ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. C/C++ ์ธ์๋ Scheme, Common Lisp, Go, Haskell, OCaml, Python ๋ฐ Rust์ฉ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฐ๋์์ต๋๋ค.

์ ๋ฆด๋ฆฌ์ค์์:
- ํฐ์นํจ๋ ์ ์ค์ฒ์ ๋์์ ์ฒจ๋ถํ๊ธฐ ์ํด ์๋ก์ด "bindgesture" ๋ช ๋ น์ ๊ตฌํํ์ต๋๋ค.
- ํ๋ฉด ์ ๊ธ ํ๋ก์ธ์ค(swaylock)๊ฐ Wayland ํ๋กํ ์ฝ ext-session-lock-v1์ ์ฌ์ฉํ๋๋ก ์ ํ๋์ด ์ธ์ ์ ๊ธ์ ์์ ์ฑ๊ณผ ๋ณด์์ด ๊ฐํ๋์์ต๋๋ค.
- ๊ฐ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์๋ก์ด ๋ช ๋ น "์ถ๋ ฅ ๋ถ๋ฆฌ"๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๊ณ ํด์๋ ๋ง์ฐ์ค ํ ์คํฌ๋กค ์ด๋ฒคํธ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํธ๋ํฌ์ธํธ ์คํฑ(ThinkPad ๋ ธํธ๋ถ์ TrackPoint)์ ์ฌ์ฉํ๋ ๋์ ํธ๋ํจ๋๋ฅผ ๋นํ์ฑํํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ดํ๊ธฐ ์ํด libinput ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ "ํธ๋ํฌ์ธํ ์ค ๋นํ์ฑํ" ์ค์ ์ ๋ํ ์ง์์ ์ ๊ณตํ์ต๋๋ค.
- ์๋ก์ด ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ ๋ ์์ ๊ณต๊ฐ ๊ฐ์ง์ ์์ ์ฑ์ ๋์ด๊ธฐ ์ํด xdg-activation-v1 ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- wlroots ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Vulkan ๊ทธ๋ํฝ API๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง ์์คํ ๊ตฌํ์ ๊ฐ์ ํ์ต๋๋ค.
- ํ๋ซํผ์์ ์์ ์ผ์ ์ ์์ฝํ๋ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ๊ธฐ ์ํด Linux CAP_SYS_NICE ๊ถํ์ ์ค์ ํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ต๋๋ค.
- SUID ๋ฃจํธ ํ๋๊ทธ ์์ ์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค.
- "output dpms" ๋ช ๋ น์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ์ด์ "output power" ๋ช ๋ น์ผ๋ก ๋์ฒด๋์์ต๋๋ค.
- ์ ๊ท ํํ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ด์ pcre ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ pcre2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru
