最近想構建一個自己的 Linux 桌面環境,雖然只有我一個人,也許不是那麼容易,但一點一點寫下去,總會有收穫的,首先寫了 dock 和 launcher。
dock 這個程序也是一個 X Window,首先需要給它設置成 dock 的類型,讓窗口管理器知道它是個 dock,這樣就可以對它進行特殊的處理,讓它一直保持頂層顯示,使用 xcb 相關的庫對它進行設置,傳入它的 window id 即可,也可以使用 KWindowSystem::setType() 函數,另外還需要設置支桿部分。
接下來就是 dock 的內容顯示了,主要分成四個部分,從左到右分別是:固定欄 -> 應用欄 -> 托盤欄 -> 插件欄。
固定欄是啓動器圖標和顯示桌面、多任務視圖之類的
應用欄就是當前運行中的應用程序,顯示應用的狀態
托盤欄就是所有正運行在桌面環境裏的應用程序共享的區域
插件欄也就是額外的擴展功能,比如顯示時間,回收站...
主面板分爲上面的四個佈局,每個圖標就是一個 Widget
應用管理
在 dock 初始化的時候會先把固定在主面板的app的列表先顯示在應用面板上,然後再加載目前已經打開的應用軟件,獲取系統中所有正在運行的 wid,然後過濾。
這是它數據存儲的模型: