Chương trình quản lý cửa sổ X

Một **chương trình quản lý cửa sổ X** (tiếng Anh: *X window manager*) là một phần mềm điều khiển sự bố trí và ngoại hình của các cửa sổ trong hệ thống X Window, một hệ thống cửa sổ được dùng chủ yếu trong các hệ thống giống Unix.
 
Không giống Apple Macintosh và Windows - các hệ nền vốn chỉ cung cấp một bộ các phương thức cố định do nhà cung cấp kiểm soát để điều khiển việc hiển thị các cửa sổ và pan-nô trên màn hình và điều khiển cách người dùng tương tác với chúng, người ta đã cố ý giữ phần quản lý cửa sổ cho hệ thống X Window tách biệt khỏi phần mềm cung cấp hiển thị đồ họa. Người dùng có thể lựa chọn giữa nhiều chương trình quản lý cửa sổ của các nhà cung cấp phần mềm bên thứ ba (third-party), các chương trình này khác nhau ở nhiều điểm, trong đó có:

* Khả năng tùy biến (*customizability*) ngoại hình và chức năng:
**Các trình đơn dưới dạng văn bản (*textual menu*) dùng để khởi động các trình ứng dụng và/hoặc thay đổi các tùy chọn.
**Trạm nổi (*docks*) và các phương pháp khác để khởi động các chương trình ứng dụng từ môi trường đồ họa.
**Đa mặt bàn (*multiple desktops*) và mặt bàn ảo (*virtual desktop*) (mặt bàn to hơn kích thước thực của màn hình), và ô đổi trang (*pager*) để người dùng có thể chuyển giữa các trang mặt bàn.
* Nhu cầu về dung lượng bộ nhớ và các tài nguyên hệ thống khác
* Mức độ tích hợp với môi trường mặt bàn nhằm cung cấp một giao diện đầy đủ hơn với hệ điều hành, đồng thời cung cấp một loạt các ứng dụng và tiện ích đã được tích hợp (*integrated utilities*).

Các trình bao thay thế cho Microsoft Windows cũng đã xuất hiện. Ví dụ LiteStep có thể thay thế giao diện người dùng trong Windows 95, 98, hay NT, với phong cách của Afterstep. OS/2 được phát hành kèm với trình bao mặc định là chương trình Presentation Manager, nhưng các nguồn thứ ba (*third party sources*) cũng có thể cung cấp các chương trình thay thế.

## Nguyên lý hoạt động của các chương trình quản lý cửa sổ X

Khi một chương trình quản lý cửa sổ hoạt động, một số dạng tương tác giữa trình phục vụ X và các trình khách của nó được điều hướng thông qua chương trình quản lý cửa sổ. Cụ thể, khi có yêu cầu phải hiển thị một cửa sổ mới, yêu cầu này được gửi cho chương trình quản lý cửa sổ và nó sẽ quyết định tọa độ khởi đầu của cửa sổ. Thêm vào đó, hầu hết các chương trình quản lý cửa sổ hiện đại còn thay nhánh mẹ của cửa sổ (*reparenting*), điều này dẫn đến việc một biểu ngữ được đặt trên đỉnh cửa sổ cùng với một khung trang trí được vẽ chung quanh viền mép của nó. Hai phần tử này được điều khiển bởi chương trình quản lý cửa sổ, thay vì bởi chương trình ứng dụng. Chính vì vậy, khi người dùng bấm chuột và kéo những phần tử này trên màn hình, chính chương trình quản lý cửa sổ là phần mềm lựa chọn các hành động thích hợp (như chuyển vị trí hoặc đổi kích cỡ của cửa sổ).

Chương trình quản lý cửa sổ còn chịu trách nhiệm với các biểu tượng (*icon*) nữa. Thực thế, ở mức giao thức trung tâm X Window, các biểu tượng không tồn tại. Khi người dùng đòi hỏi một cửa sổ được thu nhỏ lại thành một biểu tượng (*iconified*), chương trình quản lý cửa sổ xóa cửa sổ này khỏi bản đồ của mình (làm cho nó trở nên không nhìn thấy được) rồi lựa chọn hành động thích hợp để hiển thị biểu tượng tại chỗ của nó. Một số chương trình quản lý cửa sổ không hỗ trợ biểu tượng.

