mirror of
https://github.com/don-philipe/knorke.git
synced 2025-11-08 14:57:02 +01:00
Add bluetooth control widget
This commit is contained in:
75
bluetooth.lua
Normal file
75
bluetooth.lua
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
-- https://github.com/WillPower3309/awesome-dotfiles/blob/185684bf4946702104aadc5e64ca7a9e724d3fcc/awesome/widgets/bluetooth.lua
|
||||||
|
-- https://github.com/Mofiqul/awesome-shell/search?q=bluetooth
|
||||||
|
-- Requires bluetoothctl program being installed.
|
||||||
|
|
||||||
|
local awful = require("awful")
|
||||||
|
local watch = require("awful.widget.watch")
|
||||||
|
local wibox = require("wibox")
|
||||||
|
local gears = require("gears")
|
||||||
|
|
||||||
|
local is_on
|
||||||
|
local icon_dis
|
||||||
|
local icon_enab
|
||||||
|
|
||||||
|
local widget = wibox.widget {
|
||||||
|
{
|
||||||
|
id = "icon",
|
||||||
|
widget = wibox.widget.imagebox,
|
||||||
|
resize = true
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
widget:buttons(awful.util.table.join(
|
||||||
|
awful.button({}, 1, nil, function()
|
||||||
|
if is_on then
|
||||||
|
awful.util.spawn_with_shell("bluetoothctl power off")
|
||||||
|
else
|
||||||
|
awful.util.spawn_with_shell("bluetoothctl power on")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
))
|
||||||
|
|
||||||
|
-- Add icons vor various BT states.
|
||||||
|
-- These icons should come as beautiful.icons
|
||||||
|
function widget.set_icons(disabled, enabled)
|
||||||
|
icon_dis = disabled
|
||||||
|
icon_enab = enabled
|
||||||
|
end
|
||||||
|
|
||||||
|
awful.tooltip(
|
||||||
|
{
|
||||||
|
objects = { widget },
|
||||||
|
mode = "outside",
|
||||||
|
align = "right",
|
||||||
|
fg = "white",
|
||||||
|
timer_function = function()
|
||||||
|
if is_on then
|
||||||
|
return "Bluetooth is on"
|
||||||
|
else
|
||||||
|
return "Bluetooth is off"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
preferred_positions = {"right", "left", "top", "bottom"}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
watch("bluetoothctl show", 5,
|
||||||
|
function(_, stdout)
|
||||||
|
-- Check if there bluetooth
|
||||||
|
local checker = stdout:match("Powered: yes") -- If 'Powered: yes' string is detected on stdout
|
||||||
|
local widget_icon_nme
|
||||||
|
if (checker ~= nil) then
|
||||||
|
is_on = true
|
||||||
|
widget.icon:set_image(icon_enab)
|
||||||
|
else
|
||||||
|
is_on = false
|
||||||
|
widget.icon:set_image(icon_dis)
|
||||||
|
end
|
||||||
|
collectgarbage("collect")
|
||||||
|
end,
|
||||||
|
widget
|
||||||
|
)
|
||||||
|
|
||||||
|
return widget
|
||||||
Reference in New Issue
Block a user