๋ณตํฉ ๊ด๋ฆฌ์ Sway 1.7์ ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ผ๋ฉฐ Wayland ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋์์ผ๋ฉฐ i3 ๋ชจ์์ดํฌ ์ฐฝ ๊ด๋ฆฌ์ ๋ฐ i3bar ํจ๋๊ณผ ์๋ฒฝํ๊ฒ ํธํ๋ฉ๋๋ค. ํ๋ก์ ํธ ์ฝ๋๋ 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์ฉ ๋ฐ์ธ๋ฉ์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
์ ๋ฆด๋ฆฌ์ค์์:
- ๋ง์ฐ์ค๋ก ํญ์ ์ด๋ํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
- ๊ฐ์ ํ์ค ํค๋์ ์ ๋ํ ์ถ๋ ฅ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋์ ๋นํธ ๊น์ด ํฉ์ฑ ๋ชจ๋ ์ถ๋ ฅ์ ํ์ฑํํ๊ธฐ ์ํด "output render_bit_length" ๋ช ๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ ์ฒด ํ๋ฉด ์ฐฝ ์ถ๋ ฅ์ ์์ ์ฑ ๋ฐ ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค. (dmabuf๋ฅผ ์ฌ์ฉํ๋ฉด ์ถ๊ฐ ๋ฒํผ๋ง ์์ด ์ง์ ์ถ๋ ฅ์ด ์ ๊ณต๋ฉ๋๋ค.)
- xdg-activation-v1 ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋์ด ์๋ก ๋ค๋ฅธ ์ฒซ ๋ฒ์งธ ์์ค ํ๋ฉด ๊ฐ์ ํฌ์ปค์ค๋ฅผ ์ ์กํ ์ ์์ต๋๋ค(์๋ฅผ ๋ค์ด xdg-activation์ ์ฌ์ฉํ๋ฉด ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ํฌ์ปค์ค๋ฅผ ์ ํํ ์ ์์ต๋๋ค).
- ํ์ฑ ํญ์ ์์์ ์ค์ ํ๊ธฐ ์ํด client.focused_tab_title ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- ์์ ๋ง์ DRM(Direct Rendering Manager) ๋ชจ๋๋ฅผ ์ค์ ํ๊ธฐ ์ํด "output modeline" ๋ช ๋ น์ ์ถ๊ฐํ์ต๋๋ค.
- ์คํฌ๋ฆฝํธ์์ ํ๋ฉด์ ๋ ์ฝ๊ฒ ๋น์ธ ์ ์๋๋ก "์ถ๋ ฅ dpms ํ ๊ธ" ๋ช ๋ น์ ์ถ๊ฐํ์ต๋๋ค. "๊ฐ๊ฒฉ" ๋ช ๋ น๋ ์ถ๊ฐ๋์์ต๋๋ค. ๋น๋ ์ฅ ", "smart_gaps inverse_outer" ๋ฐ "๋ถํ ์์".
- "--my-next-gpu-wont-be-nvidia" ์ต์ ์ด ์ ๊ฑฐ๋์ด "--unsupported-gpu" ๋ชจ๋๋ก ๋์ฒด๋์์ต๋๋ค. ๋ ์ NVIDIA ๋๋ผ์ด๋ฒ๋ ์์ง ์ง์๋์ง ์์ต๋๋ค.
- ๊ธฐ๋ณธ ์ค์ ์ ์ ์๋ ํฐ๋ฏธ๋ ์๋ฎฌ๋ ์ดํฐ๊ฐ ๋ฐ๋ก ๋์ฒด๋์์ต๋๋ค.
- ๋น๋ ์ค์ swaybar ๋ฐ swaynag ๋ํ ์์๋ฅผ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์์ต๋๋ค.
- ์ ๋ชฉ ํ ์คํธ์ ๋ฌธ์์ ๋ฐ๋ผ ์ฐฝ ์ ๋ชฉ์ ๋์ด๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๊ธ์ง๋์์ต๋๋ค. ์ด์ ์ ๋ชฉ์ ํญ์ ๊ณ ์ ๋ ๋์ด๋ฅผ ๊ฐ์ต๋๋ค.
์ถ์ฒ : opennet.ru