Files
community-plugins/kineticwe-layouts/widget.luau
T

65 lines
1.9 KiB
Luau

--!nonstrict
-- Bar indicator for the current KineticWE tiling layout.
-- Purely reactive: the bridge service publishes state changes.
local KIND_INFO = {
MasterStack = { display = "MasterStack", glyph = "layout-sidebar-right" },
Stacked = { display = "Stacked", glyph = "layout-rows" },
CenterTile = { display = "Center Tile", glyph = "layout-columns" },
Monocle = { display = "Monocle", glyph = "rectangle" },
AutoGrid = { display = "Auto Grid", glyph = "layout-grid" },
Columns = { display = "Columns", glyph = "columns-3" },
}
local showText = true
local function readShowText()
local value = noctalia.getConfig("show_text")
if value == nil then
value = true
end
showText = value
end
readShowText()
local function render(state)
if state == nil then
return
end
if not state.ok then
barWidget.setGlyph("alert-triangle")
barWidget.setText("")
barWidget.setTooltip("KineticWE layouts: /Tiling DBus interface not found — rebuild KineticWE")
return
end
if state.current == "" then
barWidget.setGlyph("layout-off")
barWidget.setText(showText and "Floating" or "")
barWidget.setTooltip("KineticWE tiling is disabled")
return
end
local info = KIND_INFO[state.current]
local display = info and info.display or state.current
barWidget.setGlyph(info and info.glyph or "layout-grid")
barWidget.setText(showText and display or "")
barWidget.setTooltip("KineticWE layout: " .. display)
end
noctalia.state.watch("layout", render)
-- Paint the latest value immediately in case the service published first.
render(noctalia.state.get("layout"))
-- Apply the show_text setting without a reload.
function onConfigChanged()
readShowText()
render(noctalia.state.get("layout"))
end
function onClick()
noctalia.togglePanel("theblackdon/kineticwe-layouts:layouts")
end