پروژه گنوم اولین نسخه پایدار کتابخانه Libadwaita را منتشر کرده است که شامل مجموعه ای از مؤلفه ها برای استایل رابط کاربری است که از GNOME HIG (دستورالعمل های رابط انسانی) پیروی می کند. این کتابخانه شامل ویجتها و اشیاء آماده برای ساخت برنامههایی است که با سبک کلی GNOME مطابقت دارند، که رابط آن را میتوان به صورت تطبیقی با صفحههایی با هر اندازه تنظیم کرد. کد کتابخانه به زبان C نوشته شده است و تحت مجوز LGPL 2.1+ توزیع شده است.
کتابخانه libadwaita همراه با GTK4 استفاده میشود و شامل مؤلفههایی از موضوع Adwaita است که در GNOME استفاده میشود، که به خارج از GTK به یک کتابخانه جداگانه منتقل شدهاند. کد libadwaita بر اساس کتابخانه libhandy است و به عنوان جانشین این کتابخانه قرار می گیرد که در ابتدا برای ساخت یک رابط تطبیقی در پلتفرم های تلفن همراه بر اساس فناوری های GNOME ایجاد شد و در محیط Phosh GNOME برای گوشی هوشمند Librem 5 بهینه شد.
این کتابخانه شامل ویجتهای استانداردی است که عناصر رابط مختلف را پوشش میدهد، مانند لیستها، پانلها، بلوکهای ویرایش، دکمهها، برگهها، فرمهای جستجو، کادرهای گفتگو و غیره. ویجتهای پیشنهادی به شما امکان میدهند رابطهای جهانی ایجاد کنید که هم بر روی صفحهنمایشهای بزرگ رایانههای شخصی و لپتاپها و هم در صفحههای لمسی کوچک تلفنهای هوشمند بهطور یکپارچه عمل کنند. رابط برنامه به صورت پویا بسته به اندازه صفحه نمایش و دستگاه های ورودی موجود تغییر می کند. این کتابخانه همچنین شامل مجموعهای از سبکهای Adwaita است که بدون نیاز به تطبیق دستی، ظاهر را با دستورالعملهای GNOME مطابقت میدهد.
انتقال عناصر استایل گنوم به یک کتابخانه مجزا باعث می شود تا تغییرات خاص گنوم جدا از GTK ایجاد شوند، و به توسعه دهندگان GTK اجازه می دهد تا بر روی موارد اصلی تمرکز کنند و توسعه دهندگان گنوم سریعتر و انعطاف پذیرتر تغییرات استایل مورد نظر خود را بدون تأثیرگذاری بر خود GTK به پیش ببرند. با این حال، این رویکرد مشکلاتی را برای توسعه دهندگان محیط های کاربری مبتنی بر GTK شخص ثالث ایجاد می کند، که مجبور هستند یا از libadwaita استفاده کنند و با ویژگی های گنوم سازگار شوند و طراحی آن را تکرار کنند، یا نسخه خود را از کتابخانه سبک GTK توسعه دهند و بپذیرند ظاهر برنامه های گنوم ناهمگن در محیط های مبتنی بر کتابخانه های سبک شخص ثالث.
شکایت اصلی توسعه دهندگان فریمورک شخص ثالث مربوط به مشکلات مربوط به نادیده گرفتن رنگ عناصر رابط است، اما توسعه دهندگان libadwaita در حال کار بر روی ارائه یک API برای مدیریت رنگ انعطاف پذیر هستند که در نسخه بعدی گنجانده خواهد شد. در میان مشکلات حل نشده، عملکرد صحیح ویجت های کنترل ژست فقط در صفحه های لمسی نیز ذکر شده است - برای تاچ پدها، عملکرد صحیح چنین ویجت هایی بعداً تضمین می شود، زیرا آنها نیاز به تغییر در GTK دارند.
تغییرات عمده در libadwaita در مقایسه با libhandy:
- مجموعه ای کاملاً بازطراحی شده از سبک ها. تم Adwaita مورد استفاده در GNOME از GTK حذف و مدرن شده است و تم قدیمی در GTK با نام "پیش فرض" ثابت شده است. یکی از قابل توجه ترین تفاوت های بین libadwaita و تم "پیش فرض" تغییر در طراحی هدرهای پنجره است.
- مکانیسمهای اتصال رنگها به عناصر و تغییر رنگها در حین اجرای برنامه تغییر کرده است (مشکلات به این دلیل است که libadwaita به SCSS تغییر میکند، که برای تغییر رنگها نیاز به بازسازی دارد). برای تغییر رنگ عناصر، که به عنوان مثال در GNOME Web برای علامت گذاری انتقال به حالت ناشناس مورد نیاز است، از روش پیشنهادی در سیستم عامل ابتدایی استفاده می شود و بر اساس تعیین لیست ثابتی از رنگ های نامگذاری شده از طریق «@define-color» است. با این حال، رنگهای بسیاری از عناصر رابط اکنون نسبت به رنگ متن اصلی محاسبه میشوند و به طور خودکار تغییر میکنند، که به برنامهها اجازه نمیدهد تا طرح رنگ را به طور کامل کنترل کنند (توسعهدهندگان در تلاش هستند تا این محدودیت را حذف کنند).
- کیفیت نمایش در هنگام استفاده از تم های تیره به دلیل برجسته سازی متضاد بیشتر عناصر افزایش یافته است. رنگ برجسته روشن تر شده است و رنگ برجسته دیگری اضافه شده است که می تواند برای تم های تیره و روشن تغییر کند.
- بخش بزرگی از کلاس های سبک جدید را برای استفاده در برنامه ها اضافه کرد. به عنوان مثال، ".pill" برای دکمه های گرد بزرگ، امکان استفاده از ".flat" در GtkHeaderBar، ".accent" برای تنظیم رنگ تاکیدی در برچسب ها، ".numeric" برای تایپوگرافی جدول، ".card" برای استفاده از پس زمینه و مانند لیست ها سایه بزنید.
- فایل های SCSS یکپارچه بزرگ به مجموعه ای از فایل های سبک کوچکتر تقسیم می شوند.
- API برای تنظیم سبک طراحی تاریک و حالت کنتراست بالا اضافه شده است.
- مستندات دوباره کار شده است؛ اکنون از جعبه ابزار gi-docgen برای تولید آن استفاده می شود.
- یک API انیمیشن اضافه شده است که می توان از آن برای ایجاد جلوه های انتقالی هنگام جایگزینی یک حالت با حالت دیگر و همچنین ایجاد انیمیشن بهار استفاده کرد.
- برای برگه های مبتنی بر AdwViewSwitcher، امکان نمایش برچسب هایی با تعداد اعلان های مشاهده نشده اضافه شده است.
- کلاس AdwApplication (زیر کلاس GtkApplication) برای مقداردهی اولیه خودکار Libadwaita و بارگذاری سبک ها اضافه شد.
- مجموعهای از ویجتها برای سادهسازی عملیات استاندارد اضافه شدهاند: AdwWindowTitle برای تنظیم عنوان پنجره، AdwBin برای سادهسازی ایجاد زیرکلاسهای فرزند، AdwSplitButton برای دکمههای ترکیبی، AdwButtonContent برای دکمههای دارای نماد و برچسب.
- API پاک شد.
منبع: opennet.ru