پس از چهار ماه توسعه، نسخه پایدار پروتکل Wayland 1.26، مکانیزم ارتباط بین پردازشی و کتابخانهها منتشر شد. شاخه 1.26 در سطح API و ABI با نسخههای 1.x سازگار است و عمدتاً شامل رفع اشکالات و بهروزرسانیهای جزئی پروتکل است. کار این پروژه تحت مجوز MIT توزیع شده است. مرجع کامپوزیت سرور وستون، که کد و نمونههای کاری برای استفاده از ویلند در محیطهای دسکتاپ و توکار ارائه میدهد، در یک چرخه توسعه جداگانه توسعه داده میشود.
تغییرات عمده در پروتکل:
- رویداد wl_pointer.warp اضافه شد که به شما امکان میدهد بدون مدیریت رویداد wl_pointer.motion که توسط فعالیت کاربر ایجاد میشود، در مورد موقعیت جدید اشارهگر اعلان دریافت کنید.
- درخواست wl_fixes.ack_global_remove اضافه شده است، که برای ارسال تأیید به مدیر مرکب مبنی بر توقف پردازش رویداد توسط کلاینت طراحی شده است تا از ایجاد شرایط رقابتی هنگام حذف رویدادهای سراسری جلوگیری شود. مدیر مرکب پس از دریافت تأیید از همه کلاینتها، میتواند کنترلکننده مرتبط با رویداد را در سمت خود حذف کند.
- تابع wl_display_remove_socket_fd() برای حذف سوکتهایی که قبلاً از طریق فراخوانی wl_display_add_socket_fd() اضافه شدهاند، اضافه شد.
- در حالت اشکالزدایی WAYLAND_DEBUG، زمان با فرمت "HH:MM:ss.xxxxxx" ثبت میشود که تجزیه و مقایسه لاگها را ساده میکند.
افزونههای پروتکل اضافه شده از زمان انتشار قبلی Wayland که پروتکل اصلی Wayland را تکمیل میکنند و در یک مجموعه پروتکلهای Wayland جداگانه ارائه میشوند:
- xx-fractional-scale — برای مقیاسبندی یک سیستم مختصات منطقی، که در آن مقادیر به صورت اعداد صحیح مشخص میشوند، برای بهبود دقت موقعیتیابی و افزایش وضوح مختصات منطقی تا پیکسلهای منفرد. این ویژگی مشکل وضوح محدود سیستم مختصات منطقی را حل میکند، که برای موقعیتیابی در سطح پیکسلهای منفرد کافی نیست، که برای پیادهسازی کامل مقیاسبندی کسری ضروری است.
- برشهای xx — برای دریافت اطلاعات مربوط به بریدگیهای روی صفحه نمایش (برای مثال، ناحیه زیر دوربین جلو در صفحه نمایش گوشی هوشمند).
- xx-zones — برای ایجاد و افزودن پنجرههای سطح بالا به "zones" — محیطهایی با فضای مختصات خاص خود. این پروتکل امکان چیدمان منطقی پنجرهها را فراهم میکند، که در آن هر پنجره نسبت به هر پنجره دیگر موقعیتیابی میشود.
- xx-keyboard-filter — برای کلاینت تا رویدادهای انتخابشدهی صفحهکلید را رهگیری کند، رویدادهای ورودی را تغییر دهد یا از انتقال رویدادهای خاص به سطح Wayland متمرکز جلوگیری کند.
- پروتکل xdg-session-management به دستهی staging اضافه شده است و امکان بازیابی وضعیت و موقعیت پنجرهها از یک session قطعشده در محیطهای مبتنی بر پروتکل Wayland، مثلاً پس از یک خرابی ترکیبی، را فراهم میکند. سرور یا برنامه های کاربردی.
- پروتکل "linux-dmabuf" برای پشتیبانی از سیستمهای چند پردازنده گرافیکی (multi-GPU) بهروزرسانی شده است. در چنین سیستمهایی، کلاینت میتواند از ترکیب (composite) استفاده کند. سرور از کدام پردازنده گرافیکی (GPU) باید استفاده شود.
- پروتکل color-management-v1 بهروزرسانی شده است تا از ابرداده تصویر BT.2100 برای استفاده در کامپوزیت پشتیبانی کند. سرور هندلرهای خاصی که امکان نمایش صحیح محتوای HDR ایجاد شده برای Windows.
رویدادهای قابل توجه مربوط به ویلند از زمان انتشار آخرین شماره:
- سینامون از ویلند کاملاً حمایت میکند.
- در کتابخانه ANGLE که در کروم استفاده میشود و Androidپشتیبانی Wayland اضافه شد.
- KDE، هنگام استفاده از Wayland، پشتیبانی از بازیابی جلسه و پروتکل Wayland xx-fractional-scale-v2 را برای مقیاسبندی کسری پیادهسازی میکند.
- یک پورت از درایور Synaptics X.Org برای محیطهای مبتنی بر Wayland ایجاد شده است.
- بررسی آمادگی پلتفرمهای جلوههای ویژه و انیمیشن برای جایگزینی X11 با Wayland آغاز شده است.
- آزمایش سرور ترکیبی Xfwl4 از پروژه Xfce آغاز شده است.
- رابط کاربری یونیتی با استفاده از Wayfire و Libadwaita بازسازی شده است.
- سرورها و محیطهای دسکتاپ ترکیبی بهروزرسانی شدند: COSMIC 1.3.0، Weston 16، Phosh 0.56، Nourish 1.0.0، miracle-wm 0.10، KDE Plasma 6.7، labwc 0.20، Sway 1.2، Wayland Maker 0.8، Hyprland 0.55، Niri 26.04، LXQt 2.4.0، Cage 0.3.
به یاد داشته باشید که Wayland پروتکلی برای تعامل بین یک سرور ترکیب و برنامههای در حال اجرا روی آن است. کلاینتها پنجرههای خود را به طور مستقل در یک بافر جداگانه رندر میکنند و اطلاعات بهروزرسانی را به سرور ترکیب ارسال میکنند. سرورکه محتویات بافرهای برنامههای کاربردی مجزا را برای تولید خروجی نهایی ترکیب میکند و تفاوتهای ظریف احتمالی مانند همپوشانی پنجره و شفافیت را در نظر میگیرد. به عبارت دیگر، سرور ترکیبی API برای رندر کردن عناصر مجزا ارائه نمیدهد، بلکه فقط روی پنجرههای از پیش رندر شده عمل میکند و بافرینگ مضاعف را هنگام استفاده از کتابخانههای سطح بالا مانند GTK و Qt که کار ترکیب محتویات پنجره را انجام میدهند، از بین میبرد.
Wayland بسیاری از مشکلات امنیتی X11 را در X.Org Server حل میکند، زیرا برخلاف مورد اخیر، ورودی و خروجی را برای هر پنجره ایزوله میکند، به یک کلاینت اجازه دسترسی به محتوای پنجرههای سایر کلاینتها را نمیدهد و اجازه رهگیری رویدادهای ورودی مربوط به سایر پنجرهها را نمیدهد (XLibre XServer افزونه X11 Xnamespace را پیادهسازی میکند که ایزولهسازی کلاینت را از طریق جداسازی در سطح فضای نام فراهم میکند). پشتیبانی از کار مستقیم با Wayland برای اکثر پلتفرمهای مورد استفاده در Linux کتابخانههای گرافیکی شامل GTK، Qt، SDL، FLTK، wxWidgets، Clutter و EFL (کتابخانه بنیاد روشنگری).
تعامل با سختافزار در Wayland/Weston، مانند مقداردهی اولیه، تغییر حالت ویدئو (تنظیمات DRM) و مدیریت حافظه (GEM برای i915 و TTM برای Radeon و Nouveau) برای کارتهای گرافیک، میتواند مستقیماً از طریق یک ماژول سطح هسته انجام شود و نیاز به امتیازات کاربر ارشد را از بین ببرد. برای اطمینان از اجرای برنامههای استاندارد X11 در یک محیط مبتنی بر Wayland، از مؤلفه DDX XWayland (Device-Dependent X) استفاده میشود که از نظر عملکرد مشابه Xwin و Xquartz برای Win32 و macOS.
منبع: opennet.ru
