🖥️دسکتاپ و لینوکس★ شاخصسال: ۱۴۰۴–۰۵نگهداری‌شده

MTP Ecosystem

یک سیستم‌عامل شخصی برای دسکتاپ خودم — مدیر پنجره، صفحه قفل، والپیپر، تنظیمات، ویجت و ترمینال، همه به Rust

MTP Ecosystem cover
RustSmithayWaylandDRM / GBMwgpuPAMGTK4 / libadwaitaMeson

دسکتاپ لینوکس خودم را با چیزی که نوشتم جایگزین کردم. این صفحه نتیجه آن است.

چیست

بیشتر پروژه‌های «دسکتاپ سفارشی لینوکس» یک کوه فایل کانفیگ هستند. این یکی نیست — برنامه است.

یک مدیر پنجره هست. یک صفحه قفل هست که رمز واقعی را از طریق PAM می‌پرسد — همان سیستم‌کالی که توزیع‌های لینوکس استفاده می‌کنند، پس با حساب‌های کاربری واقعی کار می‌کند. یک موتور والپیپر هست. یک اپلیکیشن تنظیمات با رابط گرافیکی هست. یک ترمینال هست. و ویجت‌ها و یک لانچر هست که روی یک سوکت محلی با هم حرف می‌زنند.

با هم، چیزی شبیه سیستم‌عامل می‌شوند که هر روز استفاده می‌کنم، و روی همان پشته واقعی کامپوزیتور Wayland می‌نشستد — نه جایگزین کرنل یا درایور گرافیک.

چه کار می‌کند

  • مدیر پنجره روی Smithay، کتابخانه مرجع کامپوزیتور Wayland، که مستقیم با DRM/GBM حرف می‌زند و برای هرچه GPU می‌کشد یک رندرکننده wgpu دارد.
  • صفحه قفلی که واقعاً قفل می‌کند. تأیید رمز از طریق PAM — نه مقایسه با یک رشته ذخیره‌شده — به‌همراه کم‌نور کردن صفحه و مدیریت سشن.
  • موتور والپیپر که پس‌زمینه‌ها را ترکیب می‌کند و می‌تواند بدون بارگذاری دوباره فریم‌بافر در هر فریم آن‌ها را انیمیت کند.
  • اپ تنظیمات با GTK4/libadwaita، تا کاربری به‌جای ویرایش فایل متنی انجام ندهد.
  • ترمینال RTL — متن فارسی، رندر و ورودی راست‌به‌چپ، که اکثر ترمینال‌ها بد از پسش برمی‌آیند.
  • ویجت‌ها و لانچر با یک پروتکل سوکت محلی مشترک.

اعداد

۹۶٬۵۰۰ خط Rust
۳۲۶ فایل سورس
۴ باینری در فضای کاری اصلی
۱ فضای کاری جدا برای افزونه مرورگر

چرا ارزش دیدن دارد

دلیل نوشتن یک دسکتاپ این است که دیگر کاربر ابزارها نیستی و می‌شوی کسی که باید با پیامدهایش زندگی کند. درست کردن PAM یعنی قبول کنی صفحه قفلت الان یک مؤلفه امنیتی است، پس یک اشتباه پیامد واقعی دارد — و همین طرز نوشتن کدت را عوض می‌کند. کار با DRM/GBM یعنی قبول کنی کامپوزیتور هم وابستگی سخت‌افزار دارد و وابستگی زمانی، و کامپوزیتوری که یک فریم را از دست بدهد قفل می‌شود.

این پروژه هم جایی است که بیشتر از همه مجبور شدم برای دیگران طراحی کنم: تنظیمات باید بدون مستندات قابل کشف باشد، و پروتکل سوکت ویجت‌ها باید برای برنامه‌ای که هنوز ننوشته‌ام معنا داشته باشد.

وضعیت فعلی

  • ماشین خودم است، نه یک توزیع. تلاش نکردم روی سخت‌افزاری که مال خودم نیست کار کند، پس نمی‌توانم بگویم چقدر قابل‌حمل است.
  • مدیریت باتری عملاً غایب است. پروفایل‌های مصرف برق وصل نشده‌اند؛ روی لپ‌تاپ این یک محدودیت واقعی است.
  • افزونه Chromium فضای کاری جداست و کم‌پیشرفته‌ترین بخش کار است.

فاصله این کار تا یک محصول دسکتاپ تمام‌شده زیاد است، و راحت‌تر است این را صریح بگویم تا اینکه وانمود کنم کار تمام شده.

پروژه‌های بیشتر