Jun 25
Thực chất nói đến X Windows là người ta thường hay nói một cách chung chung về giao diện đồ họa trên Linux. X Window (hay X, X11 và gần đây chuyển thành X.Org) thực ra là một tập các giao thức chuẩn hỗ trợ giao diện cửa sổ (windows) và hình ảnh. Hệ thống X bao gồm có hai phần: server và client. Server là phần đảm nhận hiển thị cửa sổ và hình ảnh (nút nhấn, thanh trượt, menu,...), cũng như tiếp nhận tương tác chuột, bàn phím từ người dùng. Còn X client là các chương trình cung cấp các tính năng nào đó, ví dụ xclock cung cấp tính năng xem giờ qua giao diện đồng hồ có kim quay, hoặc xterm cung cấp một cửa sổ có giao diện dòng lệnh SHELL để bạn thực thị các lệnh, v.v...


GNOME, KDE và Xfce là các desktop environments, cung cấp các công cụ cho công việc bình thường như web browser, email client, editors,... và các công cụ quản lý hệ thống như device manager, package manager, system manager,... ở dạng giao diện đồ họa.

GNOME, KDE, Xfce đều dựa trên lõi của bộ giao thức X Window. Thực sự thì bộ giao thức X chỉ cung cấp phần lõi là các cửa sổ (window) chứ không có nhiều thành phần giao diện phụ như toolbar, scrollbar,... Do đó, các chương trình trên GNOME, KDE, Xfce đều phải xây dựng dựa vào một chương trình X client đặc biệt gọi là windows manager. Window manager bổ sung nhiều tính năng dựa trên bộ lõi X window, ví dụ như hình dạng và vị trí các thành phần giao diện, sự tương tác bằng chuột và phím. Window manager là thành phần đứng giữa X server và X client. Window manager qui định look-and-feel của GNOME, của KDE, và của Xfce. GNOME dựa trên windows manager là Metacity, KDE dựa trên KWin/KWM, còn Xfce dựa trên window manager là Xfwm.

Sơ đồ phụ thuộc:

X Client ---- Window Manager ----- X server ----- Mouse/Keyboard/Monitor

Window manager có nhiệm vụ thêm mắm thêm muối vào để cải thiện giao diện đơn sơ của X server cung cấp. Nhưng vì X server không cung cấp nên sẽ không hiểu biết về các thành phần giao diện đó, nên window manager cũng phải làm trung gian, diễn dịch các tương tác chuột, bàn phím.

Ví dụ: Bản thân giao thức X không có qui định đặc biệt gì về phím nhấn Alt-F4, nhưng nếu có thành phần Metacity (là window manager của GNOME) thì khi Metacity nhận được input từ X server là Alt-F4, nó sẽ diễn dịch thành lệnh đóng/thoát chương trình (giống như trên M$ Windows á) và gửi lệnh đó cho thằng X client (ví dụ Open Office). Thằng X client sẽ kết thúc thực thi. Khi đó, X server sẽ nhận được báo cáo hoàn thành nhiệm vụ từ thằng X client và tiến hành xóa cửa sổ của X client đang hiển thị trên monitor và cho hiện lại hoặc vẽ lại các thành phần bị che phía sau cửa sổ vừa xóa. Thế là trên màn hình sẽ có cảnh một cửa sổ bị đóng (cũng đồng nghĩa với thoát một chương trình) sau khi user nhấn phím Alt-F4.

Ví dụ này vừa mô tả hoạt động của window manager nhưng cũng thể hiện tương tác của X server và X client. Hi vọng nó dễ hiểu với bạn


===============================================
  
Trích:
                
                
           Nguyên văn bởi vietwow           View Post        
        
Bạn huy hoàng cho mình hỏi thế khi cài linux, nếu mình chỉ cài X-Windows mà ko cài KDE & GNOME hay Xfce thì sẽ ra sao nhỉ ? (chưa thử như tòm mò ^_^)
            
