diff --git a/go.mod b/go.mod index 2471c34..67adf4e 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module git.tordarus.net/niri-tools/niri -go 1.24.4 +go 1.25 require ( git.tordarus.net/tordarus/channel v0.1.20 diff --git a/model_window.go b/model_window.go index 84a82de..bf537af 100644 --- a/model_window.go +++ b/model_window.go @@ -5,14 +5,15 @@ import "encoding/json" type WindowID int type Window struct { - ID WindowID `json:"id"` - Title string `json:"title"` - AppID string `json:"app_id"` - PID int `json:"pid"` - WorkspaceID WorkspaceID `json:"workspace_id"` - Urgent bool `json:"is_urgent"` - Floating bool `json:"is_floating"` - Focused bool `json:"is_focused"` + ID WindowID `json:"id"` + Title string `json:"title"` + AppID string `json:"app_id"` + PID int `json:"pid"` + WorkspaceID WorkspaceID `json:"workspace_id"` + Urgent bool `json:"is_urgent"` + Floating bool `json:"is_floating"` + Focused bool `json:"is_focused"` + Layout WindowLayout `json:"layout"` } func (m Window) String() string { diff --git a/model_window_layout.go b/model_window_layout.go new file mode 100644 index 0000000..4026207 --- /dev/null +++ b/model_window_layout.go @@ -0,0 +1,16 @@ +package niri + +import "encoding/json" + +type WindowLayout struct { + PosInScrollingLayout Option[[2]int] `json:"pos_in_scrolling_layout"` + TileSize [2]float64 `json:"tile_size"` + WindowSize [2]int `json:"window_size"` + TilePosInWorkspaceView Option[[2]float64] `json:"tile_pos_in_workspace_view"` + WindowOffsetInTile [2]float64 `json:"window_offset_in_tile"` +} + +func (m WindowLayout) String() string { + data, _ := json.MarshalIndent(m, "", "\t") + return string(data) +}