XWindow、Server、Client和QT、GTK之間的關系


X WINDOW

    X Window從邏輯上分為三層:X Server、X Client和X協議。最底層的X Server(X服務器)主要處理輸入/輸出信息並維護相關資源,它接受來自鍵盤、鼠標的操作並將它交給X Client(X客戶端)作出反饋,而由X Client傳來的輸出信息也由它來負責輸出;最上層的X Client則提供一個完整的GUI界面,負責與用戶的直接交互(KDE、GNOME都是一個X Client)。X協議則是銜接X Server與X Client的通訊協議,它的任務是充當這兩者的溝通管道。盡管UNIX廠商采用相同的X Window,但終端的X Client並不相同。

XLIB

    在X Window系統中進行圖形編程時,可以選擇直接使用Xlib。Xlib實際上是對底層X協議的封裝,可通過該函數庫進行一般的圖形輸出。對一般用戶而言,由於Xlib的接口太原始而且復雜,因此一般的圖形程序選擇其他高級一些的圖形庫作為基礎。比如GTK、QT等等。這兩個函數庫同時還是一些高級的圖形用戶界面的支持函數庫。

KDE和Gnome

    KDE早於Gnome出現,但是KDE基於的Qt是不遵循GPL開源協議的,Qt是一個跨平台的C++圖形用戶界面庫 ,它是挪威TrollTech公司的產品(2008年底被NOKIA收購)。 Qt具有優良的跨平台特性(支持Windows、Linux、各種UNIX、OS390和QNX等)、面向對象機制以及豐富的API,同時也可支持2D/3D渲染和OpenGL API。在當時的同類圖形用戶界面庫產品中,Qt的功能最為強大。但底層的基礎 Qt卻是一個不遵循GPL的商業軟件,這就給KDE上了一道無形的枷鎖並帶來可能的法律風險。一大批自由程序員對KDE項目的決定深為不滿,它們認為利用非自由軟件開發違背了GPL的精神。於是這些GNU的狂熱信徒兵分兩路:其中一部分人去制作Harmonny,試圖重寫出一套兼容Qt的替代品,這個項目雖然技術上相對簡單,但卻沒有獲得KDE項目的支持;另一路人馬則決定重新開發一套名為“GNOME(GNU Network Object Environment)”的圖形環境來替代KDE。

    GNOME選擇完全遵循GPL的GTK圖形界面庫為基礎,因此我們也一般將GNOME和KDE兩大陣營稱為GNOME/GTK和 KDE/Qt。與Qt基於C++語言不同,GTK采用較傳統的C語言 ,雖然C語言不支持面向對象設計,看起來比較落后,但當時熟悉C語言的開發者遠遠多於熟悉C++的開發者。加之GNOME/GTK完全遵循GPL版權公約,吸引了更多的自由程序員參與。

Qt、GTK 和KDE、GNOME的關系

    為了方便開發人員編寫X-clients,就有了Xlib來封裝X協議;Xlib還不夠方便,於是就有了QT和QTK,它們提供了很多窗口控件(widgets)。為了方便用戶 ,就出現了Gnome和KDE等桌面管理系統。一般來說,linux用戶看到的界面就是其中之一了。Gnome用的是QTK庫,KDE用的是QT庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM