package main import ( "fmt" "github.com/getlantern/systray" "github.com/kbinani/screenshot" "image/png" "os" ) var window *ui.Window func main() { go func() { systray.Run(onReady, onExit) }() <-make(chan struct{}) } func onReady() { systray.SetTitle("Awesome App") systray.SetTooltip("Pretty awesome超级棒") screenshot := systray.AddMenuItem("Screenshot", "Take a screenshot") config := systray.AddMenuItem("Config", "Configuration") quit := systray.AddMenuItem("Quit", "Quit the whole app") go func() { <-quit.ClickedCh systray.Quit() }() go func() { for { select { case <-screenshot.ClickedCh: takeScreenShot() case <-config.ClickedCh: go showConfig() } } }() } func onExit() { fmt.Println("exit") } func takeScreenShot() { n := screenshot.NumActiveDisplays() for i := 0; i < n; i++ { bounds := screenshot.GetDisplayBounds(i) img, err := screenshot.CaptureRect(bounds) if err != nil { panic(err) } fileName := fmt.Sprintf("%d_%dx%d.png", i, bounds.Dx(), bounds.Dy()) file, _ := os.Create(fileName) defer file.Close() png.Encode(file, img) fmt.Printf("#%d : %v \"%s\"\n", i, bounds, fileName) } }