How to disable image caching in albert launcher

I'm trying to develop an extension to show a color code as the icon, however, Albert is caching the images used (SVG/PNG).

Here is the snippet:

# import cairosvg
import albert
import time
import os
import re


__title__ = "colors"
__version__ = "0.4.2"
__triggers__ = "col "
__authors__ = "scmanjarrez"
# __exec_deps__ = ["cairosvg"]

CWD = os.path.dirname(__file__)
HEX = re.compile(r'#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})', re.IGNORECASE)
RGB = re.compile(r'\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)|'
                 r'(\d{1,3})\s(\d{1,3})\s(\d{1,3})')


# Can be omitted
def initialize():
    pass


# Can be omitted
def finalize():
    pass


def parse_line(line):
    hex = True
    match = HEX.match(line)
    if match:
        col = (match.group(1), match.group(2), match.group(3))
    else:
        hex = False
        match = RGB.match(line)
        if match:
            col = (match.group(1), match.group(2), match.group(3))
            if match.group(1) is None:
                col = (match.group(4), match.group(5), match.group(6))
    if hex:
        hexcol = f"#{col[0]}{col[1]}{col[2]}"
        rgbcol = (f"({int(col[0], 16)}, "
                  f"{int(col[1], 16)}, "
                  f"{int(col[2], 16)})")
    else:
        hexcol = f"#{col[0]:x}{col[1]:x}{col[2]:x}"
        rgbcol = (f"({int(col[0])}, "
                  f"{int(col[1])}, "
                  f"{int(col[2])})")
    return hexcol, rgbcol


def handleQuery(query):
    if not query.isTriggered:
        return

    results = []

    if not query.string:
        item = albert.Item()
        item.icon = f"{CWD}/cwheel.svg"
        item.text = "Albert color plugin"
        item.subtext = "Allowed formats: (r,g,b), r g b and #rrggbb."
        results.append(item)
    else:
        newsvg = ''
        with open(f"{CWD}/color.svg", 'r') as cf:
            svg = cf.read()
            hexcol, rgbcol = parse_line(query.string)
            newsvg = re.sub(r'fill:.*?;', f'fill:{hexcol};', svg)
        if newsvg:
            with open(f"{CWD}/color.svg", 'w') as cf:
                cf.write(newsvg)
            # cairosvg.svg2png(
            #     url=f"{CWD}/color.svg", write_to="/tmp/color.png")
            item = albert.Item()
            item.icon = f"{CWD}/color.svg"
            # item.icon = "/tmp/color.png"
            item.text = f"hex: {hexcol} | rgb: {rgbcol}"
            results.append(item)
    return results

Even when I change the trigger, it uses the same color, but the SVG/PNG is updated correctly in the file explorer.

enter image description here


This is not possible atm. Icons are cached for performance reasons. However you could create a file for each color using the RGB code in the name. This would bloat the cache but since you use /tmp this should not be much of an issue.