Files
swayipc/_examples/events/main.go

59 lines
992 B
Go
Raw Normal View History

package main
/*
Demonstrate subscribing to events
*/
import (
"encoding/json"
"fmt"
"log"
"github.com/alecthomas/repr"
2025-08-16 19:50:30 +02:00
"github.com/tlinden/swayipc"
)
// Event callback function, needs to implement each subscribed events,
// fed to it as RawResponse
2025-08-16 19:50:30 +02:00
func ProcessTick(event *swayipc.RawResponse) error {
var err error
switch event.PayloadType {
2025-08-16 19:50:30 +02:00
case swayipc.EV_Tick:
ev := &swayipc.EventTick{}
err = json.Unmarshal(event.Payload, &ev)
repr.Println(ev)
2025-08-16 19:50:30 +02:00
case swayipc.EV_Window:
ev := &swayipc.EventWindow{}
err = json.Unmarshal(event.Payload, &ev)
repr.Println(ev)
default:
return fmt.Errorf("received unsubscribed event %d", event.PayloadType)
}
if err != nil {
return err
}
return nil
}
func main() {
2025-08-16 19:50:30 +02:00
ipc := swayipc.NewSwayIPC()
err := ipc.Connect()
if err != nil {
log.Fatal(err)
}
defer ipc.Close()
2025-08-16 19:50:30 +02:00
_, err = ipc.Subscribe(&swayipc.Event{
Tick: true,
Window: true,
})
if err != nil {
log.Fatal(err)
}
ipc.EventLoop(ProcessTick)
}