منصوبے کے بارے میں

swift-adwaita GTK4 اور libadwaita کے لیے ایک imperative Swift 6 رپر لائبریری ہے، جو مقامی GNOME ڈیسک ٹاپ ایپلیکیشنز بنانے کے لیے ڈیزائن کی گئی ہے۔ یہ 178 ویجٹ ریپر فراہم کرتی ہے — 74 خودکار جنریٹ شدہ Adwaita ویجٹ اور 104 ہاتھ سے لکھے گئے GTK ویجٹ — نیز WebKitGTK 6.0 کے لیے ایک WebView ریپر (علیحدہ AdwaitaWebKit پروڈکٹ کے ذریعے اختیاری)۔ لائبریری تین سطحوں پر مشتمل فن تعمیر پر مبنی ہے: CAdwaita (سسٹم لائبریری بائنڈنگز)، GObjectSupport (ARC، سگنلز، Variant اور GValue کے ساتھ GObject لائف سائیکل کا انتظام)، اور Adwaita (ویجٹ ریپر)۔ تمام خام پوائنٹرز Swift قسموں کے پیچھے چھپے ہوئے ہیں، اور عوامی API خام strings کے بجائے SignalName، PropertyName، CSSClass اور IconName کے لیے ٹائپ سیف enums استعمال کرتی ہے۔ کلیدی خصوصیات میں ویجٹ کنفیگریشن کے لیے fluent میتھڈ چیننگ، @MainActor کلوزرز کے ساتھ ٹائپ سیف سگنل ہینڈلنگ، فائل ڈائیلاگز اور کلپ بورڈ آپریشنز کے لیے async/await سپورٹ، enum پر مبنی Key اور KeyModifiers کے ساتھ کی بورڈ شارٹ کٹس، GObjectRef.bind() کے ذریعے پراپرٹی بائنڈنگز، append/remove آپریشنز کے لیے ایک متحد Container پروٹوکول، اور SwitchRow اور PreferencesGroup جیسے عام ویجٹس کے لیے convenience initializers شامل ہیں۔ لائبریری GMenuRef اور SimpleAction کے ذریعے مینیو اور ایکشنز، DragSource اور DropTarget کے ذریعے ڈریگ اور ڈراپ، CSSProvider اور ٹائپ سیف CSSClass enums کے ساتھ CSS اسٹائلنگ، TimedAnimation اور SpringAnimation کے ساتھ اینیمیشنز، DrawingArea اور CairoContext کے ساتھ ڈرائنگ، لیبلز اور انٹریز کو اسٹائل کرنے کے لیے ٹیکسٹ ایٹریبیوٹس، MediaStream اور Video کے ساتھ میڈیا پلے بیک، اور مکمل لوکلائزیشن سپورٹ فراہم کرتی ہے جس میں gettext سیٹ اپ، جمع اور سیاق و سباق کی تلاش، رن ٹائم زبان تبدیل کرنا، اور دائیں سے بائیں لے آؤٹ شامل ہیں۔ یہ ٹائپ سیف GSettings بائنڈنگ کے لیے ایک @Setting پراپرٹی ریپر، Breakpoint.minWidth() اور Breakpoint.maxWidth() کے ساتھ انکولی لے آؤٹ معاون، اور @MainActor آئسولیشن اور Sendable اقسام کے ساتھ مکمل Swift 6 کنکرنسی سپورٹ بھی فراہم کرتا ہے۔ پروجیکٹ میں Linux پر 1194 اور macOS پر 1181 ٹیسٹ، 78 ڈیمو مثالیں، اور Ubuntu اور macOS پر CI شامل ہے۔ اس کے لیے Swift 6.2+، libadwaita 1.5+ ڈیولپمنٹ ہیڈرز، اور GtkSourceView 5 ڈیولپمنٹ ہیڈرز درکار ہیں، اور یہ Linux یا macOS 13+ (Apple Silicon تجویز کردہ) کو سپورٹ کرتا ہے۔ Linux پر تقسیم کی سفارش Flatpak کے ذریعے کی جاتی ہے، جو GTK4 اور libadwaita کے لیے GNOME رن ٹائم اور کمپائلر کے لیے Swift SDK ایکسٹینشن استعمال کرتا ہے۔ لائبریری MIT لائسنس کے تحت جاری کی گئی ہے۔