// Package bar handles the main program for i3going-on. // Copyright (C) 2022 Kevin Lyda <kevin@lyda.ie> 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")) if err != nil { // TODO Make a better default cfg, err = config.ReadConfigStr(`--- modules: - module: text name: post params: text: "post" color: "#11ff11" on-click: xdg-open https://mastodon.ie/ - module: date params: format: 06-05-04 15:02 on-click: xdg-open https://calendar.google.com/ `) cobra.CheckErr(err) } go handleCommands() fmt.Printf(`{ "version": 1, "stop_signal": %d, "cont_signal": %d, "click_events": true }`+"\n", unix.SignalNum("SIGSTOP"), unix.SignalNum("SIGCONT")) separator := "[" for { line := make([]string, 0, 5) for _, module := range cfg.Modules { line = append(line, module.Render()) } fmt.Printf("%s\n[%s]", separator, strings.Join(line, ",")) separator = "," time.Sleep(5 * time.Second) } }