本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種應(yīng)用窗口的信息獲取方法、裝置及計算設(shè)備。
背景技術(shù):
隨著計算機技術(shù)的不斷發(fā)展,計算機在工作和生活中扮演著的角色也越來越重要。用戶在使用計算機時,其桌面系統(tǒng)上一般都存在一個重要的組件,可稱為dock或panel,其主要作用就是將屏幕上的應(yīng)用窗口抽象成一個圖標(biāo)并并列放置于屏幕中的一個固定地方,常見于屏幕下方的位置。這種被抽象的圖標(biāo)一般擁有標(biāo)示當(dāng)前焦點窗口、快速關(guān)閉、換出特定窗口和直觀清楚了解當(dāng)前應(yīng)用窗口的功能。
然而,應(yīng)用窗口的圖標(biāo)以及名稱等信息在Linux系統(tǒng)下卻沒有統(tǒng)一的規(guī)范或方法來獲取?,F(xiàn)存的實現(xiàn)方法往往存在準(zhǔn)確率較低的問題,即無法準(zhǔn)確實時獲取應(yīng)用窗口正在使用的圖標(biāo)等信息,而該類信息在目前通常是通過一種名為desktop文件的元信息描述文件來記錄保存的。
技術(shù)實現(xiàn)要素:
為此,本發(fā)明提供一種應(yīng)用窗口的信息獲取方案,以力圖解決或者至少緩解上面存在的問題。
根據(jù)本發(fā)明的一個方面,提供一種應(yīng)用窗口的信息獲取方法,適于在運行Linux系統(tǒng)的計算設(shè)備中執(zhí)行,該方法包括如下步驟:首先,獲取當(dāng)前應(yīng)用窗口的窗口屬性;判斷窗口屬性中是否包括進程ID;如果窗口屬性中包括進程ID,則獲取相關(guān)的進程屬性;根據(jù)窗口屬性和進程屬性,與對應(yīng)的第一匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率;獲取匹配準(zhǔn)確率最高的應(yīng)用ID;通過匹配準(zhǔn)確率最高的應(yīng)用ID獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,窗口屬性通過X11的API獲取,包括應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID中的至少一種。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,進程屬性通過proc文件系統(tǒng)獲取,包括進程啟動參數(shù)、進程用戶、進程對應(yīng)的應(yīng)用路徑、進程的環(huán)境變量中的至少一種。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,根據(jù)窗口屬性和進程屬性,與對應(yīng)的匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率包括:將待匹配的窗口屬性和進程屬性作為輸入?yún)?shù)傳遞給匹配器,由匹配器根據(jù)第一匹配文件對輸入?yún)?shù)進行匹配分析以輸出匹配結(jié)果;根據(jù)匹配器輸出的匹配分析結(jié)果獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,通過匹配準(zhǔn)確率最高的應(yīng)用ID獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息包括:獲取匹配準(zhǔn)確率最高的應(yīng)用ID對應(yīng)的desktop文件;通過desktop文件獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,還包括通過Xorg對應(yīng)用窗口的變動進行監(jiān)聽,以更新當(dāng)前應(yīng)用窗口。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法中,還包括:如果窗口屬性中不包括進程ID,則根據(jù)窗口屬性,與對應(yīng)的第二匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第二匹配文件包括窗口屬性與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。
根據(jù)本發(fā)明的又一個方面,提供一種應(yīng)用窗口的信息獲取裝置,適于駐留在運行Linux系統(tǒng)的計算設(shè)備中,該裝置包括第一獲取模塊、判斷模塊、第二獲取模塊、匹配模塊、第三獲取模塊和第四獲取模塊。其中,第一獲取模塊,適于獲取當(dāng)前應(yīng)用窗口的窗口屬性;判斷模塊,適于判斷窗口屬性中是否包括進程ID;第二獲取模塊,適于當(dāng)窗口屬性中包括進程ID時,獲取相關(guān)的進程屬性;匹配模塊,適于根據(jù)窗口屬性和進程屬性,與對應(yīng)的第一匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率;第三獲取模塊,適于獲取匹配準(zhǔn)確率最高的應(yīng)用ID;第四獲取模塊,適于通過匹配準(zhǔn)確率最高的應(yīng)用ID獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,窗口屬性通過X11的API獲取,包括應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID中的至少一種。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,進程屬性通過proc文件系統(tǒng)獲取,包括進程啟動參數(shù)、進程用戶、進程對應(yīng)的應(yīng)用路徑、進程的環(huán)境變量中的至少一種。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,匹配模塊進一步適于:將待匹配的窗口屬性和進程屬性作為輸入?yún)?shù)傳遞給匹配器,由匹配器根據(jù)第一匹配文件對輸入?yún)?shù)進行匹配分析以輸出匹配結(jié)果;根據(jù)匹配器輸出的匹配分析結(jié)果獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,第四獲取模塊進一步適于:獲取匹配準(zhǔn)確率最高的應(yīng)用ID對應(yīng)的desktop文件;通過desktop文件獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,還包括監(jiān)聽模塊,適于通過Xorg對應(yīng)用窗口的變動進行監(jiān)聽,以更新當(dāng)前應(yīng)用窗口。
可選地,在根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置中,匹配模塊還適于當(dāng)窗口屬性中不包括進程ID時,根據(jù)窗口屬性,與對應(yīng)的第二匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第二匹配文件包括窗口屬性與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。
根據(jù)本發(fā)明的又一個方面,還提供一種計算設(shè)備,包括根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置。
根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取的技術(shù)方案,首先獲取當(dāng)前應(yīng)用窗口的窗口屬性并判斷其中是否包括進程ID,若包括進程ID則獲取相關(guān)的進程屬性,通過與對應(yīng)的第一匹配文件進行匹配來獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,從中選出匹配準(zhǔn)確率最高的應(yīng)用ID,從而獲取其對應(yīng)的應(yīng)用窗口的名稱和圖標(biāo)信息。上述技術(shù)方案中,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID之間的匹配關(guān)系列表,通過與這一列表進行匹配,最后篩選出窗口屬性和進程屬性所對應(yīng)的應(yīng)用ID,并根據(jù)匹配準(zhǔn)確率獲取匹配性最高的應(yīng)用ID,進而查找到對應(yīng)的desktop文件并從中獲取應(yīng)用窗口對應(yīng)的圖標(biāo)及名稱,具有較高的準(zhǔn)確率,實現(xiàn)了準(zhǔn)確實時獲取應(yīng)用窗口使用的圖標(biāo)和名稱信息。
附圖說明
為了實現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標(biāo)記通常指代相同的部件或元素。
圖1示出了根據(jù)本發(fā)明的一個實施例的計算設(shè)備100的示意圖;
圖2示出了根據(jù)本發(fā)明一個實施例的應(yīng)用窗口的信息獲取方法200的流程圖;以及
圖3示出了根據(jù)本發(fā)明的一個實施例的應(yīng)用窗口的信息獲取裝置300的示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
圖1是示例計算設(shè)備100的框圖。在基本的配置102中,計算設(shè)備100典型地包括系統(tǒng)存儲器106和一個或者多個處理器104。存儲器總線108可以用于在處理器104和系統(tǒng)存儲器106之間的通信。
取決于期望的配置,處理器104可以是任何類型的處理,包括但不限于:微處理器(μP)、微控制器(μC)、數(shù)字信息處理器(DSP)或者它們的任何組合。處理器104可以包括諸如一級高速緩存110和二級高速緩存112之類的一個或者多個級別的高速緩存、處理器核心114和寄存器116。示例的處理器核心114可以包括運算邏輯單元(ALU)、浮點數(shù)單元(FPU)、數(shù)字信號處理核心(DSP核心)或者它們的任何組合。示例的存儲器控制器118可以與處理器104一起使用,或者在一些實現(xiàn)中,存儲器控制器118可以是處理器104的一個內(nèi)部部分。
取決于期望的配置,系統(tǒng)存儲器106可以是任意類型的存儲器,包括但不限于:易失性存儲器(諸如RAM)、非易失性存儲器(諸如ROM、閃存等)或者它們的任何組合。系統(tǒng)存儲器106可以包括操作系統(tǒng)120、一個或者多個應(yīng)用122以及程序數(shù)據(jù)124。在一些實施方式中,應(yīng)用122可以布置為在操作系統(tǒng)上利用程序數(shù)據(jù)124進行操作。
計算設(shè)備100還可以包括有助于從各種接口設(shè)備(例如,輸出設(shè)備142、外設(shè)接口144和通信設(shè)備146)到基本配置102經(jīng)由總線/接口控制器130的通信的接口總線140。示例的輸出設(shè)備142包括圖形處理單元148和音頻處理單元150。它們可以被配置為有助于經(jīng)由一個或者多個A/V端口152與諸如顯示器或者揚聲器之類的各種外部設(shè)備進行通信。示例外設(shè)接口144可以包括串行接口控制器154和并行接口控制器156,它們可以被配置為有助于經(jīng)由一個或者多個I/O端口158和諸如輸入設(shè)備(例如,鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備)或者其他外設(shè)(例如打印機、掃描儀等)之類的外部設(shè)備進行通信。示例的通信設(shè)備146可以包括網(wǎng)絡(luò)控制器160,其可以被布置為便于經(jīng)由一個或者多個通信端口164與一個或者多個其他計算設(shè)備162通過網(wǎng)絡(luò)通信鏈路的通信。
網(wǎng)絡(luò)通信鏈路可以是通信介質(zhì)的一個示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波或者其他傳輸機制之類的調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,并且可以包括任何信息遞送介質(zhì)?!罢{(diào)制數(shù)據(jù)信號”可以這樣的信號,它的數(shù)據(jù)集中的一個或者多個或者它的改變可以在信號中編碼信息的方式進行。作為非限制性的示例,通信介質(zhì)可以包括諸如有線網(wǎng)絡(luò)或者專線網(wǎng)絡(luò)之類的有線介質(zhì),以及諸如聲音、射頻(RF)、微波、紅外(IR)或者其它無線介質(zhì)在內(nèi)的各種無線介質(zhì)。這里使用的術(shù)語計算機可讀介質(zhì)可以包括存儲介質(zhì)和通信介質(zhì)二者。
計算設(shè)備100可以實現(xiàn)為小尺寸便攜(或者移動)電子設(shè)備的一部分,這些電子設(shè)備可以是諸如蜂窩電話、個人數(shù)字助理(PDA)、個人媒體播放器設(shè)備、無線網(wǎng)絡(luò)瀏覽設(shè)備、個人頭戴設(shè)備、應(yīng)用專用設(shè)備、或者可以包括上面任何功能的混合設(shè)備。計算設(shè)備100還可以實現(xiàn)為包括桌面計算機和筆記本計算機配置的個人計算機。在一些實施例中,計算設(shè)備100被配置為執(zhí)行根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取方法。應(yīng)用122包括根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取裝置300。
圖2示出了根據(jù)本發(fā)明一個實施例的應(yīng)用窗口的信息獲取方法200的流程圖。應(yīng)用窗口的信息獲取方法200適于在計算設(shè)備(例如圖1所示的計算設(shè)備100)中執(zhí)行。
如圖2所示,方法200始于步驟S210。在步驟S210中,獲取當(dāng)前應(yīng)用窗口的窗口屬性,其中窗口屬性通過X11的API獲取,包括應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID中的至少一種。在本實施例中,在桌面系統(tǒng)中可能存在多個窗口同時在桌面上顯示,一般以浮動在最上面的窗口為焦點作為當(dāng)前窗口,可以通過X11的API在RootWindow的_NET_CLIENT_LIST屬性中獲取,而窗口屬性中,應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID分別用_NET_WM_CLASS、_NET_WM_NAME、_NET_WM_WINDOW_TYPE、_NET_WM_ICON_NAME和_NET_WM_PID這些參數(shù)來表示。
隨后,進入步驟S220。在步驟S220中,判斷窗口屬性中是否包括進程ID。在本實施例中,判斷獲取到的當(dāng)前應(yīng)用窗口的窗口屬性中是否包括_NET_WM_PID。
在步驟S230中,如果窗口屬性中包括進程ID,則獲取相關(guān)的進程屬性,其中進程屬性通過proc文件系統(tǒng)獲取,包括進程啟動參數(shù)、進程用戶、進程對應(yīng)的應(yīng)用路徑、進程的環(huán)境變量中的至少一種。在本實施例中,對于大部分的應(yīng)用而言,當(dāng)開始運行應(yīng)用程序后,在創(chuàng)建窗口時,根據(jù)應(yīng)用程序中進程的請求通過X Server將進程ID,即_NET_WM_PID寫入到窗口屬性中,即將其與當(dāng)前應(yīng)用窗口關(guān)聯(lián)起來。這一過程一般是通過修改基礎(chǔ)庫的方式來實現(xiàn)的,例如對xcb/lib等底層庫建立hook,從而對每個應(yīng)用窗口強制設(shè)置_NET_WM_PID,具體來說就是通過ftrace/systemtap這類動態(tài)跟蹤技術(shù),hook所有xcb_create_window、XCreateWindow這類可以創(chuàng)建窗口的函數(shù)以及其進程,當(dāng)觸發(fā)這類事件后,將對應(yīng)的_NET_WM_PID設(shè)置到創(chuàng)建出來的窗口屬性中。
在步驟S240中,根據(jù)窗口屬性和進程屬性,與對應(yīng)的第一匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,包括將待匹配的窗口屬性和進程屬性作為輸入?yún)?shù)傳遞給匹配器,由匹配器根據(jù)第一匹配文件對輸入?yún)?shù)進行匹配分析以輸出匹配結(jié)果;根據(jù)匹配器輸出的匹配分析結(jié)果獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率。其中,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。在本實施例中,匹配文件表示為match文件,可視為一堆人工配置的文件,該match文件中包括的匹配關(guān)系列表實際上就是通過組合各種窗口屬性和進程屬性,與其對應(yīng)的應(yīng)用ID和應(yīng)用ID的匹配準(zhǔn)確率進行匹配關(guān)聯(lián),形成的一張可通過查找窗口屬性和進程屬性來獲取其對應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率的匹配關(guān)系映射表,而匹配準(zhǔn)確率與match文件中采用的窗口屬性和進程屬性的類型有關(guān)。在創(chuàng)建match文件時,需要按照一定的規(guī)范對其進行命名,將match文件中包含的對應(yīng)的窗口屬性、進程屬性反映到match文件的名稱中。以如下6種match文件為例(并不限于這6種),match_arg.ini、match_icon_name.ini、match_wminstance.ini、match_execname.in、match_wmclass.ini和match_wmname.ini分別表示進程啟動參數(shù)match文件、應(yīng)用圖標(biāo)名稱match文件、應(yīng)用實例match文件、進程名稱match文件、應(yīng)用類別match文件和窗口名稱match文件。
當(dāng)獲取到的進程屬性為進程名稱和進程啟動參數(shù)時,將待匹配的進程名稱和進程啟動參數(shù)作為輸入?yún)?shù)傳遞給匹配器,匹配器根據(jù)匹配文件,即match文件對輸入的進程名稱和進程啟動參數(shù)進行匹配。當(dāng)進程名稱為gnome-control-center,進程啟動參數(shù)為overview時,先在match_arg.ini中的匹配關(guān)系列表中查找進程名稱為gnome-control-center的類目,再根據(jù)該類目查找進程啟動參數(shù)為overview的表項,如果查找到overview,則匹配器輸出該表項對應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,其中根據(jù)進程啟動參數(shù)match文件獲取的應(yīng)用ID的匹配準(zhǔn)確率為90%。關(guān)鍵性代碼如下所示:
在match_arg.ini中,相應(yīng)的匹配關(guān)系列表的內(nèi)容如下所示:
由上可知,進程名稱為gnome-control-center,進程啟動參數(shù)為overview所匹配的應(yīng)用ID為gnome-control-center,匹配準(zhǔn)確率為90%。
另外,如果步驟S220的判斷結(jié)果為窗口屬性中不包括進程ID,則不執(zhí)行步驟S230和步驟S240,直接根據(jù)窗口屬性,與對應(yīng)的第二匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第二匹配文件包括窗口屬性與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。上述匹配過程與步驟S240的匹配過程類似,只是待匹配的參數(shù)只有窗口屬性,且第二匹配文件也只與窗口屬性相關(guān),此處不再贅述。
隨后,進入步驟S250。在步驟S250中,獲取匹配準(zhǔn)確率最高的應(yīng)用ID。在本實施例中,在上述步驟S240中,還根據(jù)窗口名稱獲取了對應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,但該匹配準(zhǔn)確率為80%,較根據(jù)進程名稱和進程啟動參數(shù)獲取的應(yīng)用ID的匹配準(zhǔn)確率而言略低,因此匹配準(zhǔn)確率最高的應(yīng)用ID為gnome-control-center。
最后,在步驟S260中,通過匹配準(zhǔn)確率最高的應(yīng)用ID獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息,先獲取匹配準(zhǔn)確率最高的應(yīng)用ID對應(yīng)的desktop文件,再通過desktop文件獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。實際上對desktop文件而言,可通過修改基礎(chǔ)庫如gtk/qt等對可以控制的應(yīng)用程序來增加其應(yīng)用窗口的_NET_WM_DESKTOP_FILE窗口屬性,這一窗口屬性的匹配準(zhǔn)確率較高,甚至可達100%。但提供該窗口屬性的應(yīng)用窗口數(shù)量極少,且不是所有進程都是由桌面環(huán)境的啟動者來控制的。在方法200中,還包括通過Xorg對應(yīng)用窗口的變動進行監(jiān)聽,以更新當(dāng)前應(yīng)用窗口。在本實施例中,使用PropertyNotify事件來監(jiān)聽RootWindow以及每一個普通應(yīng)用窗口,從而便于根據(jù)應(yīng)用窗口產(chǎn)生的變動來更新其相關(guān)屬性。
圖3示出了根據(jù)本發(fā)明一個實施例的應(yīng)用窗口的信息獲取裝置300的示意圖。該裝置包括:第一獲取模塊310、判斷模塊320、第二獲取模塊330、匹配模塊340、第三獲取模塊350和第四獲取模塊360。該裝置還包括監(jiān)聽模塊(圖中未示出),位于第一獲取模塊310之前,適于通過Xorg對應(yīng)用窗口的變動進行監(jiān)聽,以更新當(dāng)前應(yīng)用窗口。
第一獲取模塊310適于獲取當(dāng)前應(yīng)用窗口的窗口屬性,其中窗口屬性通過X11的API獲取,包括應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID中的至少一種。在本實施例中,應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID這5種窗口屬性分別用_NET_WM_CLASS、_NET_WM_NAME、_NET_WM_WINDOW_TYPE、_NET_WM_ICON_NAME和_NET_WM_PID這些參數(shù)來表示。
判斷模塊320適于判斷窗口屬性中是否包括進程ID。在本實施例中,判斷獲取到的當(dāng)前應(yīng)用窗口的窗口屬性中是否包括_NET_WM_PID。
第二獲取模塊330適于當(dāng)窗口屬性中包括進程ID時,獲取相關(guān)的進程屬性,其中進程屬性通過proc文件系統(tǒng)獲取,包括進程啟動參數(shù)、進程用戶、進程對應(yīng)的應(yīng)用路徑、進程的環(huán)境變量中的至少一種。在本實施例中,對于大部分的應(yīng)用而言,當(dāng)開始運行程序后,在創(chuàng)建窗口時,根據(jù)程序中進程的請求通過X Server將進程ID,即_NET_WM_PID寫入到窗口屬性中,即將其與當(dāng)前應(yīng)用窗口關(guān)聯(lián)起來。這一過程一般是通過修改基礎(chǔ)庫的方式來實現(xiàn)的,例如對xcb/lib等底層庫建立hook,從而對每個應(yīng)用窗口強制設(shè)置_NET_WM_PID。
匹配模塊340適于根據(jù)窗口屬性和進程屬性,與對應(yīng)的第一匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,進一步適于將待匹配的窗口屬性和進程屬性作為輸入?yún)?shù)傳遞給匹配器,由匹配器根據(jù)第一匹配文件對輸入?yún)?shù)進行匹配分析以輸出匹配結(jié)果;根據(jù)匹配器輸出的匹配分析結(jié)果獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率。其中,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。在本實施例中,匹配文件表示為match文件,可視為一堆人工配置的文件,匹配準(zhǔn)確率與match文件中采用的窗口屬性和進程屬性的類型有關(guān)。當(dāng)獲取到的進程屬性為進程名稱和進程啟動參數(shù)時,將待匹配的進程名稱和進程啟動參數(shù)作為輸入?yún)?shù)傳遞給匹配器,匹配器根據(jù)匹配文件,即match文件對輸入的進程名稱和進程啟動參數(shù)進行匹配。進程名稱為gnome-control-center,進程啟動參數(shù)為overview所匹配的應(yīng)用ID為gnome-control-center,匹配準(zhǔn)確率為90%。匹配模塊340還適于當(dāng)窗口屬性中不包括進程ID時,根據(jù)窗口屬性,與對應(yīng)的第二匹配文件進行匹配以獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,第二匹配文件包括窗口屬性與應(yīng)用ID的匹配關(guān)系列表以及相應(yīng)的匹配準(zhǔn)確率。
第三獲取模塊350適于獲取匹配準(zhǔn)確率最高的應(yīng)用ID。在本實施例中,根據(jù)進程名稱和進程啟動參數(shù)獲取的應(yīng)用ID的匹配準(zhǔn)確率最高,因此匹配準(zhǔn)確率最高的應(yīng)用ID為gnome-control-center。
第四獲取模塊360適于通過匹配準(zhǔn)確率最高的應(yīng)用ID獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息,進一步適于獲取匹配準(zhǔn)確率最高的應(yīng)用ID對應(yīng)的desktop文件;通過desktop文件獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
關(guān)于應(yīng)用窗口的信息獲取的具體步驟以及實施例,在基于圖2的描述中已經(jīng)詳細公開,此處不再贅述。
對于Linux系統(tǒng)下的應(yīng)用而言,其應(yīng)用窗口的圖標(biāo)以及名稱等信息沒有統(tǒng)一的規(guī)范或方法來獲取,且現(xiàn)有的技術(shù)方法存在信息準(zhǔn)確率較低的問題,難以實時準(zhǔn)確地獲取應(yīng)用窗口正在使用的圖標(biāo)等信息。根據(jù)本發(fā)明的應(yīng)用窗口的信息獲取的技術(shù)方案,通過獲取當(dāng)前應(yīng)用窗口的窗口屬性并判斷其中是否包括進程ID,若包括進程ID則獲取相關(guān)的進程屬性,通過與對應(yīng)的第一匹配文件進行匹配來獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率,根據(jù)匹配準(zhǔn)確率最高的應(yīng)用ID來獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。上述技術(shù)方案中,第一匹配文件包括窗口屬性和進程屬性的組合與應(yīng)用ID之間的匹配關(guān)系列表,通過與這一列表進行匹配,最后篩選出窗口屬性和進程屬性所對應(yīng)的應(yīng)用ID,并根據(jù)匹配準(zhǔn)確率獲取匹配性最高的應(yīng)用ID,進而查找到對應(yīng)的desktop文件并從中獲取應(yīng)用窗口對應(yīng)的圖標(biāo)及名稱,具有較高的準(zhǔn)確率,在獲取應(yīng)用窗口使用的圖標(biāo)和名稱信息具有實時性和準(zhǔn)確性。
B9.如B8所述的裝置,其中所述窗口屬性通過X11的API獲取,包括應(yīng)用類別、窗口名稱、窗口類型、應(yīng)用圖標(biāo)名稱、進程ID中的至少一種。
B10.如B8所述的裝置,其中所述進程屬性通過proc文件系統(tǒng)獲取,包括進程啟動參數(shù)、進程用戶、進程對應(yīng)的應(yīng)用路徑、進程的環(huán)境變量中的至少一種。
B11.如B8-10中任一項所述的裝置,所述匹配模塊進一步適于:
將待匹配的窗口屬性和進程屬性作為輸入?yún)?shù)傳遞給匹配器,由所述匹配器根據(jù)第一匹配文件對輸入?yún)?shù)進行匹配分析以輸出匹配結(jié)果;
根據(jù)匹配器輸出的匹配分析結(jié)果獲取相應(yīng)的應(yīng)用ID和匹配準(zhǔn)確率。
B12.如B8-10中任一項所述的裝置,所述第四獲取模塊進一步適于:
獲取匹配準(zhǔn)確率最高的應(yīng)用ID對應(yīng)的desktop文件;
通過所述desktop文件獲取其對應(yīng)應(yīng)用窗口的名稱和圖標(biāo)信息。
B13.如B8-10中任一項所述的裝置,還包括監(jiān)聽模塊,適于通過Xorg對應(yīng)用窗口的變動進行監(jiān)聽,以更新當(dāng)前應(yīng)用窗口。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下被實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開的示例中的設(shè)備的模塊或單元或組件可以布置在如該實施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個或多個設(shè)備中。前述示例中的模塊可以組合為一個模塊或者此外可以分成多個子模塊。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
此外,所述實施例中的一些在此被描述成可以由計算機系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實施的方法或方法元素的組合。因此,具有用于實施所述方法或方法元素的必要指令的處理器形成用于實施該方法或方法元素的裝置。此外,裝置實施例的在此所述的元素是如下裝置的例子:該裝置用于實施由為了實施該發(fā)明的目的的元素所執(zhí)行的功能。
如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對象僅僅表示涉及類似對象的不同實例,并且并不意圖暗示這樣被描述的對象必須具有時間上、空間上、排序方面或者以任意其它方式的給定順序。
盡管根據(jù)有限數(shù)量的實施例描述了本發(fā)明,但是受益于上面的描述,本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實施例。此外,應(yīng)當(dāng)注意,本說明書中使用的語言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。對于本發(fā)明的范圍,對本發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書限定。