summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go72
1 files changed, 59 insertions, 13 deletions
diff --git a/main.go b/main.go
index 36dba0e..a9e23c2 100644
--- a/main.go
+++ b/main.go
@@ -1,7 +1,7 @@
package main
import (
- "fmt"
+ "strings"
"hhvn.uk/hbspbar/common"
"hhvn.uk/hbspbar/bspc"
@@ -13,32 +13,78 @@ import (
*/
)
+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", err)
+ 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", err)
+ common.Error("Couldn't subscribe to bspwm: %s\n", err)
return
}
defer events.Close()
- fmt.Println(state.Monitors[0].ID)
for {
- event, err := events.Get()
-
- if err != nil {
- common.Error("Couldn't read event: %s", err)
- return
- }
-
- if event != nil {
- fmt.Printf("Event: %v %v\n", event.Name, event.Tokens)
+ if reload := handleEvent(events); reload {
+ state, err = reloadState(state)
+ if err != nil {
+ common.Error("Couldn't reload bspwm state: %s\n", err)
+ }
}
}
}