2023-08-01 18:06:35 +02:00
|
|
|
-- SPDX-License-Identifier: GPL-3.0-or-later
|
2023-06-27 04:19:02 +02:00
|
|
|
|
2023-06-27 04:05:29 +02:00
|
|
|
---@meta _
|
|
|
|
|
|
|
|
---@class _Msg
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field SetKeybind { key: Keys, modifiers: Modifier[], callback_id: integer }?
|
|
|
|
---@field SetMousebind { button: integer }?
|
2023-07-02 17:26:07 +02:00
|
|
|
--Windows
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field CloseWindow { window_id: WindowId }?
|
|
|
|
---@field ToggleFloating { window_id: WindowId }?
|
|
|
|
---@field SetWindowSize { window_id: WindowId, width: integer?, height: integer? }?
|
|
|
|
---@field MoveWindowToTag { window_id: WindowId, tag_id: TagId }?
|
|
|
|
---@field ToggleTagOnWindow { window_id: WindowId, tag_id: TagId }?
|
|
|
|
---@field Spawn { command: string[], callback_id: integer? }?
|
|
|
|
---@field Request Request?
|
2023-07-01 04:34:07 +02:00
|
|
|
--Tags
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field ToggleTag { tag_id: TagId }?
|
|
|
|
---@field SwitchToTag { tag_id: TagId }?
|
|
|
|
---@field AddTags { output_name: string, tag_names: string[] }?
|
|
|
|
---@field RemoveTags { tag_ids: TagId[] }?
|
|
|
|
---@field SetLayout { tag_id: TagId, layout: Layout }?
|
2023-07-11 18:59:38 +02:00
|
|
|
--Outputs
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field ConnectForAllOutputs { callback_id: integer }?
|
2023-08-04 20:45:38 +02:00
|
|
|
---@field SetOutputLocation { output_name: OutputName, x: integer?, y: integer? }?
|
2023-06-27 04:05:29 +02:00
|
|
|
|
|
|
|
---@alias Msg _Msg | "Quit"
|
|
|
|
|
2023-07-11 18:59:38 +02:00
|
|
|
--------------------------------------------------------------------------------------------
|
|
|
|
|
2023-07-21 21:36:32 +02:00
|
|
|
---@class __Request
|
2023-07-11 18:59:38 +02:00
|
|
|
--Windows
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field GetWindowProps { window_id: WindowId }?
|
2023-07-11 18:59:38 +02:00
|
|
|
--Outputs
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field GetOutputProps { output_name: string }?
|
2023-07-20 01:55:22 +02:00
|
|
|
--Tags
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field GetTagProps { tag_id: TagId }?
|
2023-07-11 18:59:38 +02:00
|
|
|
|
2023-07-21 21:36:32 +02:00
|
|
|
---@alias _Request __Request | "GetWindows" | "GetOutputs" | "GetTags"
|
|
|
|
---@alias Request { request_id: integer, request: _Request }
|
2023-06-27 04:05:29 +02:00
|
|
|
|
|
|
|
---@class IncomingMsg
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field CallCallback { callback_id: integer, args: Args? }?
|
|
|
|
---@field RequestResponse { request_id: integer, response: RequestResponse }?
|
2023-06-27 04:05:29 +02:00
|
|
|
|
|
|
|
---@class Args
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field Spawn { stdout: string?, stderr: string?, exit_code: integer?, exit_msg: string? }?
|
|
|
|
---@field ConnectForAllOutputs { output_name: string }?
|
2023-06-27 04:05:29 +02:00
|
|
|
|
2023-07-18 22:12:23 +02:00
|
|
|
---@alias WindowId integer
|
|
|
|
---@alias TagId integer
|
2023-07-21 21:36:32 +02:00
|
|
|
---@alias RequestId integer
|
2023-07-18 22:12:23 +02:00
|
|
|
---@alias OutputName string
|
|
|
|
|
2023-06-27 04:05:29 +02:00
|
|
|
---@class RequestResponse
|
2023-07-19 04:10:43 +02:00
|
|
|
--Windows
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field Window { window_id: WindowId|nil }?
|
|
|
|
---@field Windows { window_ids: WindowId[] }?
|
|
|
|
---@field WindowProps { size: integer[]?, loc: integer[]?, class: string?, title: string?, floating: boolean?, focused: boolean? }?
|
2023-07-19 04:10:43 +02:00
|
|
|
--Outputs
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field Output { output_name: OutputName? }?
|
|
|
|
---@field Outputs { output_names: OutputName[] }?
|
|
|
|
---@field OutputProps { make: string?, model: string?, loc: integer[]?, res: integer[]?, refresh_rate: integer?, physical_size: integer[]?, focused: boolean?, tag_ids: integer[]? }?
|
2023-07-19 04:10:43 +02:00
|
|
|
--Tags
|
2023-07-23 00:43:36 +02:00
|
|
|
---@field Tags { tag_ids: TagId[] }?
|
|
|
|
---@field TagProps { active: boolean?, name: string?, output_name: string? }?
|