Source code for libqtile.widget.countdown

from datetime import datetime

from libqtile.widget import base


[docs] class Countdown(base.InLoopPollText): """A simple countdown timer text widget""" defaults = [ ( "format", "{D}d {H}h {M}m {S}s", "Format of the displayed text. Available variables:" "{D} == days, {H} == hours, {M} == minutes, {S} seconds.", ), ("update_interval", 1.0, "Update interval in seconds for the clock"), ("date", datetime.now(), "The datetime for the end of the countdown"), ] def __init__(self, **config): base.InLoopPollText.__init__(self, **config) self.add_defaults(Countdown.defaults) def poll(self): now = datetime.now() days = hours = minutes = seconds = 0 if not self.date < now: delta = self.date - now days = delta.days hours, rem = divmod(delta.seconds, 3600) minutes, seconds = divmod(rem, 60) data = { "D": f"{days:02d}", "H": f"{hours:02d}", "M": f"{minutes:02d}", "S": f"{seconds:02d}", } return self.format.format(**data)