Will change this commit message to mean something later
Some checks failed
dev release / build (push) Failing after 0s
Some checks failed
dev release / build (push) Failing after 0s
This commit is contained in:
parent
f3905d8114
commit
8d3f55b607
14 changed files with 1491 additions and 40 deletions
66
examples/modules/bluetooth-toggle-widget.lua
Normal file
66
examples/modules/bluetooth-toggle-widget.lua
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
-- bluetooth-toggle-widget — a real one-click Bluetooth power toggle in the
|
||||
-- hamburger popover's tray section, showing power state and connected
|
||||
-- device count. breadbar's native bar only shows a passive BT icon; this
|
||||
-- adds an actual control surface for it.
|
||||
--
|
||||
-- Demonstrates: WidgetPlacement "tray", a bread.every-polled read of
|
||||
-- bread.bluetooth.devices()/.powered(), and bread.bar.widget_clicked
|
||||
-- driving a real action (bread.bluetooth.power) rather than just display.
|
||||
--
|
||||
-- Drop-in: copy into ~/.config/bread/modules/. Zero configuration.
|
||||
|
||||
local M = bread.module({ name = "bluetooth-toggle-widget", version = "1.0.0" })
|
||||
|
||||
local function widget_root()
|
||||
local powered = bread.bluetooth.powered()
|
||||
local devices = bread.bluetooth.devices() or {}
|
||||
local connected = 0
|
||||
for _, d in ipairs(devices) do
|
||||
if d.connected then
|
||||
connected = connected + 1
|
||||
end
|
||||
end
|
||||
|
||||
local text, style
|
||||
if powered == nil then
|
||||
text, style = "BT n/a", { color = "dim" }
|
||||
elseif not powered then
|
||||
text, style = "BT off", { color = "dim" }
|
||||
elseif connected > 0 then
|
||||
text, style = "BT (" .. connected .. ")", { color = "accent", weight = "bold" }
|
||||
else
|
||||
text, style = "BT on", { color = "fg" }
|
||||
end
|
||||
|
||||
return {
|
||||
type = "label",
|
||||
text = text,
|
||||
style = style,
|
||||
on_click = "toggle",
|
||||
}
|
||||
end
|
||||
|
||||
function M.on_load()
|
||||
bread.widget.register({
|
||||
id = "toggle",
|
||||
placement = "tray",
|
||||
tooltip = "Click to toggle Bluetooth power",
|
||||
root = widget_root(),
|
||||
})
|
||||
|
||||
bread.every(5000, function()
|
||||
bread.widget.update("toggle", { root = widget_root() })
|
||||
end)
|
||||
|
||||
bread.on("bread.bar.widget_clicked", function(e)
|
||||
if e.data.widget_id == "bluetooth-toggle-widget.toggle" and e.data.action == "toggle" then
|
||||
bread.bluetooth.power(not bread.bluetooth.powered())
|
||||
-- Give BlueZ a moment to apply before refreshing the label.
|
||||
bread.after(500, function()
|
||||
bread.widget.update("toggle", { root = widget_root() })
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
return M
|
||||
Loading…
Add table
Add a link
Reference in a new issue