Go語言設(shè)計實現(xiàn)在任務(wù)欄里提醒你喝水的兔子
前言
之前看到 RunCat 一只可以在電腦上奔跑貓,其主要的功能是監(jiān)控電腦的CPU、內(nèi)存的使用情況,使用越多跑的越快。所以準備做一只在任務(wù)欄里的兔子,主要使用 Go 語言實現(xiàn)一個簡單的到點拜年的兔子。
詳細設(shè)計
基本需求:
- 打開應(yīng)用時可以在任務(wù)欄里顯示
- 實現(xiàn)動態(tài)兔子生成
實現(xiàn)一只在任務(wù)欄里的兔子?;揪褪且粋€應(yīng)用的圖標,并且圖標是動態(tài)變化的。使用 Go 開發(fā)的話可以使用 systray 工具包,能夠支持在任務(wù)欄里顯示圖標。
go get github.com/getlantern/systray
需要使用 goV1.12版本以上。安裝完后就可以在 main 文件中加入方法
func main() { systray.Run(onReady, onExit) } func onReady() { systray.SetIcon(icon.Data) // systray.SetTitle("HappyRabbit") systray.SetTooltip("Happy New Year") mQuit := systray.AddMenuItem("Quit", "退出應(yīng)用") mTip1 := systray.AddMenuItem("change", "圖標更新") go func() { for { select { case <-mQuit.ClickedCh: systray.Quit() return case <-mTip1.ClickedCh: var data [][]byte picData := getIcon() systray.SetIcon(picData) } } }() }
以上代碼就是打開應(yīng)用時先使用默認的圖標,點擊圖標更新時就可以實現(xiàn)圖標的變更。主要使用了設(shè)置圖標的方法是 systray.SetIcon([]byte)
。
需要注意,如果不是使用 ico 格式的圖標可能會發(fā)生以下的錯誤:
ERROR systray: systray_windows.go:845 Unable to set icon: The volume for a file has been externally altered so that the opened file is no longer valid.
完成圖標更新的需求后就可以進一步實現(xiàn)動態(tài)圖標變更,從而實現(xiàn)一只能動的拜年兔子。實現(xiàn)動態(tài)化基本思路就是多張動作圖片不斷地循環(huán)從而實現(xiàn)動態(tài)。簡單的實現(xiàn)就是可以將多個圖片都加載進來,然后使用循環(huán):
var data [][]byte data1, _ := getIcon("./images/1.ico") data2, _ := getIcon("./images/4.ico") data3, _ := getIcon("./images/5.ico") data = append(data, data1) data = append(data, data2) data = append(data, data3) go func() { // 異步處理 index := 0 for { systray.SetIcon(data[index]) time.Sleep(time.Second * 2) index++ if index == 2 { index = 0 } } }()
以上更好的方式,我覺得可以使用 corn 定時任務(wù)去執(zhí)行,這樣就可以對定時任務(wù)進行控制,想開就開,想關(guān)就關(guān)。
基本實現(xiàn)到這里就是完成了一個簡單的任務(wù)欄顯示功能,但我在里面增加一個可以定時通過 webhook 方式給自己的飛書通知消息,提醒該喝水了。
詳細飛書 webhook 的方式可以參考自己寫過的文章:http://www.dbjr.com.cn/article/272249.htm
安裝包
開發(fā)完之后就可以進行編譯。不同的平臺編譯生成安裝包還是不一樣的。但在編譯的時候還需要注意不同環(huán)境的區(qū)別:
首先需要打開環(huán)境配置:
env GO111MODULE=on go build
Window
go build -ldflags -H=windowsgui
MacOS
在macOS,需要先創(chuàng)建一個應(yīng)用程序二進制包包裝;基本的文件配置是
SystrayApp.app/ Contents/ Info.plist MacOS/ go-executable Resources/ SystrayApp.icns
這里主要實現(xiàn)了在任務(wù)欄兔子生成的效果,可以繼續(xù)迭代升級,比如監(jiān)控系統(tǒng)的狀態(tài)、或者進行一些異步的工作,通知事件或者其他的功能。因為我不擅長做UI所以就沒有實現(xiàn)更加壯觀的結(jié)果。以上就是我實現(xiàn)的整個過程,有任何問題歡迎指正。
效果展示
以上就是Go語言設(shè)計實現(xiàn)在任務(wù)欄里提醒你喝水的兔子的詳細內(nèi)容,更多關(guān)于Go語言設(shè)計任務(wù)欄提醒喝水的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go?Ticker?周期性定時器用法及實現(xiàn)原理詳解
這篇文章主要為大家介紹了Go?Ticker?周期性定時器用法及實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08golang控制結(jié)構(gòu)select機制及使用示例詳解
這篇文章主要介紹了golang控制結(jié)構(gòu)select機制及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10Go語言的文件名、標識符、關(guān)鍵字和包基礎(chǔ)教程
Go的關(guān)鍵字不能被用作標識符,這是一個重要的限制,以避免命名沖突和語法混淆,這篇文章主要給大家介紹了關(guān)于Go語言文件名、標識符、關(guān)鍵字和包的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06