UKUI 桌面環(huán)境之窗口管理器
對于窗口管理器,可能大家第一反應(yīng)會很生疏,它與圖形桌面環(huán)境的其他組件如文件管理器、任務(wù)欄等相比,沒有那么顯眼,而是依托著應(yīng)用程序的窗口進(jìn)行體現(xiàn)。雖然不起眼,但是卻不能忽視了窗口管理器的重要作用,沒有了它,大部分應(yīng)用程序窗口將無法改變位置、大小,也無法進(jìn)行拖動,窗口的布局以及窗口之間的堆疊關(guān)系也無法控制。

圖1 無窗口管理器的桌面
接下來,就讓小編帶領(lǐng)大家進(jìn)一步了解窗口管理器吧!

圖2 整體圖
窗口管理器作用
窗口管理器核心功能是移動窗口,改變窗口大小,圖標(biāo)化(最小化)窗口和改變窗口層疊順序,通俗說就是對窗口進(jìn)行管理。
一般來說窗口管理器會對應(yīng)用程序窗口加上標(biāo)題欄,用以進(jìn)行窗口的拖拽操作,其中還有最小化,最大化,關(guān)閉按鈕,方便用戶快捷的操作窗口。
窗口管理器還會對窗口邊框進(jìn)行處理,設(shè)計邊框顏色和陰影效果來區(qū)分激活與非激活窗口。
同時大部分窗口管理器還提供了一些快捷鍵綁定,來實現(xiàn)窗口切換,工作區(qū)切換,顯示桌面等功能。
窗口管理器分類
根據(jù)窗口管理器繪制和更新窗口的方式,窗口管理器可以分為以下四類:
A:平鋪式(Tiling window manager): 以不重疊的方式將窗口一個挨一個組織的窗口管理器則稱為平鋪式窗口管理器,每個窗口會被自動調(diào)整大小來鋪滿整個屏幕。代表有l(wèi)arswm,Awesome, i3等,如果想要所有窗口都在可視范圍內(nèi),不想用快捷鍵進(jìn)行窗口切換來選擇窗口的話,平鋪式無疑是很好的選擇。
B:堆疊式窗口管理器(Stacking window manager): 通過特定的順序繪制窗口,并且各個窗口可以相互重疊的窗口管理器稱為堆疊式窗口管理器,代表有4Dwm,F(xiàn)VWM,Openbox等。
C:動態(tài)窗口管理器(Dynamic window manager): 結(jié)合上述兩種窗口管理器,可以動態(tài)切換窗口放置方式,代表有dwm,xmonad等。
D:復(fù)合窗口管理器(Compositing window manager): 復(fù)合窗口管理器提供了離屏緩沖區(qū),應(yīng)用程序窗口不是直接畫到屏幕上,而是先在顯示內(nèi)存中的一個離屏緩沖區(qū),然后由復(fù)合器進(jìn)行合成顯示到屏幕之上,目前主流的窗口管理器大部分都是該類型,代表有DWM(Windows), Quartz Compositor(macOS), Mutter(GNOME3), KWin(KDE)等。
ukwm
從優(yōu)麒麟16.04長線支持版開始,我們從GNOME3中fork了mutter,并針對我們版本的使用環(huán)境與一些問題和反饋,進(jìn)行了定制,形成了現(xiàn)在的ukwm。

圖3 結(jié)構(gòu)介紹
ukwm的主要結(jié)構(gòu)如圖所示,為了增強(qiáng)3D性能,引入了clutter和cogl兩個庫。clutter是GNOME一個基于GObject支持3D硬件加速的圖形開發(fā)套件,通過使用OpenGL或者OpenGL ES來進(jìn)行渲染,并且提供了動畫接口,能夠以此實現(xiàn)一些所需的動畫效果;cogl則是一個很小的可以使用顯卡硬件加速的開源圖形庫。通過這兩個庫,實現(xiàn)了基于OpenGL 的3D硬件加速支持,從而增強(qiáng)了系統(tǒng)3D顯示性能。
backend是一個后端,主要是針對硬件設(shè)備如顯示器,鼠標(biāo),鍵盤等進(jìn)行處理。鑒于新一代圖形顯示服務(wù)Wayland技術(shù)日益成熟,ukwm除了支持傳統(tǒng)的X顯示服務(wù)X11外,也支持了Wayland,因此通過GObject類抽象出統(tǒng)一接口,將與顯示服務(wù)器相關(guān)的部分抽離出來,在x11模塊中實現(xiàn)Xorg相關(guān)代碼,在Native中實現(xiàn)Wayland相關(guān)代碼,使得代碼精簡復(fù)用性大大提高。
core是ukwm核心部分,是窗口管理器的主要功能的實現(xiàn),包含了各種初始化動作,屏幕處理,鍵盤綁定,輸入事件處理,對窗口動作(如大小,打開關(guān)閉等)、窗口放置、窗口層級,窗口邊界約束,工作區(qū)處理等模塊。這里,我們解決了某些自帶標(biāo)題欄的彈窗無法最小化問題,對窗口邊界約束進(jìn)行了定制優(yōu)化,以更好地兼容UKUI桌面環(huán)境。
在compositor中,主要負(fù)責(zé)對于窗口重定向和復(fù)合顯示功能,并且對窗口內(nèi)容,窗口重繪,陰影效果等進(jìn)行處理。除此之外,compositor中還有很重要的一個plugin插件模塊,這使其成為了一個插件式的窗口管理器,可擴(kuò)展性大大增強(qiáng),GNOME3的gnome-shell就是通過插件與mutter高度糅合在一起,我們通過插件,重寫了alt+tab窗口切換功能,更加貼近用戶的使用習(xí)慣,在彈窗中平鋪每個窗口,并同時顯示窗口內(nèi)容,圖標(biāo)和標(biāo)題,更有利于區(qū)分和準(zhǔn)確選擇要切換的窗口,如下圖所示:

