Hệ thống X Window sử dụng kiến trúc máy khách-máy chủ. Máy chủ X chạy trên máy có màn hình (màn hình + thiết bị đầu vào), trong khi máy khách X có thể chạy trên bất kỳ máy nào khác và kết nối với máy chủ X bằng giao thức X (không trực tiếp, mà bằng cách sử dụng thư viện, như Xlib, hoặc XCB không theo hướng sự kiện hiện đại hơn). Giao thức X được thiết kế để có thể mở rộng và có nhiều phần mở rộng (xem xdpyinfo(1)
).
Máy chủ X chỉ thực hiện các hoạt động cấp thấp, như tạo và phá hủy các cửa sổ, thực hiện các thao tác vẽ (hiện nay hầu hết các bản vẽ được thực hiện trên máy khách và được gửi dưới dạng hình ảnh đến máy chủ), gửi các sự kiện tới các cửa sổ, ... Bạn có thể thấy rất ít một máy chủ X thực hiện bằng cách chạy X :1 &
(sử dụng bất kỳ số nào chưa được sử dụng bởi máy chủ X khác) hoặc Xephyr :1 &
(Xephyr chạy máy chủ X được nhúng trên máy chủ X hiện tại của bạn) rồi chạy xterm -display :1 &
và chuyển sang máy chủ X mới (bạn có thể cần phải thiết lập ủy quyền X sử dụng xauth(1)
).
Như bạn có thể thấy, máy chủ X làm rất ít, nó không vẽ các thanh tiêu đề, không thực hiện thu nhỏ / biểu tượng hóa cửa sổ, không quản lý vị trí cửa sổ ... Tất nhiên, bạn có thể điều khiển vị trí cửa sổ bằng cách chạy một lệnh thủ công thích xterm -geometry -0-0
, nhưng bạn thường sẽ có một khách hàng X đặc biệt làm những việc trên. Khách hàng này được gọi là người quản lý cửa sổ . Chỉ có thể có một trình quản lý cửa sổ hoạt động tại một thời điểm. Nếu bạn vẫn còn mở máy chủ X trần của các lệnh trước đó, bạn có thể cố gắng chạy một trình quản lý cửa sổ trên nó, như twm
, metacity
, kwin
, compiz
, larswm
, pawm
, ...
Như chúng ta đã nói, X chỉ thực hiện các hoạt động cấp thấp và không cung cấp các khái niệm cấp cao hơn như nút bấm, menu, thanh công cụ, ... Chúng được cung cấp bởi các thư viện gọi là toolkits , ví dụ: Xaw, GTK, Qt, FLTK, ...
Môi trường máy tính để bàn là tập hợp các chương trình được thiết kế để cung cấp trải nghiệm người dùng thống nhất. Vì vậy, môi trường máy tính để bàn thường cung cấp bảng điều khiển, trình khởi chạy ứng dụng, khay hệ thống, bảng điều khiển, cơ sở hạ tầng cấu hình (nơi lưu cài đặt). Một số môi trường máy tính để bàn nổi tiếng là KDE (được xây dựng bằng bộ công cụ Qt), Gnome (sử dụng GTK), Enlightenment (sử dụng các thư viện bộ công cụ của riêng mình), ...
Một số hiệu ứng máy tính để bàn hiện đại được thực hiện tốt nhất bằng phần cứng 3d. Vì vậy, một thành phần mới xuất hiện, người quản lý tổng hợp . Một phần mở rộng X, phần mở rộng XCompozit, gửi nội dung cửa sổ đến trình quản lý hỗn hợp. Trình quản lý tổng hợp chuyển đổi các nội dung đó thành kết cấu và sử dụng phần cứng 3d thông qua OpenGL để soạn chúng theo nhiều cách (trộn alpha, chiếu 3d, ...).
Cách đây không lâu, máy chủ X đã nói chuyện trực tiếp với các thiết bị phần cứng. Một phần đáng kể của việc xử lý thiết bị này đã được chuyển sang nhân hệ điều hành: DRI (cho phép truy cập vào phần cứng 3d của máy khách X và kết xuất trực tiếp), evdev (giao diện hợp nhất để xử lý thiết bị đầu vào), KMS (chuyển cài đặt chế độ đồ họa sang kernel) , GEM / TTM (quản lý bộ nhớ kết cấu).
Vì vậy, với sự phức tạp của việc xử lý thiết bị hiện chủ yếu nằm ngoài X, việc thử nghiệm các hệ thống cửa sổ đơn giản hóa trở nên dễ dàng hơn. Wayland là một hệ thống cửa sổ dựa trên khái niệm trình quản lý tổng hợp, tức là hệ thống cửa sổ là trình quản lý tổng hợp. Wayland sử dụng việc xử lý thiết bị đã chuyển ra khỏi X và kết xuất lại bằng OpenGL.
Đối với Unity, đó là môi trường máy tính để bàn được thiết kế để có giao diện người dùng phù hợp với netbook.