package hypr import ( "encoding/json" "os/exec" "git.milar.in/milarin/slices" ) func GetWindows() ([]*Window, error) { cmd := exec.Command("hyprctl", "-j", "clients") stdout, err := cmd.StdoutPipe() if err != nil { return nil, err } if err := cmd.Start(); err != nil { return nil, err } windows := make([]*Window, 0, 5) if err := json.NewDecoder(stdout).Decode(&windows); err != nil { return nil, err } if err := cmd.Wait(); err != nil { return nil, err } windows = slices.Filter(windows, func(w *Window) bool { return w.PID != -1 }) return windows, nil }