Trong khi mục đích chính của chương trình quản lý cửa sổ là quản lý các cửa sổ, như ý nghĩa của tên gọi, nhiều chương trình quản lý cửa sổ còn có thêm những tính năng bổ sung như khả năng xử lý các sự kiện bấm chuột tại cửa sổ gốc (*root window*), hiển thị các ô cửa sổ, cùng nhiều những phần tử trực quan đồ họa khác. Chúng còn có thể có chức năng xử lý phím bấm từ bàn phím (chẳng hạn Alt-F4 có thể làm đóng cửa sổ), quyết định việc chương trình ứng dụng nào sẽ chạy lúc máy vừa khởi động xong v.v.

## Những chương trình quản lý cửa sổ cho X được nhiều người ưa chuộng

*AfterStep
*Blackbox (Đơn giản và nhẹ nhất)
*Enlightenment
*Fluxbox (Hạng nhẹ, dựa trên nền của Blackbox)
*FVWM (Một Chương trình quản lý cửa sổ ảo (* virtual window manager*), phát sinh ra từ twm)
*IceWM
*Ion Chương trình quản lý cửa sổ đồng cỡ đa tầng (*tiling tabbed window manager*) được thiết kế với dụng ý dành cho người dùng quen sử dụng bàn phím. 
*Kwin (Nguyên được gọi là Kwm, chương trình quản lý cửa sổ mặc định của KDE)
*Metacity (Chương trình quản lý cửa sổ mặc định của GNOME kể từ phiên bản 2.2)
*MWM (Chương trình quản lý cửa sổ Motif)
*Sawfish (Nguyên được gọi là Sawmill)
*twm (Chương trình quản lý cửa sổ của Tom)
*Window Maker - Chương trình tạo cửa sổ
*Xfwm, Chương trình quản lý cửa sổ mặc định của Xfce

## Những chương trình quản lý cửa sổ X khác
*4dwm
*5Dwm (Chương trình quản lý cửa sổ X phát sinh từ mwm, diện mạo và cử chỉ của các phần tử trong giao diện đồ họa hoàn toàn giống như tính cách của các giao diện đồ họa do Silicon Graphics Inc. làm ra - *true SGI look&feel)*)
*9wm: (Một bản bắt chước hệ thống cửa sổ nguyên của Plan 9)
*aewm
*amiwm: Một phần mềm Amiga Workbench (giao diện đồ họa người dùng của Amiga), bắt chước hệ điều hành Unix.
*Compiz
*CTWM
*evilwm
*FVWM95
*HaZe
*JWM (Chương trình quản lý cửa sổ của Joe)
*Kahakai
*larswm
*Luminocity
*LWM
*Matchbox
*OLWM (và OLVWM với các bộ mặt bàn ảo, cùng chương trình quản lý cửa sổ OPEN LOOK)
*Openbox
*hackedbox
*Oroborus
*PekWM
*PWM
*Qvwm (Windows 95/98 look-alike)
*Ratpoison
*Scwm (Chương trình quản lý cửa sổ theo quy trình của Scheme)
*Orion: Một chương trình quản lý cửa sổ (đồng cỡ, trôi nổi) được viết bằng Scheme và scsh
*swm
*TrsWM
*uwm
*Waimea
*WebWM
*WindowLab
*wm2
*WMI
*wmii
*XPwm (Chương trình quản lý cửa sổ của XPde)

## Xem thêm
*Chương trình quản lý cửa sổ thay nhánh mẹ (*Re-parenting window manager*) thực thi một qui chế nhất định nào đấy
*Các giao thức và kiến trúc của hệ thống X Window để biết được bối cảnh
*Chương trình quản lý bố cục tạo hình (*Compositing manager*) để biết thêm về một loại chương trình quản lý cửa sổ khác trong X
*Chương trình quản lý bố cục tạo hình cửa sổ hợp nhất cả hai trách nhiệm vào trong một chương trình

## Tham khảo

## Liên kết ngoài
* ''Window Managers for X''  của anh Matt Chapman (Australia)
* ''The Other Window Managers''  - Bài phê bình sâu sắc về các chương trình quản lý cửa sổ
* ''Window Managers''  - Liệt kê danh sách những chương trình quản lý cửa sổ, có kèm lời bình luận