67 lines
1.2 KiB
Go
67 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|