GTKX 1.0 منتشر شد؛ ریاکت روی دسکتاپ لینوکس
خلاصهٔ کاملتر
تو پست معرفی نسخهٔ ۱.۰ اومده که GTKX همون لایهٔ declarative گمشده رو میذاره روی APIهای بالغ GTK4: تو JSX مینویسی و GTKX پشت صحنه نمونههای GObject میسازه. تو مسیر معمول GTK، رابط کاربری با XMLهای GtkBuilder چیده میشه ولی درختی که میسازه ثابته و همگام نگهداشتنش با state خودت کد دستیه. رسیدن به GTK4 از جاوااسکریپت هم تا حالا یعنی GJS — یه runtime جدا و بریده از npm — یا پیچیدن یه مرورگر دور کل دسکتاپ.
ویجتهای GTK اینجا مستقیم المنت JSX هستن و هر property یه prop. کل یه شمارندهٔ کوچیک این شکلیه:
const Counter = () => {
const [count, setCount] = useState(0);
return (
<GtkApplicationWindow title="Hello GTKX" onCloseRequest={quit}>
<GtkButton label="Increment" onClicked={() => setCount((c) => c + 1)} />
</GtkApplicationWindow>
);
};ریاکتی که اجرا میشه هم ریاکت استاندارد ۱۹ه، نه یه گویش خاص: هوکها، context، Suspense، portal و React Compiler دقیقاً مثل هر رندرر دیگهای رفتار میکنن.
نکتهٔ جالب معماری اینه که المنتها روی ماشین خودت ساخته میشن. CLI فایلهای .gir نصبشده روی سیستم رو میخونه و کلاسها و المنتهای تایپدار رو داخل node_modules/.gtkx تولید میکنه — هیچکدوم روی npm منتشر نمیشن. تو فقط تو کانفیگ میگی چه کتابخونههایی بایند بشن:
export default defineConfig({
libraries: ["Gtk-4.0", "Adw-1", "WebKit-6.0"],
applicationId: "com.gtkx.tutorial",
});اضافهکردن WebKit همین یه عضو تو آرایهست (بهعلاوهٔ پکیج توسعهش) و بعدش WebKitWebView قابل import میشه؛ نویسنده میگه مثال browser توی ریپو دقیقاً همین یه خطه که رشد کرده و شده یه مرورگر کوچیک.
اپ در عمل یه پروسهٔ معمولی Node.jsه و GTK و جاوااسکریپتت روی یه thread مشترک اجرا میشن. یعنی node:fs، fetch، تایمرها و کل رجیستری npm سر جاشونن: اپ Tasks توی آموزش رسمی state خودش رو با zustand نگه میداره و با node:fs روی دیسک مینویسه. Gio فقط جایی میاد وسط که خودِ دسکتاپ موضوعه — GSettings، نوتیفیکیشنها و اکشنها. برای اجرا هم لینوکس، Node.js نسخهٔ ۲۴ به بالا و پکیجهای توسعهٔ GTK4 و GLib لازمه.
نویسنده صریح میگه این ابزار فقط لینوکسه و اگه یه کدبیس واحد برای همهٔ دسکتاپها میخوای، GTKX انتخاب اشتباهیه. به گفتهٔ اون همین محدودبودن عمدیه: وقتی فقط یه پلتفرم رو هدف میگیری، میتونی کل تولکیت رو در دسترس بذاری، نه اون زیرمجموعهٔ مشترک بین همهٔ پلتفرمها.
نکات کلیدی:
- GTKX 1.0 در ۴ اوت ۲۰۲۶ منتشر شد و با npm create gtkx پروژه میسازه
- پیشنیازها: لینوکس، Node.js 24 یا بالاتر، پکیجهای توسعهٔ GTK4 و GLib
- ریاکت ۱۹ استاندارد؛ هوکها، Suspense، portal و React Compiler بدون تغییر کار میکنن
- بایندینگها از فایلهای .gir سیستم داخل node_modules/.gtkx تولید میشن و روی npm نیستن
- افزودن یه کتابخونه مثل WebKit-6.0 فقط یه عضو تو آرایهٔ libraries کانفیگه
- فقط لینوکس؛ کراسپلتفرم بودن عمداً هدف نیست




