From e310505efde86e97993d4e9deae547590f61144a Mon Sep 17 00:00:00 2001 From: Redume Date: Sun, 18 Sep 2022 19:27:41 +0300 Subject: [PATCH] add tray --- functions/tray.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 functions/tray.go diff --git a/functions/tray.go b/functions/tray.go new file mode 100644 index 0000000..a234b7c --- /dev/null +++ b/functions/tray.go @@ -0,0 +1,65 @@ +package functions + +import ( + "fmt" + "github.com/getlantern/systray" + "github.com/shirou/gopsutil/v3/process" + "github.com/skratchdot/open-golang/open" + "os" +) + +func Tray() { + systray.SetIcon(GetIcon("web/static/image/icons/everynasa.ico")) + systray.SetTitle("EveryNasa") + systray.SetTooltip("EveryNasa") + ui := systray.AddMenuItem("Open Ui", "Open Ui") + exit := systray.AddMenuItem("Quit", "Quit the whole app") + + for { + select { + case <-ui.ClickedCh: + err := open.Run("http://localhost:4662") + if err != nil { + panic(err) + } + case <-exit.ClickedCh: + Quit() + } + } +} + +func Quit() { + err := KillProcess("EveryNasa.exe") + if err != nil { + panic(err) + } + + systray.Quit() +} + +func KillProcess(name string) error { + processes, err := process.Processes() + if err != nil { + panic(err) + } + + for _, p := range processes { + n, ProccErr := p.Name() + if ProccErr != nil { + panic(ProccErr) + } + + if n == name { + return p.Kill() + } + } + return fmt.Errorf("process not found") +} + +func GetIcon(s string) []byte { + b, err := os.ReadFile(s) + if err != nil { + fmt.Print(err) + } + return b +}