pinnacle/api/lua/msg.lua

69 lines
2.6 KiB
Lua

-- This Source Code Form is subject to the terms of the Mozilla Public
-- License, v. 2.0. If a copy of the MPL was not distributed with this
-- file, You can obtain one at https://mozilla.org/MPL/2.0/.
--
-- SPDX-License-Identifier: MPL-2.0
---@meta _
---@class _Msg
---@field SetKeybind { key: Keys, modifiers: Modifier[], callback_id: integer }
---@field SetMousebind { button: integer }
--Windows
---@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
--Tags
---@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 }
--Outputs
---@field ConnectForAllOutputs { callback_id: integer }
---@alias Msg _Msg | "Quit"
--------------------------------------------------------------------------------------------
---@class __Request
--Windows
---@field GetWindowProps { window_id: WindowId }
--Outputs
---@field GetOutputProps { output_name: string }
--Tags
---@field GetTagProps { tag_id: TagId }
---@alias _Request __Request | "GetWindows" | "GetOutputs" | "GetTags"
---@alias Request { request_id: integer, request: _Request }
---@class IncomingMsg
---@field CallCallback { callback_id: integer, args: Args? }
---@field RequestResponse { request_id: integer, response: RequestResponse }
---@class Args
---@field Spawn { stdout: string?, stderr: string?, exit_code: integer?, exit_msg: string? }
---@field ConnectForAllOutputs { output_name: string }
---@alias WindowId integer
---@alias TagId integer
---@alias RequestId integer
---@alias OutputName string
---@class RequestResponse
--Windows
---@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? }
--Outputs
---@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[]? }
--Tags
---@field Tags { tag_ids: TagId[] }
---@field TagProps { active: boolean?, name: string?, output_name: string? }