玖玖资源站亚洲av_日本乱偷中文字幕一二三区_久久这里只有精品98_亚洲特级黄片视频_男女很舒服爽视频免费_国产一二三四2021精字窝_国产高潮白浆一区_自拍日本高清三级_秘书高跟黑色丝袜国产在线_亚洲A v永久无码精品网站色欲

NEWS

新聞

了解優(yōu)麒麟最新資訊,關(guān)注社區(qū)和產(chǎn)品動態(tài)。

NEWS

Learn about the latest news.

UKUI 桌面環(huán)境之窗口管理器

2020-09-08 15:59:34

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

UKUI桌面環(huán)境之窗口管理器

圖1 無窗口管理器的桌面 

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

UKUI桌面環(huá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。

UKUI桌面環(huán)境之窗口管理器

 圖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)確選擇要切換的窗口,如下圖所示: 

UKUI桌面環(huá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ū)分激活與非激活窗口,如下圖所示: 

UKUI桌面環(huán)境之窗口管理器

圖5 黑色主題中窗口管理器體現(xiàn) 

另外我們保留了藍(lán)色主題,并且進(jìn)行了微調(diào),使其更貼近我們的設(shè)計理念。

UKUI桌面環(huán)境之窗口管理器 

圖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)了性能的同時,也保證了良好的兼容性,歡迎各位用戶試用以及提出你們寶貴的意見!