๊ทธ๋ ํ๋ก์ ํธ๋ ๊ทธ๋ HIG(Human Interface Guidelines) ๊ถ์ฅ ์ฌํญ์ ์ค์ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์คํ์ผ์ ์ง์ ํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์ ์งํฉ์ด ํฌํจ๋ Libadwaita 1.2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐํํ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ผ๋ฐ GNOME ์คํ์ผ์ ์ค์ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ธฐ์ฑํ ์์ ฏ๊ณผ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ธํฐํ์ด์ค๋ ๋ชจ๋ ํฌ๊ธฐ์ ํ๋ฉด์ ๋ฐ์์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ C ์ธ์ด๋ก ์์ฑ๋์์ผ๋ฉฐ LGPL 2.1+ ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
libadwaita ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ GTK4์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ GTK์์ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋๋ GNOME์์ ์ฌ์ฉ๋๋ Adwaita ์คํจ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค. GNOME ๋น์ฃผ์ผ์ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด๋ํ๋ฉด GNOME์ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ GTK์ ๋ณ๋๋ก ๊ฐ๋ฐํ ์ ์์ผ๋ฏ๋ก GTK ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ ์ฌํญ์ ์ง์คํ ์ ์๊ณ GNOME ๊ฐ๋ฐ์๋ GTK ์์ฒด์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์คํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณด๋ค ๋น ๋ฅด๊ณ ์ ์ฐํ๊ฒ ์ถ์งํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ชฉ๋ก, ํจ๋, ํธ์ง ๋ธ๋ก, ๋ฒํผ, ํญ, ๊ฒ์ ์์, ๋ํ ์์ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์ธํฐํ์ด์ค ์์๋ฅผ ํฌํจํ๋ ํ์ค ์์ ฏ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ ์๋ ์์ ฏ์ ์ฌ์ฉํ๋ฉด PC ๋ฐ ๋ฉํฑ์ ๋ํ ํ๋ฉด๊ณผ ์ค๋งํธํฐ์ ์์ ํฐ์น ์คํฌ๋ฆฐ ๋ชจ๋์์ ์ํํ๊ฒ ์๋ํ๋ ๋ฒ์ฉ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค๋ ํ๋ฉด ํฌ๊ธฐ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋ ฅ ์ฅ์น์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์๋ ์ฌ์ฉ์ ์ ์ ์์ด ๊ทธ๋ ์ง์นจ์ ๋ชจ์๊ณผ ๋๋์ ๊ฐ์ ธ์ค๋ Adwaita ์คํ์ผ ์ธํธ๋ ํฌํจ๋์ด ์์ต๋๋ค.
libadwaita 1.2์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ:
- ๋ชฉ๋ก์ ์์๋ก ์ฌ์ฉํ๊ธฐ ์ํ Adw.EntryRow ์์ ฏ์ ์ถ๊ฐํ์ต๋๋ค. ์์ ฏ์ ์
๋ ฅ ํ๋ ์ ํ์ ์ถ๊ฐ ์์ ฏ์ ์ฒจ๋ถํ ์ ์๋ ์
๋ ฅ ํ๋ ๋ฐ ํค๋๋ฅผ ์ ๊ณตํฉ๋๋ค(์: ์
๋ ฅ ํ์ธ ๋ฒํผ ๋๋ ๋ฐ์ดํฐ๋ฅผ ํธ์งํ ์ ์์์ ๋ํ๋ด๋ ํ์๊ธฐ). ๋ํ ์ํธ๋ฅผ ์
๋ ฅํ๋๋ก ์ค๊ณ๋ Adw.PasswordEntryRow ๋ณํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฉ์์ง ๋๋ ์ง๋ฌธ์ด ์๋ ๋ํ ์์๋ฅผ ํ์ํ๋ ์์ ฏ Adw.MessageDialog๋ฅผ ์ถ๊ฐํ์ต๋๋ค. Widget์ ์์์ ๋ ์ด์์์ ์ฐฝ ํฌ๊ธฐ๋ก ์กฐ์ ํ ์ ์๋ Gtk.MessageDialog์ ํ์ฅ๋ ๋์ฒดํ์
๋๋ค. ์๋ฅผ ๋ค์ด ๋์ ์ฐฝ์์๋ ๋ฒํผ์ ํ ์ค๋ก ํ์ํ ์ ์๊ณ ์ข์ ์ฐฝ์์๋ ๋ฒํผ์ ์ฌ๋ฌ ์ด๋ก ๋๋ ์ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์ฐจ์ด์ ์ ์์ ฏ์ด GtkDialog ํด๋์ค์ ์์์ด ์๋๋ฉฐ ๋ฏธ๋ฆฌ ์ ์๋ GtkResponseType ๋ฒํผ ์ ํ(Adw.MessageDialog์์ ๋ชจ๋ ์์
์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์ฒ๋ฆฌ๋จ)์ ์ฐ๊ฒฐ๋์ง ์์ ์์ ํ ์๋ก์ด API๋ฅผ ์ ๊ณตํ์ฌ ํฌํจํ๊ธฐ๊ฐ ๋ ์ฝ๋ค๋ ๊ฒ์
๋๋ค. extra-child ์์ฑ์ ์ฌ์ฉํ๊ณ ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ ํ
์คํธ์ ๋ณ๋์ ์คํ์ผ์ ์ ๊ณตํ๋ ๋ค๋ฅธ ์์ ฏ.
- ํ๋ก๊ทธ๋จ์ ๋ํ ์ ๋ณด๊ฐ ์๋ ์ฐฝ์ ํ์ํ๋ ์์ ฏ Adw.AboutWindow๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด ์์ ฏ์ Gtk.AboutDialog๋ฅผ ๋์ฒดํ๊ณ ๋ณ๊ฒฝ ๋ก๊ทธ, ๊ฐ์ฌ ์ฐฝ, ํ์ฌ ๋ผ์ด์ผ์ค ์ ๋ณด, ์ ๋ณด ๋ฆฌ์์ค์ ๋ํ ๋งํฌ ๋ฐ ๋๋ฒ๊น
๋ฐ์ดํฐ์ ๊ฐ์ ๋ฐ์ํ ๋ ์ด์์ ๋ฐ ํ์ฅ๋ ๋์ฐ๋ฏธ ์น์
์ ์ ๊ณตํฉ๋๋ค.
- Adw.TabView ๋ฐ Adw.TabBar ์์ ฏ์ ๊ธฐ๋ฅ์ด ํ์ฅ๋์ด ํซํค ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ์ฌ์ค๊ณ๋์ด GTK4 ํธ๋ค๋ฌ(์: Ctrl+Tab)์ ๊ต์ฐจํ๋ ์กฐํฉ ์์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ ๋ฒ์ ์์๋ ํ์๊ธฐ ๋ฐ ํญ ๋ฒํผ์ ๋ํ ๋๊ตฌ ์ค๋ช ์ ์ค์ ํ๋ ์์ฑ๋ ์ ๊ณตํฉ๋๋ค.
- Adw.PropertyAnimationTarget ํด๋์ค๊ฐ ์ถ๊ฐ๋์ด ๊ฐ์ฒด ์์ฑ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํ๊ธฐ๊ฐ ๋ ์ฌ์์ก์ต๋๋ค.
- ํญ ํ์์ค(Adw.TabBar)์ ์คํ์ผ์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋์์ต๋๋ค. ํ์ฑ ํญ์ด ๋ ๋ช
ํํ๊ฒ ๊ฐ์กฐ ํ์๋๊ณ ์ด๋์ด ๋์์ธ ์ต์
์ ์์ ๋๋น๊ฐ ์ฆ๊ฐํ์ต๋๋ค.
- ์ธ๋ก ๊ตฌ๋ถ์ ์ ๋์ด๋ฅผ ์ค์ฌ ์ ๋ชฉ ํ์์ค๊ณผ ๊ฒ์ ํ์์ค์์ @headerbar_shade_color๋ก ์ค์ ๋ ์ด๋์ด ํ ๋๋ฆฌ๋ฅผ ์ํด ์ฐ๋งํ ๋ฐ์ ํ ๋๋ฆฌ๋ฅผ ์ ๊ฑฐํ๊ณ ํค๋ ํจ๋๊ณผ ์ผ์นํ๋ ๋ฐฐ๊ฒฝ ์คํ์ผ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ".large-title" ์คํ์ผ ํด๋์ค๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋์ ".title-1"์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- Adw.ActionRow ์์ ฏ์ ํจ๋ฉ์ ์ค์ฌ ํจ๋ ๋ฐ Adw.EntryRow ์์ ฏ์ ๋ ๊ฐ๊น๊ฒ ํ์ํฉ๋๋ค.
- Gtk.Actionbar ๋ฐ Adw.ViewSwitcherBar ์์ ฏ์ ์ ๋ชฉ ํ์์ค, ๊ฒ์ ํ์์ค, ํญ ํ์์ค๊ณผ ๋์ผํ ์คํ์ผ์ ์ฌ์ฉํฉ๋๋ค.
์ถ์ฒ : opennet.ru