package hypr

import "encoding/json"

type Window struct {
	Address          string          `json:"address"`
	Mapped           bool            `json:"mapped"`
	Hidden           bool            `json:"hidden"`
	At               [2]int          `json:"at"`
	Size             [2]int          `json:"size"`
	Workspace        WorkspaceIdent  `json:"workspace"`
	Floating         bool            `json:"floating"`
	MonitorID        int             `json:"monitor"`
	Class            string          `json:"class"`
	Title            string          `json:"title"`
	InitialClass     string          `json:"initialClass"`
	InitialTitle     string          `json:"initialTitle"`
	PID              int             `json:"pid"`
	Xwayland         bool            `json:"xwayland"`
	Pinned           bool            `json:"pinned"`
	Fullscreen       FullscreenState `json:"fullscreen"`
	FullscreenClient FullscreenState `json:"fullscreenClient"`
	Grouped          []interface{}   `json:"grouped"` // TODO
	Swallowing       string          `json:"swallowing"`
	FocusHistoryID   int             `json:"focusHistoryID"`
}

func (w Window) String() string {
	data, _ := json.MarshalIndent(w, "", "\t")
	return string(data)
}

type FullscreenState int

const (
	FullscreenCurrent            FullscreenState = -1
	FullscreenNone               FullscreenState = 0
	FullscreenMaximize           FullscreenState = 1
	FullscreenFullscreen         FullscreenState = 2
	FullscreenMaximizeFullscreen FullscreenState = 3
)