با انتشار اوبونتو ۲۶.۰۴، کانونیکال یک تصمیم معماری بزرگ و قطعی گرفت: نشست سنتی X11 (GNOME-on-X11) بهطور کامل از مخازن رسمی حذف شد و سیستمعامل بهصورت انحصاری روی بستر Wayland قرار گرفت. این کوچ اجباری، هرچند از نظر امنیتی و یکپارچگی دستاورد مهمی است، اما برای مدیران سیستم و متخصصانی که بهطور روزمره با ابزارهای مجازیسازی کار میکنند، چالشهای جدیدی به همراه داشته است.
یکی از آزاردهندهترین این چالشها در VMware Workstation رخ میدهد؛ جایی که کلیدهای سیستمی مانند کلید Super (Windows) یا ترکیب Alt+Tab داخل ماشین مجازی کار نمیکنند و فوکوس را به سیستم میزبان (Host) برمیگردانند.
در این مقاله، به بررسی ریشهی فنی این مشکل و ارائه یک راهحل اصولی و دائمی در محیط Wayland میپردازیم.
ریشه مشکل کجاست؟ (Wayland در برابر X11)
در معماری قدیمی X11، برنامهها دسترسی بسیار آزادی به ورودیها داشتند. VMware میتوانست بهراحتی تمام ورودیهای کیبورد و موس را در انحصار خود درآورد (Key Grabbing) و مستقیماً به سیستمعامل Guest منتقل کند.
اما Wayland با یک مدل امنیتی بسیار سختگیرانهتر طراحی شده است تا جلوی بدافزارها و کیلاگرها (Keyloggers) را بگیرد. در این بستر، کامپوزیتور گنوم (Mutter) تمام کلیدهای سیستمی و ترکیبی را پیش از رسیدن به برنامههایی که روی لایهی تطبیقپذیر XWayland (مثل VMware) اجرا میشوند، شکار (Intercept) میکند. به همین دلیل، شما از ماشین مجازی بیرون میپرید.
راهحل: تنظیمات اختصاصی در Compositor گنوم
از آنجایی که بازگشت به X11 در اوبونتو ۲۶.۰۴ امکانپذیر نیست، باید مستقیماً به کامپوزیتور گنوم دستور دهیم که یک استثنا (Whitelist) برای کلاسهای اجرایی VMware قائل شود. این کار از طریق ابزار gsettings در ترمینال انجام میشود.
گام اول: فعالسازی مجوز انحصار (Grabbing) در XWayland
ابتدا باید به لایهی XWayland اجازه دهیم که در صورت نیاز، کلیدهای کیبورد را در انحصار خود بگیرد. ترمینال را باز کرده و دستور زیر را اجرا کنید:
gsettings set org.gnome.mutter.wayland xwayland-allow-grabs true
گام دوم: افزودن VMware به لیست سفید
برای رعایت اصول امنیتی، ما این مجوز را برای تمام برنامهها باز نمیگذاریم. با دستور زیر، دقیقاً کلاسهای اجرایی مربوط به VMware Workstation و VMware Player را مجاز به استفاده از این قابلیت میکنیم:
gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['vmware', 'Vmware', 'vmplayer']"
گام سوم: اعمال تنظیمات
تنظیماتی که از طریق dconf و با دستور gsettings اعمال میشوند، بلافاصله در دیتابیس پروفایل کاربری شما ثبت شده و کاملاً دائمی هستند (حتی پس از ریبوت سیستم یا آپدیت سیستمعامل).
برای اعمال کامل تغییرات فعلی، تمام پنجرههای VMware را ببندید و مجدداً باز کنید. در برخی موارد خاص، ممکن است نیاز باشد یک بار از اکانت کاربری خود Log Out کرده و مجدداً وارد شوید.