Wayland — نمایشگر نسل جدید لینوکس
آموزش کامل Wayland در Gentoo: مفهوم کامپوزیتور، USE flags، متغیرهای محیطی، XWayland و مقایسه با X11 برای محیطهای دسکتاپ مدرن.
Wayland یک پروتکل نمایشگر مدرن است که جانشین X11 میشود و در Gentoo بهتدریج پیشفرض محیطهای دسکتاپ مدرن (GNOME، KDE Plasma، Hyprland) شده است. در حالی که X11 معماریِ client/server سنگینی با سرور X مرکزی دارد، Wayland پروتکلی سبکتر است که در آن هر کامپوزیتور (compositor) مسئولیت نمایش، ورودی و مدیریت پنجره را مستقیم بر عهده میگیرد.
Wayland چیست؟
Wayland یک «پروتکل» است، نه یک نرمافزار. این پروتکل ارتباط میان کامپوزیتور (که نقش سرور نمایشگر را دارد) و کلاینتها (برنامهها) را تعریف میکند. برخلاف X11 که در آن سرور X یک فرآیند جداگانه است و مدیر پنجره روی آن اجرا میشود، در Wayland خود کامپوزیتور است که هم نمایش را مدیریت میکند و هم پنجرهها را.
| ویژگی | Wayland | X11 |
|---|---|---|
| معماری | کامپوزیتور + کلاینت | سرور X + client + window manager |
| امنیت | ایزولهسازی بین پنجرهها | هر کلاینت میتواند صفحه را ببیند |
| تأخیر | کمتر | بیشتر (به دلیل بافر میانی) |
| صفحههای HiDPI | پشتیبانی بومی | نیازمند پیکربندی دستی |
| شبکه شفاف | محدود (via wayvnc) | بومی (SSH X forwarding) |
| بلوغ | در حال تکامل (سالهاست پایدار است) | کاملاً پایدار، قدیمی |
تاریخچهٔ کوتاه
پروژهٔ Wayland در سال ۲۰۰۸ توسط Kristian Høgsberg در Red Hat آغاز شد. نخستین پشتیبانی آزمایشی در GNOME ۳.۱۰ (سال ۲۰۱۳) و در KDE Plasma ۵ در سال ۲۰۱۵ اضافه شد. امروزه اکثر توزیعهای اصلی Wayland را بهعنوان پیشفرض دارند.
پیشنیازها در Gentoo
برای استفاده از Wayland باید چند USE flag و متغیر محیطی را آماده کنید:
# /etc/portage/make.conf
USE="wayland opengl egl gles2"
VIDEO_CARDS="amdgpu intel nouveau radeonsi"علاوه بر این، به یک مدیر نشست (session manager) نیاز دارید. اگر از systemd استفاده میکنید، systemd-logind این نقش را دارد. با OpenRC باید elogind و seatd را نصب کنید:
# نصب برای OpenRC
emerge --ask sys-auth/elogind sys-auth/seatd
rc-update add elogind default
rc-update add seatd defaultگروه video
کاربر شما باید در گروه video باشد تا به دستگاههای گرافیکی و seat دسترسی داشته باشد:
gpasswd -a username video
gpasswd -a username seatXDG_RUNTIME_DIR
Wayland بهشدت به متغیر XDG_RUNTIME_DIR وابسته است. این مسیر معمولاً /run/user/1000 است (۱۰۰۰ UID کاربر) و توسط logind/elogind ساخته میشود. اگر خالی باشد، کامپوزیتورها اجرا نمیشوند:
# بررسی وجود مسیر
echo $XDG_RUNTIME_DIR
# خروجی:
# /run/user/1000
ls -ld /run/user/1000
# drwx------ 4 username username 80 Jan 15 09:23 /run/user/1000کامپوزیتورهای رایج
| کامپوزیتور | بسته Gentoo | توضیح |
|---|---|---|
| Mutter | gnome-base/mutter | کامپوزیتور GNOME |
| KWin | kde-plasma/kwin | کامپوزیتور KDE Plasma |
| Sway | gui-wm/sway | i3-like، مبتنی بر wlroots |
| Hyprland | gui-wm/hyprland | tiling پویا، انیمیشندار |
| Weston | dev-libs/weston | کامپوزیتور مرجع (برای تست) |
| Cage | gui-wm/cage | kiosk، تکصفحهای |
نصب Weston برای آزمایش
اگر میخواهید Wayland را پیش از نصب یک دسکتاپ کامل امتحان کنید، weston سادهترین راه است:
emerge --ask dev-libs/weston
# اجرا از داخل ترمینال (TTY)
weston
# خروجی:
# [...8765.432] weston 12.0.0
# [...8765.435] Compositor capabilities:
# arbitrary scale: yes
# clock: CLOCK_MONOTONIC
# [...8765.510] Output repaint window is 14 ms maximum and 7 ms averageبرای اجرای برنامههای نمونه داخل weston، کلید Super (Windows) را فشار دهید تا منوی بالا باز شود.
متغیرهای محیطی مهم
برای اجرای درست برنامههای GTK و Qt تحت Wayland، این متغیرها را در ~/.bashrc یا ~/.profile قرار دهید:
# ~/.bashrc
export XDG_SESSION_TYPE=wayland
export GDK_BACKEND=wayland,x11
export QT_QPA_PLATFORM=wayland
export CLUTTER_BACKEND=wayland
export SDL_VIDEODRIVER=wayland
export MOZ_ENABLE_WAYLAND=1پشتیبانی Firefox از Wayland
فایرفاکس از نسخهٔ ۶۵ به بعد از Wayland پشتیبانی میکند. متغیر MOZ_ENABLE_WAYLAND=1 آن را فعال میکند. برای بررسی اینکه آیا فایرفاکس تحت Wayland اجرا شده:
echo $WAYLAND_DISPLAY
# wayland-0XWayland — سازگاری با X11
برای اجرای برنامههایی که هنوز از X11 پشتیبانی میکنند، کامپوزیتور XWayland را اجرا میکند که یک سرور X مجازی است. این بسته معمولاً بهطور خودکار با کامپوزیتورها نصب میشود:
# نصب دستی XWayland
emerge --ask x11-base/xwayland
# بررسی اجرای XWayland
pgrep -a Xwayland
# خروجی:
# 1234 Xwayland :0 -rootless -listen 4 -listen 5 ...برنامههای قدیمی (مانند برخی بازیها، Wine، یا برنامههای مبتنی بر Motif) از طریق XWayland کار میکنند اما امکاناتی مانند چند صفحهای یا scale بومی Wayland را ندارند.
تأیید نوع نشست
برای اطمینان از اینکه نشست شما واقعاً Wayland است:
echo $XDG_SESSION_TYPE
# wayland
loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
# Type=wayland
# بررسی Socket
ls -l $XDG_RUNTIME_DIR/wayland-0
# srwxrwxr-x 1 username username 0 Jan 15 09:23 /run/user/1000/wayland-0خطاهای رایج
۱. خطای no XDG_RUNTIME_DIR
failed to create display: No such file or directoryدلیل: متغیر XDG_RUNTIME_DIR تنظیم نیست یا مسیر وجود ندارد. راهحل:
# بررسی سرویس logind
systemctl status systemd-logind
# یا با OpenRC:
rc-service elogind status
# ساخت دستی اگر لازم بود
export XDG_RUNTIME_DIR=/run/user/$(id -u)
mkdir -p $XDG_RUNTIME_DIR
chmod 700 $XDG_RUNTIME_DIR۲. خطای cannot open display
Gtk-WARNING: cannot open display: :0دلیل: برنامهٔ GTK سعی کرده نشست X11 باز کند اما متغیر GDK_BACKEND تنظیم نیست. راهحل:
export GDK_BACKEND=wayland,x11
# یا برای اجرای اجباری روی X11:
GDK_BACKEND=x11 my-program۳. صفحه سیاه در NVIDIA
gl_renderer: EGL_BAD_ALLOCدلیل: درایور NVIDIA بدون nvidia-drm.modeset=1 تنظیم شده. راهحل کامل در آموزش NVIDIA توضیح داده شده، اما خلاصهٔ آن:
# افزودن به پارامتر کرنل در /etc/default/grub
GRUB_CMDLINE_LINUX="nvidia-drm.modeset=1"
grub-mkconfig -o /boot/grub/grub.cfg
rebootخلاصه و مرحله بعد
Wayland آیندهٔ نمایشگر لینوکس است و در Gentoo کاملاً پشتیبانی میشود. نصب و پیکربندی آن نیاز به تنظیم درست USE flags، گروه video و مدیر نشست دارد. اکثر برنامههای مدرن بهخوبی روی Wayland کار میکنند و XWayland برای برنامههای قدیمی پل ارتباطی است.
برای مقایسه با نسخهٔ کلاسیک، آموزش X11 را ببینید. برای نصب یک دسکتاپ کامل Wayland، GNOME، KDE Plasma یا Hyprland را مطالعه کنید. اگر از کارت گرافیک NVIDIA استفاده میکنید، حتماً پیش از راهاندازی Wayland آموزش NVIDIA را بخوانید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.