Source code for libqtile.widget.canto

from libqtile.log_utils import logger
from libqtile.widget.generic_poll_text import GenPollCommand


[docs] class Canto(GenPollCommand): """Display RSS feeds updates using the canto remote Widget requirements: canto_ .. _canto: https://codezen.org/canto-ng/ """ defaults = [ ("tags", [], "List of tags to display, empty for all"), ("one_format", "{name}: {number}", "One tag display format"), ("all_format", "{number}", "All tags display format"), ] def __init__(self, **config): config["cmd"] = ["canto-remote", "status", "--tags"] GenPollCommand.__init__(self, **config) self.add_defaults(Canto.defaults) def get_info(self, output): output = output.splitlines() if not self.tags: total_items = 0 for line in output: if "maintag:" in line: current_tag_items = line[line.index(":", line.index(":") + 1) + 2 :] total_items += int(current_tag_items) return total_items else: all_tags_output = {} for line in output: second_colon_index = line.index(":", line.index(":") + 1) current_tag_name = line[:second_colon_index].strip() if current_tag_name in self.tags: current_tag_items = line[second_colon_index + 2 :].strip() all_tags_output.update({current_tag_name: current_tag_items}) return all_tags_output def parse(self, output): output = self.get_info(output) if not self.tags: display = self.all_format.format(number=output) return display else: if not output: logger.debug("Canto remote found no tags") return "" display = [] for key in output: current_tag_output = self.one_format.format(name=key, number=output[key]) display.append(current_tag_output) return "".join(display)