圖4 窗口切換
UI方面,延續(xù)了gtk的主題風(fēng)格,對于框架Frame進(jìn)行了一些修整,使其與整個桌面環(huán)境更加搭配,并且增加了監(jiān)聽函數(shù),監(jiān)聽到用戶切換主題時,對每個窗口框架進(jìn)行重繪,實現(xiàn)標(biāo)題欄及邊框跟隨主題變換。在18.10中,我們新增了一套黑色主題作為默認(rèn)主題,以更加簡潔的界面來顯示窗口,通過窗口邊框顏色和陰影效果來區(qū)分激活與非激活窗口,如下圖所示:

圖5 黑色主題中窗口管理器體現(xiàn)
另外我們保留了藍(lán)色主題,并且進(jìn)行了微調(diào),使其更貼近我們的設(shè)計理念。
圖6 藍(lán)色主題下窗口管理器體現(xiàn)
常用快捷鍵
上文說到窗口管理器一般還管理著一些與窗口相關(guān)的快捷鍵,下面列舉了優(yōu)麒麟上常用的窗口相關(guān)快捷鍵,相信通過這些快捷鍵,我們能更加方便的對于窗口進(jìn)行操作:
Ctrl+Alt+D 顯示桌面
Ctrl+Alt+方向鍵(左右) 切換工作區(qū)
Alt+Tab 正序切換窗口
Alt+Shift+Tab 倒序切換窗口
Alt+F4 關(guān)閉窗口
Alt+F9 最小化窗口
Alt+F10 最大化窗口
窗口管理器是個復(fù)雜的組件,是上層應(yīng)用窗口與X之間的一座重要橋梁,因此其涉及到諸多方面,從硬件到軟件,從2D到3D,從古老的X11到新興的Wayland,甚至還包含與各類桌面組件的交互??偟膩碚f,優(yōu)麒麟窗口管理器秉持簡潔,輕便的理念,并且緊跟了前沿的技術(shù)變更,在增強(qiáng)了性能的同時,也保證了良好的兼容性,歡迎各位用戶試用以及提出你們寶貴的意見!
-
[簡訊] 優(yōu)麒麟線下技術(shù)研討會在長沙召開![2017-12-06]
-
為優(yōu)麒麟打call,18.04LTS將迎來新起點![2017-11-30]
-
優(yōu)麒麟使用教程第三期:Windows 平臺 U 盤啟動盤制作[2019-06-27]
-
優(yōu)麒麟 16.04.2 LTS 版本發(fā)布![2017-02-22]
-
優(yōu)麒麟 19.10 將于本月結(jié)束生命周期[2020-07-10]
-
優(yōu)麒麟榮獲 CSDN IT 技術(shù)影響力之星“年度開源項目”獎項![2022-04-13]
-
銀河麒麟操作系統(tǒng)社區(qū)版4.0.2-SP2正式發(fā)布![2017-12-19]
-
官宣來了,優(yōu)麒麟官網(wǎng)新版正式上線![2019-09-29]
-
神獸麒麟踏雪而來—優(yōu)麒麟16.10發(fā)布派對暨UKUI體驗交流會[2016-11-29]
-
優(yōu)麒麟 25.04 版本正式發(fā)布![2025-04-18]
-
優(yōu)麒麟20.10版本發(fā)布--簡而美,華而實[2020-10-23]
-
優(yōu)麒麟17.10正式版發(fā)布,全新風(fēng)格,全新體驗![2017-10-20]
-
優(yōu)麒麟19.10發(fā)布派對暨新版體驗交流會—長沙站[2019-11-06]
-
優(yōu)麒麟18.10正式版發(fā)布,讓我們從心開始![2018-10-19]
-
優(yōu)麒麟 20.04 LTS Pro(0620更新版本),麒麟移動應(yīng)用環(huán)境上線[2021-06-22]
-
優(yōu)麒麟 20.04-V3 發(fā)布,修復(fù)加密pdf預(yù)覽崩潰等問題[2020-06-13]
-
優(yōu)麒麟 19.10 軟件商店,全新改版,化繁為簡[2019-10-22]
-
【發(fā)布派對】操作系統(tǒng)也要中國風(fēng)! [2015-11-23]
-
Ubuntu/優(yōu)麒麟 19.04“優(yōu)客動起來,大家來找茬”活動成功舉行[2019-03-19]