65 lines
1.9 KiB
Luau
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
|