package main import ( "strings" "hhvn.uk/hbspbar/common" "hhvn.uk/hbspbar/bspc" "hhvn.uk/hbspbar/bar" /* "github.com/BurntSushi/xgb" "github.com/BurntSushi/xgb/xproto" */ ) var reloadEvents = []string{ "monitor_rename", "monitor_swap", "monitor_focus", "desktop_add", "desktop_rename", "desktop_remove", "desktop_swap", "desktop_transfer", "desktop_focus", "desktop_activate", "desktop_layout", "node_add", "node_remove", "node_swap", "node_transfer" } func reloadState(current *bspc.State) (*bspc.State, error) { state, err := bspc.LoadState() if err != nil { return current, err } else { return state, nil } } func handleEvent(events *bspc.Subscriber) (bool) { var event *bspc.Event select { case event = <-events.Event: break default: return false } if event.Err != nil { common.Error("Couldn't read event: %s\n", event.Err) return false } for i := 0; i < len(reloadEvents); i++ { if event.Name == reloadEvents[i] { return true } } return false } func main() { state, err := bspc.LoadState() if (err != nil) { common.Error("Couldn't load bspwm state: %s\n", err) return } events, err := bspc.Subscribe() if (err != nil) { common.Error("Couldn't subscribe to bspwm: %s\n", err) return } defer events.Close() for { if reload := handleEvent(events); reload { state, err = reloadState(state) if err != nil { common.Error("Couldn't reload bspwm state: %s\n", err) } } } }