Wayland trên Linux là gì và nó khác với X như thế nào?

Tác giả sysadmin, T.Bảy 17, 2023, 09:11:47 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 3 Khách đang xem chủ đề.

Wayland trên Linux là gì và nó khác với X như thế nào?


Wayland là một hệ thống cửa sổ thay thế cho các bản phân phối Linux. Nó thay thế tiêu chuẩn X11 đã cũ. Bởi vì nó yêu cầu các ứng dụng phải được sửa đổi để hoạt động với nó, cho đến nay việc áp dụng vẫn còn chậm. Tại thời điểm viết bài, tăng cường bảo mật là lợi thế chính so với X11.


X11, hoặc Hệ thống X Window, cho phép môi trường màn hình đồ họa của bạn hiển thị và kiểm soát các cửa sổ. Wayland là sự thay thế cho X11. Nó được thiết kế để nhanh hơn và an toàn hơn. Đây là những gì bạn cần biết về họ.

1. Wayland là gì?

Wayland  là một sự thay thế hiện đại cho X11, vốn là hệ thống cửa sổ mặc định trên Linux trong nhiều thập kỷ. Wayland là một giao thức truyền thông và xác định thông báo giữa máy chủ hiển thị X Window và các ứng dụng khách. Dự án Wayland cung cấp các thư viện máy khách và máy chủ cho phép các ứng dụng sử dụng giao thức.

Dự án Wayland được bắt đầu bởi một  nhà phát triển Red Hat  vào năm 2008.

2. Nhiều Tên của X

Hệ thống X Window là một hệ thống cửa sổ, được Viện Công nghệ Massachusetts phát hành lần đầu tiên cho hệ điều hành Unix  vào năm 1984. Các ứng dụng có thể xây dựng dựa trên chức năng do hệ thống cửa sổ cung cấp để tạo giao diện người dùng.

Đến năm 1987, Hệ thống X Window đã đạt đến phiên bản 11 và được gọi là X11. Nó hiện được quản lý bởi    Đăng nhập để xem liên kết Foundation. Nó vẫn ở phiên bản 11, mặc dù đã có nhiều bản phát hành nhỏ hơn kể từ năm 1987. Tại thời điểm viết bài này, phiên bản ổn định hiện tại là  X11R7.7.

Chữ "X" trong tên không có nghĩa là mười trong số La Mã, cũng không ngụ ý "Xtra", "Xtended" hay bất cứ thứ gì tương tự. Một hệ thống cửa sổ trước đó được gọi là "W", nghĩa là "cửa sổ", và họ chỉ cần chuyển sang chữ cái tiếp theo trong bảng chữ cái khi bắt đầu dự án mới.

Bạn sẽ nghe thấy Hệ thống X Window được gọi là "X", "X11", "Xorg", "X Windows" và "X Window System".

3. X11 hoạt động như thế nào

Hệ thống X Window xử lý các sự kiện cấp thấp và nguyên thủy, chẳng hạn như tương tác với chuột, vẽ và di chuyển các cửa sổ. Các ứng dụng xử lý hình ảnh và thiết kế giao diện. Hình thức của các cửa sổ, chúng có những nút nào và vị trí của những nút đó là những lựa chọn mà người lập trình ứng dụng đưa ra. Hệ thống X Window vẽ thiết kế kết quả lên màn hình.

X11 cung cấp định nghĩa cho giao tiếp phải truyền giữa các thành phần khác nhau của Hệ thống X Window đang hoạt động. Giao tiếp này là bắt buộc vì mã mà ứng dụng hỗ trợ X sử dụng để vẽ các cửa sổ và thành phần giao diện của nó không có trong ứng dụng. Công việc đó được chia sẻ giữa máy chủ X và Trình quản lý cửa sổ.

Các ứng dụng là máy khách của máy chủ X. Trình quản lý cửa sổ là một loại máy khách đặc biệt. Máy chủ X chịu trách nhiệm quản lý tài nguyên, thực hiện các yêu cầu vẽ và sắp xếp các sự kiện như nhấn phím và nhấp chuột vào các ứng dụng thích hợp.