Không cài các thành phần giao diện là chuyện không đặc biệt đối với các hệ thống server. Chủ yếu là tiết kiệm tài nguyên vì các hệ thống server thường chỉ dùng để chạy các dịch vụ networking (như web server, ftp server, mail server), chứ không cần user tương tác nhiều như hệ thống desktop, do đó không cần thiết dùng giao diện đồ họa.
Bạn muốn thử giao diện X thuần túy (không có window manager) để xem lõi của X là gì thì có thể làm như sau (hướng dẫn này chỉ áp dụng cho hệ thống đã có cài X và có thể vào giao diện đồ họa bình thường như GNOME, KDE hoặc Xfce):
- Khởi động hệ thống ở single mode. Tùy theo hệ thống mà có thể có nhiều cách, đơn giản nhất là có thể sửa trực tiếp lệnh khởi động trong menu GRUB - lúc màn hình GRUB hiện ra, nhấn ESC để thấy các mục menu GRUB, sau đó chọn mục khởi động vào hệ thống Linux của bạn, nhấn E để edit mục đó. Bạn sẽ thấy một số mục con của mục đó, trong đó có dòng tương ứng với kernel (là dòng có kernel vmlinuz-***x), bạn nhấn E ở dòng đó để edit, chỉ cần thêm vào ở cuối cùng một chữ single, rồi nhấn Enter để xác nhận, sau đó nhấn tiếp B để khởi động.
- Sau khi hệ thống khởi động xong thì bạn sẽ đứng ở dấu nhắc lệnh (#). Chú ý là một số hệ thống Linux có thể yêu cầu bạn nhập password của tài khoản root thì mới vào dấu nhắc lệnh được.
- Tại dấu nhắc lệnh, bạn gõ X rồi Enter. Đó là lệnh thực thi X server. Bạn sẽ thấy một màn hình giao diện đồ họa trống trơn, chỉ có hình chữ X di chuyển tương ứng với con trỏ chuột.
- Trở về dấu nhắc lệnh. Bạn nhấn Ctrl-Alt-F1 để về lại dấu nhắc lệnh. Tại đó bạn thử thực thi một X client bất kì như là xterm, xclock, xcalc,... thì sẽ thấy giao diện đồ họa với lõi X, không có bất kì thành phần window manager nào cả.

  
Trích:
                
Với lại những loại windows manager mà bạn kể như Metacity, KWin/KWM, Xfwm ... sao trong lúc cài linux nó ko liệt kê tên những gói này nhỉ ? mình chỉ thấy nó liệt kê gói X-Windows, GNOME/KDE/Xfce ....
Metacity nằm trong GNOME. Khi bạn cài GNOME thì chắc chắn sẽ có nó. Nếu bạn muốn thấy Metacity thì mở cửa sổ terminal trong GNOME, rồi type vào lệnh sau:

ps -ef | grep metacity

Bạn sẽ thấy thông tin runtime của trình window manager metacity trên GNOME.

Tương tự, gói KWin/KWM thì nằm trong KDE, còn Xfwm thì nằm trong Xfce.

  
Trích:
                
                
  
Trích:
                
Window manager có nhiệm vụ thêm mắm thêm muối vào để cải thiện giao diện đơn sơ của X server cung cấp. Nhưng vì X server không cung cấp nên sẽ không hiểu biết về các thành phần giao diện đó, nên window manager cũng phải làm trung gian, diễn dịch các tương tác chuột, bàn phím
Bạn có thể giải thích câu này kỹ thêm ko ? ý bạn X Server ko cung cấp là ko cung cấp cái gì ?            
Bản thân X server chỉ cung cấp các thành phần giao diện đơn sơ như cửa sổ và vị trí cửa sổ, cũng như tương tác chuột và bàn phím với cửa sổ (move, close). X không có cung cấp thành phần menu, toolbar, context menu, hoặc là cái frame của windows (trên frame bạn sẽ thấy window title cũng như các nút như minimize, maximize), etc.

  
Trích:
                
Theo sơ đồ của bạn có phải vd ta làm 1 hành động gì đó liên quan đền giao diện đồ hoạ (vd như click vào xterm), đầu tiên con chuột sẽ gửi lệnh đến X server, sau đó X server request đến Window Manager, Windows Manager tiếp tục request đến X client mục tiêu (ở vd này là xterm), phải vậy ko nhỉ ? Nhưng theo mình nghĩ X Server là thằng "vẽ" ra giao diện nên lẽ ra nó phải là thằng cuối cùng chứ (tức là theo mình mô hình phải là X Server ---- Window Manager ----- X client ----- Mouse/Keyboard/Monitor -- Tác động con người) ? Mình hơi confuse chỗ này, mong bạn giải thích kỹ hơn
Thanx            
Bạn có thể nhìn vào hình vẽ (mình lấy từ trang wikipedia.org) để hình dung về hoạt động và tương tác của các thành phần trong hệ thống X.

Thành phần X server chịu trách nhiệm tương tác với bàn phím, chuột, và màn hình. Giả sử không có window manager, khi bạn thực thi một X client nào đó, chẳng hạn xterm, thì xterm phải connect tới X server theo giao thức qui ước trong X. X server sẽ chịu trách nhiệm vẽ trên màn hình cửa sổ của xterm. Khi bạn type hoặc dùng chuột tác động, X server sẽ diễn dịch những tác động mà nó hiểu, ví dụ như move cửa sổ hoặc đóng cửa sổ, còn những tác động không phải dành cho X server như qui ước trong giao thức X thì X server sẽ forward đến cho X client. X client sẽ nhận tác động đó (ví dụ như là nhập lệnh từ bàn phím), diễn dịch và xử lý tùy theo tác động đó. Nếu như kết quả có hiển thị ra màn hình thì X client sẽ gửi cho X server các yêu cầu vẽ lại màn hình. Qui trình này lặp lại trong suốt thời gian X client/server hoạt động.

Nếu như có thành phần window manager thì một số thành phần giao diện sẽ được bổ sung như toolbar, window title, menu,v.v... Những thành phần này không có trong giao thức X (tham khảo giao thức X ở đây), do đó window manager sẽ đảm nhiệm việc điều khiển X server vẽ các thành phần đó trên màn hình (chứ không phải X client yêu cầu X server vẽ), đồng thời cũng xử lý các tương tác của người dùng với các thành phần đó (vì X server và X client sẽ không hiểu gì về các thành phần mà window manager thêm vào). Cách thức thì như ví dụ ở trên Chú ý là bản thân window manager cũng là một X client
Tự viết Nhận xét(2) | Trích dẫn(0) | Đọc(138)
huyhuynh At 09/09/2008 16:24 :
Mình đang làm việc trên môi trường Linux, có gì xin Kevin chỉ giáo giúp. Địa chỉ mail của mình là e_huy_84@yahoo.com. Có gì Kevin cho mình xin mail của Kevin để được học hỏi thêm.
Thanks
huyhuynh At 09/09/2008 16:19 :
Bài viết rất có chiều sâu. Mình cho bạn 10 điểm
Phân trang 1/1 Trang đầu 1 Trang cuối
Viết nhận xét
Tên gọi [Đăng ký]
Mật khẩu Khách không cần mật khẩu
Địa chỉ web
Email
Mở HTML Mở UBB Mở hình vui Ẩn giấu Hãy nhớ