優(yōu)麒麟Linux發(fā)布任務(wù)欄新版托盤協(xié)議 可大幅提升開(kāi)發(fā)者開(kāi)發(fā)效率
優(yōu)麒麟官方今天帶來(lái)了任務(wù)欄新版托盤協(xié)議(SNI)介紹。

在 Linux 操作系統(tǒng)中,“系統(tǒng)托盤區(qū)域”是在給定的 X 屏幕上運(yùn)行的應(yīng)用程序,可以顯示正在運(yùn)行的應(yīng)用程序提供的小圖標(biāo)。系統(tǒng)托盤是一個(gè) X 客戶端,在給定的屏幕上擁有一個(gè)特殊的管理器選擇并提供了容器窗口。Windows 將此功能稱為“通知區(qū)域”,舊版托盤協(xié)議就是通過(guò) X 服務(wù)直接獲取應(yīng)用信息,在開(kāi)發(fā)上難度很大。
新版托盤規(guī)范定義了可視項(xiàng)的管理,通常是用于向用戶報(bào)告應(yīng)用程序狀態(tài)或提供對(duì)該應(yīng)用程序執(zhí)行的常見(jiàn)操作的快速訪問(wèn)的圖標(biāo)。它旨在作為 Freedesktop 的桌面通知規(guī)范的補(bǔ)充但不直接相關(guān),旨在替代 Freedesktop 系統(tǒng)托盤規(guī)范,更加面向模型視圖,為工作區(qū)提供更多自由,如何以圖形方式表示與它的視覺(jué)風(fēng)格語(yǔ)言,這種方式(SNI)是將 systemtray 的調(diào)用封裝進(jìn) dbus 總線中,提升了開(kāi)發(fā)者的開(kāi)發(fā)效率。
從用戶角度來(lái)看新版托盤協(xié)議(SNI)從表面上看不出有什么太大的變化,在開(kāi)發(fā)的角度上是將最上層的應(yīng)用與下層基礎(chǔ)庫(kù)的分離。
實(shí)現(xiàn)方式
新版托盤協(xié)議主要是通過(guò)三個(gè)庫(kù)來(lái)實(shí)現(xiàn)的:
dbusmenu 是實(shí)現(xiàn)應(yīng)用程序和面板(#5)之間傳輸協(xié)議的庫(kù)。dbusmenu 已經(jīng)被用于開(kāi)發(fā)會(huì)話菜單,并且也是在 Lucid 中實(shí)現(xiàn)一些新系統(tǒng)菜單的構(gòu)建塊。
indicator-applet 是將托管應(yīng)用程序指示器區(qū)域的面板小程序。指示器小程序是作為消息菜單項(xiàng)目的一部分開(kāi)發(fā)的,旨在成為面板指示器的通用容器 。libappindicator 是一個(gè)新的庫(kù),用于幫助應(yīng)用程序端更改;它確實(shí)注冊(cè)了圖標(biāo)和菜單,并在內(nèi)部使用 dbusmenu 通過(guò) dbus 發(fā)布上下文菜單。雖然它是 Gnome 桌面的新庫(kù),但它基于在 KDE 項(xiàng)目中設(shè)計(jì)的用于更新系統(tǒng)托盤協(xié)議的協(xié)議(上面的“信令協(xié)議”部分)。libappindicator 采用并擴(kuò)展了該協(xié)議,并將其與 dbusmenu 連接以提供應(yīng)用程序遷移其代碼所需的全套服務(wù) 。
SNI 工作流程
3.1 托盤應(yīng)用托盤封裝
通過(guò) dbusmenu,indicator-applet,libappindicator 將托盤應(yīng)用的屬性,方法,以及信號(hào)注冊(cè)到 dbus 總線上,在任務(wù)欄上進(jìn)行 dbus 監(jiān)聽(tīng)解析來(lái)實(shí)現(xiàn)與托盤應(yīng)用交互。
注冊(cè) item 的方法有:

屬性有:

信號(hào)有:

3.2 注冊(cè) dbus 服務(wù)
當(dāng)拿到了托盤應(yīng)用的信息然后就需要對(duì)信息進(jìn)行封裝通過(guò) dbus 的方式發(fā)送給任務(wù)欄,在任務(wù)欄上會(huì)注冊(cè)一個(gè) statusnotifierWatcher 的服務(wù)用來(lái)檢測(cè)托盤信息的,每當(dāng)托盤應(yīng)用打開(kāi)的時(shí)候都會(huì)調(diào)用 statusnotifierWatcher 的 RegisterStatusNotifierItem 方法在任務(wù)欄的托盤區(qū)域進(jìn)行按鈕的注冊(cè),當(dāng)托盤應(yīng)用關(guān)閉的時(shí)候會(huì)調(diào)用任務(wù)欄 unRegisterStatusNotifierItem 方法來(lái)取消在任務(wù)欄上的注冊(cè)。
3.3 調(diào)用 dbus 的方法
當(dāng)用戶對(duì)托盤應(yīng)用進(jìn)行操作的時(shí)候,會(huì)調(diào)用相應(yīng) dbus 方法,并激活相關(guān)事件。例如左鍵點(diǎn)擊會(huì)觸發(fā)“激活窗口”的事件,右鍵單擊會(huì)觸發(fā)“顯示右鍵菜單”的事件,懸浮會(huì)觸發(fā)“顯示提示語(yǔ)”的事件
SNI 協(xié)議使用的方式
4.1 注冊(cè) statusnotifierHost 的 dbus
在一個(gè)桌面上為了防止托盤應(yīng)用會(huì)在多個(gè)地方注冊(cè)成托盤,用一個(gè) dbus 來(lái)讓托盤應(yīng)用只能注冊(cè)到一個(gè)托盤來(lái)確保不會(huì)出現(xiàn)功能上不穩(wěn)定。
4.2 注冊(cè) statusnotifierWatch 的 dbus
用來(lái)檢測(cè)托盤應(yīng)用的打開(kāi)和關(guān)閉,statusnotifierWatch 的 RegisterStatusNotifierItem 和 unRegisterStatusNotifierItem 是協(xié)議層與應(yīng)用層來(lái)進(jìn)行交互的信號(hào),通過(guò) RegisterStatusNotifierItem 方法來(lái)獲取應(yīng)用注冊(cè)的 dbus 的服務(wù)名。
4.3 對(duì)托盤應(yīng)用的 dbus 進(jìn)行調(diào)用
上文說(shuō)的鼠標(biāo)事件點(diǎn)擊調(diào)用槽函數(shù)是一部分,還可以監(jiān)聽(tīng)托盤應(yīng)用的 signal 如圖標(biāo)變換,提示信息變化等。如果需要托盤應(yīng)用的窗口以及其他屬性,還可以通過(guò) dbus 來(lái)獲取 properties。
4.4 在優(yōu)麒麟桌面環(huán)境下使用
Qt 應(yīng)用程序可以在自己的應(yīng)用程序里創(chuàng)建一個(gè) QSystemtrayIcon 類,并為這個(gè)類似設(shè)置圖標(biāo)和事件槽函數(shù),在任務(wù)欄上會(huì)自動(dòng)生成托盤圖標(biāo)。
Gtk 程序通過(guò)
來(lái)注冊(cè)應(yīng)用為托盤應(yīng)用,即可實(shí)現(xiàn)在任務(wù)欄上顯示托盤圖標(biāo)。
注意事項(xiàng)
5.1 在 dbus 調(diào)用的時(shí)候可能會(huì)出現(xiàn)延時(shí),必要的話可以考慮多線程處理,避免界面阻塞。
5.2 由于 dbus 調(diào)用是異步調(diào)用出現(xiàn)響應(yīng)慢問(wèn)題,在讀取托盤應(yīng)用信息是可能會(huì)需要添加延時(shí)讀取,不然會(huì)出現(xiàn)信息讀取不到的地方。
標(biāo)簽: 優(yōu)麒麟 Linux 任務(wù)欄新版托盤協(xié)議 開(kāi)發(fā)效率 容器窗口
2022-01-12 16:50:28
2022-01-12 14:16:53
2022-01-12 09:59:21
2022-01-12 08:30:09
2022-01-12 08:28:09
2022-01-12 08:26:11
2022-01-12 08:24:25
2022-01-12 08:22:56
2022-01-12 08:21:28
2022-01-12 08:19:22
2022-01-12 08:15:03
2022-01-12 08:13:37
2022-01-12 08:12:23
2022-01-11 16:27:40
2022-01-11 12:02:31 熱門文章
- 1消息稱Win11調(diào)整硬件安裝需求之后可運(yùn)行5.25寸軟盤
- 2蘋果iPad mini 6屏幕刷新率只有60Hz屏幕或不能滿足游戲需求
- 3三星永久關(guān)閉Tizen應(yīng)用商店:目前相關(guān)手機(jī)用戶已經(jīng)無(wú)法訪問(wèn)
- 4三星Galaxy S22 Ultra手寫筆延遲突破2.8毫秒!成品預(yù)計(jì)今年2月推出
- 5Win11照片應(yīng)用迎來(lái)更新:重新優(yōu)化調(diào)整圖片編輯功能
- 6Chrome 97正式版預(yù)計(jì)年內(nèi)2月1日轉(zhuǎn)正 修復(fù)數(shù)十個(gè)安全BUG
- 7消息稱iPhone 14 Pro前置攝像頭將采用藥丸屏設(shè)計(jì) FaceID轉(zhuǎn)移到顯示屏下
- 8對(duì)不起,我恐怕不能這么做?用戶發(fā)現(xiàn)蘋果Siri無(wú)法為Apple Music歌曲評(píng)分
- 9微信視頻號(hào)直播推出扶持不少于10萬(wàn)個(gè)優(yōu)質(zhì)商家激勵(lì)計(jì)劃 引導(dǎo)私域用戶直播
- 10微信支持?jǐn)?shù)字人民幣支付:將新增“使用數(shù)字人民幣付款”選項(xiàng)
熱點(diǎn)專題
-
絕版旗艦堅(jiān)果R2獲更新:TNT連...1月7日消息,堅(jiān)果R2用戶在百度貼吧反映,堅(jiān)果R2手機(jī)獲得了SmartisanOS更新,版本號(hào)為8 5 1,新版系統(tǒng)... -
iPhone 13 Pro需求產(chǎn)能供不...富士康鄭州工廠又在招工了,iPhone的產(chǎn)能缺口看來(lái)很大。據(jù)悉,iPhone 13 Pro需求旺盛,最大組裝廠富士... -
百度投資生物醫(yī)藥公司瑞順生...企查查APP顯示,1月4日,廣東瑞順生物技術(shù)有限公司發(fā)生工商變更,新增百度關(guān)聯(lián)公司三亞百川致新私募股權(quán)... -
盜版軟件Popcorn Time宣布關(guān)...1月5日 消息:盜版軟件Popcorn Time宣布關(guān)閉了。這個(gè)通過(guò)盜版BitTorrent資源向用戶傳遞電影內(nèi)容,并承... -
快手12月份打擊私單交易等詐...1月5日消息,日前,快手發(fā)布了最新一期關(guān)于嚴(yán)厲打擊詐騙類帳號(hào)的公告,該平臺(tái) 12 月份共處罰詐騙類帳... -
再也不怕磁盤占用高了!微軟W...微軟的Office辦公軟件是每個(gè)打工人幾乎都離不開(kāi)的,它實(shí)際上是包括Word、Excel、PPT等多種軟件在內(nèi)的全... -
黑莓BlackBerry OS停止運(yùn)行...1月4日,黑莓打造的BlackBerry OS停服。官方稱,黑莓不再提供適用于BlackBerry7 1OS及更早版本、Black... -
Intel預(yù)熱12代雞血版i9-12900...今天晚上,Intel將會(huì)發(fā)布12代酷睿桌面版非K系列、移動(dòng)版,應(yīng)該會(huì)有博銳商務(wù)版,以及一個(gè)特殊型號(hào):i9-12... -
曝5G版iPhone SE將于上半年...除了挖孔屏iPhone 14、M2處理器MacBook Air、40核CPU+128核GPU的Mac Pro等產(chǎn)品,蘋果名記Mark Gurma... -
曝iPhone 14有望取消劉海設(shè)...對(duì)于iPhone 14來(lái)說(shuō),按照蘋果一貫的更新節(jié)奏看,這一代新機(jī)的外形要發(fā)生變化了,而去掉劉海,改用打孔...
Copy 2006-2020 財(cái)訊中國(guó) 版權(quán)所有<豫ICP備17019456號(hào)-9
聯(lián)系網(wǎng)站:52 78 229 @qq.com
營(yíng)業(yè)執(zhí)照公示信息
聲明:本站所有文章、數(shù)據(jù)僅供參考,使用前務(wù)請(qǐng)仔細(xì)閱讀法律聲明,風(fēng)險(xiǎn)自負(fù)。

相關(guān)新聞