Nó cũng hoạt động như người trung gian trong giao tiếp giữa Trình quản lý cửa sổ và các ứng dụng, chuyển tiếp các thông báo qua lại giữa chúng. Trình quản lý cửa sổ duy trì một danh sách các cửa sổ mà ứng dụng đã mở, vị trí của chúng trên màn hình, kích thước của chúng, liệu chúng có chồng chéo lên nhau không, v.v.

Trình quản lý cửa sổ tổng hợp duy trì bộ đệm ngoài màn hình cho mỗi cửa sổ. Nó tổng hợp các bộ đệm này thành một hình ảnh duy nhất đại diện cho cửa sổ trên cùng—đại diện cho toàn bộ màn hình nền—được ghi vào màn hình.

Tất cả các môi trường máy tính để bàn đồ họa hiện đại, bao gồm cả GNOME và KDE, đều sử dụng Trình quản lý cửa sổ tổng hợp.

4. Wayland hoạt động như thế nào

Wayland nhằm giải quyết các vấn đề của X11. Kiến trúc X11 yêu cầu rất nhiều tin nhắn. Máy chủ X nằm giữa máy khách và Trình quản lý cửa sổ. Nó cũng nằm giữa mọi thứ và—thông qua nhân — phần cứng đồ họa. Khối lượng tin nhắn có thể dẫn đến độ trễ và trải nghiệm hình ảnh giật, lag.

Có một cơ sở mã lớn quá. Có ứng dụng máy chủ, ứng dụng Trình quản lý cửa sổ và thư viện X11 mà máy khách sử dụng. Cơ sở mã của bạn càng lớn (và cũ hơn) thì càng khó bảo trì và bạn càng phải vật lộn với mã kế thừa.

Bằng cách thay đổi kiến trúc, Wayland đã hiện đại hóa và hợp lý hóa cơ sở mã, mang lại lợi ích về hiệu suất và cải thiện bảo mật.

Trên thực tế, họ đã hợp nhất máy chủ và trình quản lý Cửa sổ thành một ứng dụng. Họ đã loại bỏ bất kỳ mã nào thực hiện các chức năng hiện được thực hiện bởi kernel. Thay vì nhân rộng nỗ lực, họ đã tận dụng chức năng của nhân.

Với Wayland, bộ tổng hợp và ứng dụng khách giao tiếp trực tiếp. Bộ tổng hợp duy trì ánh xạ bên trong của nó về vị trí của các cửa sổ trên màn hình nền, kích thước và trạng thái của chúng. Nó môi giới các sự kiện thay đổi bàn phím, chuột và cửa sổ, đồng thời gửi chúng đến các ứng dụng sở hữu các cửa sổ đó.

Các ứng dụng cập nhật giao diện người dùng cho phù hợp. Một điểm khác biệt chính là quá trình kết xuất được thực hiện bên trong chính các ứng dụng, sử dụng các thư viện Wayland được liên kết.

Ứng dụng sẽ cập nhật bộ đệm được sử dụng để giữ cửa sổ hoặc tạo một bộ đệm mới và loại bỏ bộ đệm cũ. Sau đó, ứng dụng khách sẽ gửi thông báo tới bộ tổng hợp, yêu cầu bộ tổng hợp cập nhật ánh xạ cửa sổ và sử dụng bộ đệm video mới hoặc đã cập nhật.

Kiến trúc đơn giản hóa và thiết kế mã hiện đại này mang lại những cải tiến về hiệu suất, đặc biệt là với các thao tác thay đổi kích thước cửa sổ và kéo, trông mượt mà và linh hoạt.

5. Sự chấp nhận chậm của Wayland bởi các ứng dụng

Wayland là hệ thống cửa sổ mặc định trong Debian 10 trở lên, Fedora 34 trở lên, Ubuntu 18.04 trở lên và các bản phân phối khác như Arch Linux. Mặc dù vậy, Wayland thường xuyên chạy các ứng dụng X11.

Có một lớp tương thích được gọi là XWayland cho phép các ứng dụng X11 chạy trong Wayland. Điều này là bắt buộc vì phần lớn các ứng dụng X11 chưa được sửa đổi và chuyển sang Wayland.

