kpsync/app/tray.go
2025-08-19 17:21:15 +02:00

75 lines
1.1 KiB
Go

package app
import (
"fyne.io/systray"
"mikescher.com/kpsync/assets"
)
func (app *Application) initTray() {
trayOnReady := func() {
systray.SetIcon(assets.IconInit)
systray.SetTitle("KeepassXC Sync")
systray.SetTooltip("Initializing...")
app.LogDebug("SysTray initialized")
app.LogLine()
app.trayReady.Set(true)
}
systray.Run(trayOnReady, nil)
app.LogDebug("SysTray stopped")
app.LogLine()
app.trayReady.Set(false)
}
func (app *Application) setTrayState(txt string, icon []byte) func() {
if !app.trayReady.Get() {
return func() {}
}
app.masterLock.Lock()
defer app.masterLock.Unlock()
systray.SetIcon(icon)
systray.SetTooltip(txt)
var finDone = false
fin := func() {
app.masterLock.Lock()
defer app.masterLock.Unlock()
if finDone {
return
}
if !app.trayReady.Get() {
return
}
systray.SetIcon(assets.IconDefault)
systray.SetTooltip("Sleeping...")
finDone = true
}
return fin
}
func (app *Application) setTrayStateDirect(txt string, icon []byte) {
if !app.trayReady.Get() {
return
}
app.masterLock.Lock()
defer app.masterLock.Unlock()
systray.SetIcon(icon)
systray.SetTooltip(txt)
}