diff --git a/bar/clicks.go b/bar/clicks.go new file mode 100644 index 0000000000000000000000000000000000000000..2eea888458f03dffc0ab2512dc075bce02147435 --- /dev/null +++ b/bar/clicks.go @@ -0,0 +1,31 @@ +// Package bar handles the main program for i3going-on. +// Copyright (C) 2022 Kevin Lyda <kevin@lyda.ie> +package bar + +import ( + "bufio" + "os" +) + +type Clicks struct { + Button int64 `json:"button"` + Modifiers []string `json:"modifiers"` + X int64 `json:"x"` + Y int64 `json:"y"` + RelativeX int64 `json:"relative_x"` + RelativeY int64 `json:"relative_y"` + Width int64 `json:"width"` + Height int64 `json:"height"` +} + +//{"button":1,"modifiers":[],"x":1952,"y":1144,"relative_x":62,"relative_y":14,"width":112,"height":22} +func handleCommands() { + logger, err := os.Create("/tmp/i3going-on.log") + if err != nil { + panic(err) + } + scanner := bufio.NewScanner(os.Stdin) + for scanner.Scan() { + logger.WriteString(scanner.Text()) + } +} diff --git a/bar/config.go b/bar/config.go new file mode 100644 index 0000000000000000000000000000000000000000..606a8d59374929c396f4fd83415c2cea526f4ed3 --- /dev/null +++ b/bar/config.go @@ -0,0 +1,17 @@ +// Package bar handles the main program for i3going-on. +// Copyright (C) 2022 Kevin Lyda <kevin@lyda.ie> +package bar + +import ( + "github.com/spf13/cobra" + "gitlab.ie.suberic.net/kevin/i3going-on/config" +) + +func readConfig(configFile string) (*config.Config, error) { + cfg, err := config.ReadConfig(configFile) + cobra.CheckErr(err) + if cfg.Refresh < 1 { + cfg.Refresh = 5 + } + return cfg, err +} diff --git a/bar/run.go b/bar/run.go index a4761ffd414b0e569f859d0f6ae36fc9746cd324..53fcd2345e8701c4fbc78eae740d6db3574180fa 100644 --- a/bar/run.go +++ b/bar/run.go @@ -3,37 +3,20 @@ package bar import ( - "bufio" "fmt" - "os" "strings" "time" "github.com/spf13/cobra" "github.com/spf13/viper" - "gitlab.ie.suberic.net/kevin/i3going-on/config" "golang.org/x/sys/unix" ) -func handleCommands() { - logger, err := os.Create("/tmp/i3going-on.log") - if err != nil { - panic(err) - } - scanner := bufio.NewScanner(os.Stdin) - for scanner.Scan() { - logger.WriteString(scanner.Text()) - } -} - // Run is essentially the main program. func Run(cmd *cobra.Command, args []string) { viper.BindPFlags(cmd.Flags()) - cfg, err := config.ReadConfig(viper.GetString("config")) + cfg, err := readConfig(viper.GetString("config")) cobra.CheckErr(err) - if cfg.Refresh < 1 { - cfg.Refresh = 5 - } go handleCommands() fmt.Printf(`{ "version": 1, "stop_signal": %d, "cont_signal": %d, "click_events": true }`+"\n", @@ -46,6 +29,8 @@ func Run(cmd *cobra.Command, args []string) { } fmt.Printf("%s\n[%s]", separator, strings.Join(line, ",")) separator = "," - time.Sleep(time.Duration(cfg.Refresh) * time.Second) + select { + case <-time.After(time.Duration(cfg.Refresh) * time.Second): + } } }