Trên các môi trường máy tính để bàn cung cấp bộ tổng hợp Wayland, như GNOME, các ứng dụng chính thức như Trình soạn thảo văn bản GNOME và Bản đồ, Tệp và Lịch đều là các ứng dụng gốc của Wayland. Nhưng phần lớn các ứng dụng X11 vẫn là các ứng dụng X11 gốc, chưa được xử lý.

Phần mềm trung gian XWayland thường hoạt động tốt, nhưng có thể xảy ra sự cố với một số ứng dụng X11 thực hiện các chức năng liên quan đến màn hình ở mức độ thấp, chẳng hạn như ghi lại màn hình. Sử dụng Wayland với NVIDIA có thể gây khó khăn không kém gì với X11, mặc dù tôi không gặp vấn đề gì với trình điều khiển hàng ngày của mình khi sử dụng nó với GPU NVIDIA GeForce GT 1030.

Một số tác giả của các ứng dụng X11 có thể hy vọng ứng dụng của họ hoạt động tốt với XWayland và họ có thể tránh phải làm lại chúng thành các ứng dụng Wayland. Đừng ngạc nhiên nếu quá trình tiếp nhận và di chuyển sang Wayland diễn ra lâu và chậm, với các ứng dụng mới áp dụng nó nhưng phần lớn các ứng dụng X11 hiện có vẫn giữ nguyên như hiện tại, đặt hy vọng vào XWayland.

6. Bạn đang sử dụng Wayland hay X11?

Nếu bạn đang sử dụng một trong những bản phân phối Linux chính, thì rất có thể bạn đã sử dụng Wayland. Bạn có thể kiểm tra bằng cách ban hành lệnh sau.

Mã nguồn [Chọn]
echo $XDG_SESSION_TYPE
Trên hệ thống sử dụng Wayland, đầu ra sẽ là:


Và trên hệ thống chạy Hệ thống X Window, bạn sẽ thấy:


Hiếm khi, XDG_SESSION_TYPEbiến môi trường không được đặt. Trong trường hợp đó, bạn có thể sử dụng lệnh này để thay thế:

Mã nguồn [Chọn]
loginctl show-session $(loginctl show-user $(whoami) -p Display --value) -p Type --value
Lệnh bên trong, lồng nhau loginctl sử dụng show-user lệnh để hiển thị các thuộc tính của người dùng được đặt tên. Lệnh whoamicung cấp cho chúng ta tên của người dùng hiện tại. Tùy -pchọn (thuộc tính) hạn chế đầu ra từ loginctlthông tin về cài đặt "Hiển thị" và chúng tôi sử dụng tùy --valuechọn để chỉ trả về giá trị. Chúng tôi không muốn có chuỗi "Display=" trong phản hồi từ loginctl. Tất cả điều đó cung cấp cho chúng tôi một ID phiên.

Chúng tôi chuyển ID phiên cho bên ngoài loginctlvà sử dụng show-sessionlệnh để hiển thị các thuộc tính của phiên. Chúng tôi sử dụng -ptùy chọn (thuộc tính) để hạn chế đầu ra ở thông tin về loại phiên và sử dụng tùy --valuechọn để hiển thị giá trị mà không có nhãn "Loại =".

Trên máy tính sử dụng Wayland, bạn sẽ thấy:


Nếu đang chạy Hệ thống X Window, bạn sẽ thấy:


7. Bạn nên sử dụng Wayland hay X11?

Trừ khi bạn gặp sự cố, bạn cũng có thể sử dụng những gì bạn đang sử dụng. Nhưng nếu bạn nhận thấy các bản cập nhật màn hình không ổn định hoặc bị giật, bạn có thể thử chuyển sang bất kỳ bản cập nhật nào bạn không sử dụng.

Trên GNOME, nếu bạn muốn hoán đổi và dùng thử hệ thống khác, tại màn hình đăng nhập, hãy nhấp vào tên người dùng của bạn rồi nhấp vào biểu tượng bánh răng ở góc dưới cùng bên phải của màn hình.


Một menu sẽ cung cấp cho bạn các phiên bản GNOME khác nhau. Các tùy chọn đề cập đến "Xorg" sử dụng Hệ thống Cửa sổ X và những tùy chọn không sử dụng Wayland.