GNOME ํ๋ก์ ํธ๋ GNOME HIG(ํด๋จผ ์ธํฐํ์ด์ค ์ง์นจ)๋ฅผ ๋ฐ๋ฅด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์คํ์ผ ๊ตฌ์ฑ ์์ ์ธํธ๋ฅผ ํฌํจํ๋ Libadwaita ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ์์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ถ์ํ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ผ๋ฐ์ ์ธ GNOME ์คํ์ผ์ ์ค์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ์์ ฏ๊ณผ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๊ทธ ์ธํฐํ์ด์ค๋ ๋ชจ๋ ํฌ๊ธฐ์ ํ๋ฉด์ ๋ง๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ LGPL 2.1+ ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
libadwaita ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ GTK4์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ GTK์์ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋๋ GNOME์์ ์ฌ์ฉ๋๋ Adwaita ํ ๋ง ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค. libadwaita ์ฝ๋๋ libhandy ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ์๋ GNOME ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ชจ๋ฐ์ผ ํ๋ซํผ์์ ์ ์ํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด ์์ฑ๋์์ผ๋ฉฐ Librem 5 ์ค๋งํธํฐ์ฉ Phosh GNOME ํ๊ฒฝ์์ ์ฐ๋ง๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์ ๋ฒ์ ์ผ๋ก ์๋ฆฌ์ก๊ณ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ชฉ๋ก, ํจ๋, ํธ์ง ๋ธ๋ก, ๋ฒํผ, ํญ, ๊ฒ์ ์์, ๋ํ ์์ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์ธํฐํ์ด์ค ์์๋ฅผ ํฌํจํ๋ ํ์ค ์์ ฏ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ ์๋ ์์ ฏ์ ์ฌ์ฉํ๋ฉด PC ๋ฐ ๋ฉํฑ์ ๋ํ ํ๋ฉด๊ณผ ์ค๋งํธํฐ์ ์์ ํฐ์น ์คํฌ๋ฆฐ ๋ชจ๋์์ ์ํํ๊ฒ ์๋ํ๋ ๋ฒ์ฉ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค๋ ํ๋ฉด ํฌ๊ธฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋ ฅ ์ฅ์น์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์๋ ์ฌ์ฉ์ ์ ์ ์์ด ๊ทธ๋ ์ง์นจ์ ๋ชจ์๊ณผ ๋๋์ ๊ฐ์ ธ์ค๋ Adwaita ์คํ์ผ ์ธํธ๋ ํฌํจ๋์ด ์์ต๋๋ค.
GNOME ์คํ์ผ ์์๋ฅผ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ํ๋ฉด GNOME ๊ด๋ จ ๋ณ๊ฒฝ ์ฌํญ์ GTK์ ๋ณ๋๋ก ๊ฐ๋ฐํ ์ ์์ผ๋ฏ๋ก GTK ๊ฐ๋ฐ์๋ ํต์ฌ ์ฌํญ์ ์ง์คํ ์ ์๊ณ GNOME ๊ฐ๋ฐ์๋ GTK ์์ฒด์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ํ๋ ์คํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ๋น ๋ฅด๊ณ ์ ์ฐํ๊ฒ ์ถ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ libadwaita๋ฅผ ์ฌ์ฉํ๊ณ GNOME์ ๊ธฐ๋ฅ์ ์ ์ํ์ฌ ๊ทธ ๋์์ธ์ ๋ณต์ ํ๊ฑฐ๋ ์์ ๋ง์ GTK ์คํ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ ๊ฐ๋ฐํ๊ณ ํ์ฌ ์คํ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ ํ๊ฒฝ์์ ์ด๊ธฐ์ข ๊ทธ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ถํ.
ํ์ฌ ํ๋ ์์ํฌ ๊ฐ๋ฐ์์ ์ฃผ์ ๋ถ๋ง ์ฌํญ์ ์ธํฐํ์ด์ค ์์์ ์์ ์ฌ์ ์ ๋ฌธ์ ์ ๊ดํ ๊ฒ์ด์ง๋ง libadwaita ๊ฐ๋ฐ์๋ ํฅํ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ ์ ์ฐํ ์์ ๊ด๋ฆฌ๋ฅผ ์ํ API๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ํด๊ฒฐ๋์ง ์์ ๋ฌธ์ ์ค์๋ ํฐ์น ์คํฌ๋ฆฐ์์๋ง ์ ์ค์ฒ ์ ์ด ์์ ฏ์ ์ฌ๋ฐ๋ฅธ ์๋๋ ์ธ๊ธ๋ฉ๋๋ค. ํฐ์นํจ๋์ ๊ฒฝ์ฐ GTK ๋ณ๊ฒฝ์ด ํ์ํ๋ฏ๋ก ์ด๋ฌํ ์์ ฏ์ ์ฌ๋ฐ๋ฅธ ์๋์ด ๋์ค์ ๋ณด์ฅ๋ ๊ฒ์ ๋๋ค.
libhandy์ ๋น๊ตํ์ฌ libadwaita์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ ํ ์๋กญ๊ฒ ๋์์ธ๋ ์คํ์ผ ์ธํธ. GNOME์์ ์ฌ์ฉ๋๋ Adwaita ํ
๋ง๋ GTK์์ ์ ๊ฑฐ๋์ด ํ๋ํ๋์์ผ๋ฉฐ, ์ด์ ํ
๋ง๋ "Default"๋ผ๋ ์ด๋ฆ์ผ๋ก GTK์์ ์์ ๋์์ต๋๋ค. libadwaita์ "Default" ํ
๋ง ์ฌ์ด์ ๊ฐ์ฅ ๋์ ๋๋ ์ฐจ์ด์ ์ค ํ๋๋ ์ฐฝ ํค๋ ๋์์ธ์ ๋ณ๊ฒฝ์
๋๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์์์ ์์์ ๋ฐ์ธ๋ฉํ๊ณ ์์์ ๋ณ๊ฒฝํ๋ ๋ฉ์ปค๋์ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค(๋ฌธ์ ๋ libadwaita๊ฐ ์์์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์ ๋น๋ํด์ผ ํ๋ SCSS๋ก ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค). ์๋ฅผ ๋ค์ด GNOME ์น์์ ์ํฌ๋ฆฟ ๋ชจ๋๋ก์ ์ ํ์ ํ์ํ๋ ๋ฐ ํ์ํ ์์์ ์์์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ธฐ๋ณธ OS์์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋๋ฉฐ "@define-color"๋ฅผ ํตํด ๋ช
๋ช
๋ ์์์ ๊ณ ์ ๋ชฉ๋ก์ ์ง์ ํ๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ ์ธํฐํ์ด์ค ์์์ ์์์ ์ด์ ๊ธฐ๋ณธ ํ
์คํธ ์์์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ๋์ด ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ฏ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ ๊ตฌ์ฑํ๋ฅผ ์์ ํ ์ ์ดํ ์ ์์ต๋๋ค(๊ฐ๋ฐ์๋ ์ด ์ ํ์ ์์ ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค).
- ์์์ ๋๋น ๊ฐ์กฐ๊ฐ ๊ฐํ๋์ด ์ด๋์ด ํ
๋ง๋ฅผ ์ฌ์ฉํ ๋ ํ์ ํ์ง์ด ํฅ์๋์์ต๋๋ค. ์ก์ผํธ ์ปฌ๋ฌ๊ฐ ๋ ๋ฐ์์ก๊ณ , ๋ ๋ค๋ฅธ ํ์ด๋ผ์ดํธ ์ปฌ๋ฌ๊ฐ ์ถ๊ฐ๋์ด ์ด๋์ด ํ
๋ง์ ๋ฐ์ ํ
๋ง์ ๋ง๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํ ์๋ก์ด ์คํ์ผ ํด๋์ค์ ์๋น ๋ถ๋ถ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํฌ๊ณ ๋ฅ๊ทผ ๋ฒํผ์ ์ํ ".pill", GtkHeaderBar์์ ".plat"์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ, ๋ผ๋ฒจ์ ๊ฐ์กฐ ์์์ ์ค์ ํ๊ธฐ ์ํ ".accent", ํ
์ด๋ธ ํ์ดํฌ๊ทธ๋ํผ๋ฅผ ์ํ ".numeric", ๋ฐฐ๊ฒฝ ์ฌ์ฉ์ ์ํ ".card" ๋ชฉ๋ก๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ทธ๋ฆผ์๋ ์์ต๋๋ค.
- ๋๊ท๋ชจ ๋ชจ๋๋ฆฌ์ SCSS ํ์ผ์ ๋ ์์ ์คํ์ผ ํ์ผ ๋ชจ์์ผ๋ก ๋๋ฉ๋๋ค.
- ์ด๋์ด ๋์์ธ ์คํ์ผ ๋ฐ ๊ณ ๋๋น ๋ชจ๋ ์ค์ ์ ์ํ API๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ฌธ์๊ฐ ์ฌ์์
๋์์ผ๋ฉฐ ์ด์ gi-docgen ํดํท์ ์ฌ์ฉํ์ฌ ๋ฌธ์๋ฅผ ์์ฑํฉ๋๋ค.
- ํ ์ํ๋ฅผ ๋ค๋ฅธ ์ํ๋ก ๋ฐ๊ฟ ๋ ์ ํ ํจ๊ณผ๋ฅผ ์์ฑํ๊ณ ์คํ๋ง ์ ๋๋ฉ์ด์
์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ ๋๋ฉ์ด์
API๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- AdwViewSwitcher ๊ธฐ๋ฐ ํญ์ ๊ฒฝ์ฐ, ํ์ธํ์ง ์์ ์๋ฆผ ์์ ํจ๊ป ๋ผ๋ฒจ์ ํ์ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- Libadwaita๋ฅผ ์๋์ผ๋ก ์ด๊ธฐํํ๊ณ ์คํ์ผ์ ๋ก๋ํ๊ธฐ ์ํด AdwApplication ํด๋์ค(GtkApplication์ ํ์ ํด๋์ค)๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ํ์ค ์์ ์ ๋จ์ํํ๊ธฐ ์ํด ๋ค์ํ ์์ ฏ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ฐฝ ์ ๋ชฉ ์ค์ ์ ์ํ AdwWindowTitle, ํ์ ํ์ ํด๋์ค ์์ฑ์ ๋จ์ํํ๋ AdwBin, ๊ฒฐํฉ๋ ๋ฒํผ์ ์ํ AdwSplitButton, ์์ด์ฝ๊ณผ ๋ผ๋ฒจ์ด ์๋ ๋ฒํผ์ ์ํ AdwButtonContent.
- API๊ฐ ์ฒญ์๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru