GTKX؛ اپ نیتیو لینوکس با ریاکت و تایپاسکریپت
خلاصهٔ کاملتر
GTKX یه فریمورک متنبازه برای نوشتن اپلیکیشن نیتیو لینوکس با ریاکت و تایپاسکریپت. تو صفحهٔ رسمی پروژه اومده که روی استک GNOME و همون ابزارهای استاندارد وب سواره و پروژه با یه دستور npm create gtkx ساخته میشه. ایدهٔ اصلیش سادهست: هر کلاس مشتقشده از GObject (یعنی همون سیستم شیءگرای پایهٔ GTK) یه المان JSX ـه، پس کل گراف اشیاء اپ رو میشه اعلانی نوشت.
نتیجهش کدیه که برای هر کسی که ریاکت کار کرده آشناست؛ فقط بهجای div و span، اسم تایپهای GObject رو مینویسی:
const App = () => (
<GtkApplication>
<GtkApplicationWindow title="My App">
<GtkLabel>Hello from GTKX 👋</GtkLabel>
</GtkApplicationWindow>
</GtkApplication>
);اشیاء تودرتو هم کنار دستت ساخته نمیشن، بلکه به شکل prop پاس داده میشن؛ مثلاً یه header bar یا یه adjustment خودش یه المانه. بایندینگها هم دستی نوشته نشدن: تو gtkx.config.ts اسم کتابخونههای GIR (فایلهای توصیف API که روی خود سیستم نصبن) مثل Gtk-4.0، Adw-1 و WebKit-6.0 رو اعلام میکنی و codegen دقیقاً برای همون namespaceها تایپ میسازه. هر کلاس، سیگنال، enum و property با تایپ کامل تو IDE در دسترسه.
خود اپ یه برنامهٔ معمولی Node ـه، پس هر پکیج npm و هر API نودی سر جاشه. Fast Refresh هم پنجرهٔ در حال اجرا رو موقع سیو وصله میکنه و هرجا نتونه وصله کنه، خودش یه ریاستارت کنترلشده میزنه.
برای تست، یه Testing Library شبیه نسخهٔ ریاکتیش برای GTK4 هست که تستها رو تو Vitest و روی یه کامپوزیتور Wayland بدون نمایشگر اجرا میکنه، و یه MCP server هم اپ زنده رو در اختیار ایجنتهای AI میذاره برای تست و دیباگ. زیر همهٔ اینها یه هستهٔ Rust نشسته که فراخوانیهای GLib/GObject رو در زمان اجرا به معماری نیتیو ترجمه میکنه.
نکات کلیدی:
- ساخت پروژه با npm create gtkx؛ لایسنس MPL-2.0 و توسعه بهصورت عمومی روی GitHub
- هر کلاس GObject یه المان JSX ـه و اشیاء تودرتو به شکل prop پاس داده میشن
- کتابخونههای GIR تو gtkx.config.ts اعلام میشن، مثل Gtk-4.0، Adw-1 و WebKit-6.0
- Fast Refresh روی دسکتاپ، بهعلاوهٔ ریاستارت خودکار وقتی وصلهکردن ممکن نیست
- تست با Vitest روی کامپوزیتور Wayland هدلس و MCP server برای ایجنتها
- آموزش کامل ساخت اپ Tasks: split view تطبیقی، GSettings، نوتیفیکیشن و انتشار Flatpak




