# Countdown widget Add the following in your `rc.lua`: ```lua local countdown = { widget = wibox.widget.textbox(), checkbox = wibox.widget { checked = false, check_color = beautiful.fg_focus, -- customize border_color = beautiful.fg_normal, -- customize border_width = 2, -- customize shape = gears.shape.circle, widget = wibox.widget.checkbox } } function countdown.set() awful.prompt.run { prompt = "Countdown minutes: ", -- floats accepted textbox = awful.screen.focused().mypromptbox.widget, exe_callback = function(timeout) countdown.seconds = tonumber(timeout) if not countdown.seconds then return end countdown.checkbox.checked = false countdown.minute_t = countdown.seconds > 1 and "minutes" or "minute" countdown.seconds = countdown.seconds * 60 countdown.timer = gears.timer({ timeout = 1 }) countdown.timer:connect_signal("timeout", function() if countdown.seconds > 0 then local minutes = math.floor(countdown.seconds / 60) local seconds = math.fmod(countdown.seconds, 60) countdown.widget:set_markup(string.format("%d:%02d", minutes, seconds)) countdown.seconds = countdown.seconds - 1 else naughty.notify({ title = "Countdown", text = string.format("%s %s timeout", timeout, countdown.minute_t) }) countdown.widget:set_markup("") countdown.checkbox.checked = true countdown.timer:stop() end end) countdown.timer:start() end } end countdown.checkbox:buttons(awful.util.table.join( awful.button({}, 1, function() countdown.set() end), -- left click awful.button({}, 3, function() -- right click if countdown.timer and countdown.timer.started then countdown.widget:set_markup("") countdown.checkbox.checked = false countdown.timer:stop() naughty.notify({ title = "Countdown", text = "Timer stopped" }) end end) )) ``` then, add `countdown.widget` and `countdown.checkbox` to your favourite `wibox`. Left clicking on the `checkbox` will prompt for a countdown, right clicking will stop the timer. The `widget` will display the countdown.