diff --git a/config.yaml b/config.yaml index ef8c7d18..8e009a95 100644 --- a/config.yaml +++ b/config.yaml @@ -9,6 +9,7 @@ config: # Theme to use (located in res/themes) # Use the name of the folder as value + # Choose a theme made for your screen size (see DISPLAY_SIZE inside theme.yaml) THEME: 3.5inchTheme2 # Hardware sensors reading @@ -35,13 +36,16 @@ config: display: # Display revision: - # - A for Turing 3.5" and UsbPCMonitor 3.5"/5" - # - B for Xuanfang 3.5" (inc. flagship) - # - C for Turing 5" - # - D for Kipye Qiye Smart Display 3.5" - # - SIMU for 3.5" simulated LCD (image written in screencap.png) - # - SIMU5 for 5" simulated LCD + # - A for Turing 3.5" and UsbPCMonitor 3.5"/5" + # - B for Xuanfang 3.5" (inc. flagship) + # - C for Turing 2.1"/5"/8.8" + # - D for Kipye Qiye Smart Display 3.5" # To identify your smart screen: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Hardware-revisions + # For simulated displays (image written in screencap.png): + # - SIMU2.1 for 2.1" simulated LCD + # - SIMU3.5 for 3.5" simulated LCD + # - SIMU5 for 5" simulated LCD + # - SIMU8.8 for 8.8" simulated LCD REVISION: A # Display Brightness diff --git a/configure.py b/configure.py index a46387fe..815880b9 100755 --- a/configure.py +++ b/configure.py @@ -73,27 +73,36 @@ SIZE_8_8_INCH = "8.8\"" SIZE_2_1_INCH = "2.1\"" -size_list = (SIZE_3_5_INCH, SIZE_5_INCH) +size_list = (SIZE_2_1_INCH, SIZE_3_5_INCH, SIZE_5_INCH, SIZE_8_8_INCH) # Maps between config.yaml values and GUI description revision_and_size_to_model_map = { ('A', SIZE_3_5_INCH): TURING_MODEL, # Can also be UsbPCMonitor 3.5, does not matter since protocol is the same ('A', SIZE_5_INCH): USBPCMONITOR_MODEL, ('B', SIZE_3_5_INCH): XUANFANG_MODEL, + ('C', SIZE_2_1_INCH): TURING_MODEL, ('C', SIZE_5_INCH): TURING_MODEL, ('D', SIZE_3_5_INCH): KIPYE_MODEL, + ('E', SIZE_8_8_INCH): TURING_MODEL, + ('SIMU2.1', SIZE_2_1_INCH): SIMULATED_MODEL, ('SIMU', SIZE_3_5_INCH): SIMULATED_MODEL, + ('SIMU3.5', SIZE_3_5_INCH): SIMULATED_MODEL, ('SIMU5', SIZE_5_INCH): SIMULATED_MODEL, + ('SIMU8.8', SIZE_8_8_INCH): SIMULATED_MODEL, } model_and_size_to_revision_map = { (TURING_MODEL, SIZE_3_5_INCH): 'A', (USBPCMONITOR_MODEL, SIZE_3_5_INCH): 'A', (USBPCMONITOR_MODEL, SIZE_5_INCH): 'A', (XUANFANG_MODEL, SIZE_3_5_INCH): 'B', - (TURING_MODEL, SIZE_5_INCH): 'C', + (TURING_MODEL, SIZE_2_1_INCH): 'C', + (TURING_MODEL, SIZE_5_INCH): 'C', (KIPYE_MODEL, SIZE_3_5_INCH): 'D', - (SIMULATED_MODEL, SIZE_3_5_INCH): 'SIMU', + (TURING_MODEL, SIZE_8_8_INCH): 'E', + (SIMULATED_MODEL, SIZE_2_1_INCH): 'SIMU2.1', + (SIMULATED_MODEL, SIZE_3_5_INCH): 'SIMU3.5', (SIMULATED_MODEL, SIZE_5_INCH): 'SIMU5', + (SIMULATED_MODEL, SIZE_8_8_INCH): 'SIMU8.8', } hw_lib_map = {"AUTO": "Automatic", "LHM": "LibreHardwareMonitor (admin.)", "PYTHON": "Python libraries", "STUB": "Fake random data", "STATIC": "Fake static data"} @@ -101,6 +110,7 @@ themes_dir = 'res/themes' +circular_mask = Image.open("res/backgrounds/circular-mask.png") def get_theme_data(name: str): dir = os.path.join(themes_dir, name) @@ -177,69 +187,69 @@ def __init__(self): self.theme_author = ttk.Label(self.window) sysmon_label = ttk.Label(self.window, text='Display configuration', font='bold') - sysmon_label.place(x=320, y=0) + sysmon_label.place(x=370, y=0) self.model_label = ttk.Label(self.window, text='Smart screen model') - self.model_label.place(x=320, y=35) + self.model_label.place(x=370, y=35) self.model_cb = ttk.Combobox(self.window, values=list(dict.fromkeys((revision_and_size_to_model_map.values()))), state='readonly') self.model_cb.bind('<>', self.on_model_change) - self.model_cb.place(x=500, y=30, width=250) + self.model_cb.place(x=550, y=30, width=250) self.size_label = ttk.Label(self.window, text='Smart screen size') - self.size_label.place(x=320, y=75) + self.size_label.place(x=370, y=75) self.size_cb = ttk.Combobox(self.window, values=size_list, state='readonly') self.size_cb.bind('<>', self.on_size_change) - self.size_cb.place(x=500, y=70, width=250) + self.size_cb.place(x=550, y=70, width=250) self.com_label = ttk.Label(self.window, text='COM port') - self.com_label.place(x=320, y=115) + self.com_label.place(x=370, y=115) self.com_cb = ttk.Combobox(self.window, values=get_com_ports(), state='readonly') - self.com_cb.place(x=500, y=110, width=250) + self.com_cb.place(x=550, y=110, width=250) self.orient_label = ttk.Label(self.window, text='Orientation') - self.orient_label.place(x=320, y=155) + self.orient_label.place(x=370, y=155) self.orient_cb = ttk.Combobox(self.window, values=list(reverse_map.values()), state='readonly') - self.orient_cb.place(x=500, y=150, width=250) + self.orient_cb.place(x=550, y=150, width=250) self.brightness_string = StringVar() self.brightness_label = ttk.Label(self.window, text='Brightness') - self.brightness_label.place(x=320, y=195) + self.brightness_label.place(x=370, y=195) self.brightness_slider = ttk.Scale(self.window, from_=0, to=100, orient=HORIZONTAL, command=self.on_brightness_change) - self.brightness_slider.place(x=550, y=195, width=180) + self.brightness_slider.place(x=600, y=195, width=180) self.brightness_val_label = ttk.Label(self.window, textvariable=self.brightness_string) - self.brightness_val_label.place(x=500, y=195) + self.brightness_val_label.place(x=550, y=195) self.brightness_warning_label = ttk.Label(self.window, text="⚠ Turing 3.5\" displays can get hot at high brightness!", foreground='#ff8c00') sysmon_label = ttk.Label(self.window, text='System Monitor Configuration', font='bold') - sysmon_label.place(x=320, y=260) + sysmon_label.place(x=370, y=260) self.theme_label = ttk.Label(self.window, text='Theme') - self.theme_label.place(x=320, y=300) + self.theme_label.place(x=370, y=300) self.theme_cb = ttk.Combobox(self.window, state='readonly') - self.theme_cb.place(x=500, y=295, width=250) + self.theme_cb.place(x=550, y=295, width=250) self.theme_cb.bind('<>', self.on_theme_change) self.hwlib_label = ttk.Label(self.window, text='Hardware monitoring') - self.hwlib_label.place(x=320, y=340) + self.hwlib_label.place(x=370, y=340) if sys.platform != "win32": del hw_lib_map["LHM"] # LHM is for Windows platforms only self.hwlib_cb = ttk.Combobox(self.window, values=list(hw_lib_map.values()), state='readonly') - self.hwlib_cb.place(x=500, y=335, width=250) + self.hwlib_cb.place(x=550, y=335, width=250) self.hwlib_cb.bind('<>', self.on_hwlib_change) self.eth_label = ttk.Label(self.window, text='Ethernet interface') - self.eth_label.place(x=320, y=380) + self.eth_label.place(x=370, y=380) self.eth_cb = ttk.Combobox(self.window, values=get_net_if(), state='readonly') - self.eth_cb.place(x=500, y=375, width=250) + self.eth_cb.place(x=550, y=375, width=250) self.wl_label = ttk.Label(self.window, text='Wi-Fi interface') - self.wl_label.place(x=320, y=420) + self.wl_label.place(x=370, y=420) self.wl_cb = ttk.Combobox(self.window, values=get_net_if(), state='readonly') - self.wl_cb.place(x=500, y=415, width=250) + self.wl_cb.place(x=550, y=415, width=250) # For Windows platform only self.lhm_admin_warning = ttk.Label(self.window, @@ -272,19 +282,21 @@ def run(self): self.window.mainloop() def load_theme_preview(self): + theme_data = get_theme_data(self.theme_cb.get()) + try: theme_preview = Image.open("res/themes/" + self.theme_cb.get() + "/preview.png") + + if theme_data['display'].get("DISPLAY_SIZE", '3.5"') == '2.1"': + # This is a circular screen: apply a circle mask over the preview + theme_preview.paste(circular_mask, mask=circular_mask) except: theme_preview = Image.open("res/docs/no-preview.png") finally: - if theme_preview.width > theme_preview.height: - theme_preview = theme_preview.resize((300, 200), Image.Resampling.LANCZOS) - else: - theme_preview = theme_preview.resize((280, 420), Image.Resampling.LANCZOS) + theme_preview.thumbnail((320, 480), Image.Resampling.LANCZOS) self.theme_preview_img = ImageTk.PhotoImage(theme_preview) self.theme_preview.config(image=self.theme_preview_img) - theme_data = get_theme_data(self.theme_cb.get()) author_name = theme_data.get('author', 'unknown') self.theme_author.config(text="Author: " + author_name) if author_name.startswith("@"): @@ -478,7 +490,7 @@ def on_hwlib_change(self, e=None): def show_hide_brightness_warning(self, e=None): if int(self.brightness_slider.get()) > 50 and self.model_cb.get() == TURING_MODEL and self.size_cb.get() == SIZE_3_5_INCH: # Show warning for Turing Smart screen 3.5 with high brightness - self.brightness_warning_label.place(x=320, y=225) + self.brightness_warning_label.place(x=370, y=225) else: self.brightness_warning_label.place_forget() diff --git a/library/display.py b/library/display.py index 4a5f8e7a..d5deabaf 100644 --- a/library/display.py +++ b/library/display.py @@ -24,6 +24,7 @@ from library.lcd.lcd_comm_rev_b import LcdCommRevB from library.lcd.lcd_comm_rev_c import LcdCommRevC from library.lcd.lcd_comm_rev_d import LcdCommRevD +from library.lcd.lcd_comm_rev_e import LcdCommRevE from library.lcd.lcd_simulated import LcdSimulated from library.log import logger @@ -67,12 +68,22 @@ def __init__(self): elif config.CONFIG_DATA["display"]["REVISION"] == "D": self.lcd = LcdCommRevD(com_port=config.CONFIG_DATA['config']['COM_PORT'], update_queue=config.update_queue) - elif config.CONFIG_DATA["display"]["REVISION"] == "SIMU": + elif config.CONFIG_DATA["display"]["REVISION"] == "E": + self.lcd = LcdCommRevE(com_port=config.CONFIG_DATA['config']['COM_PORT'], + update_queue=config.update_queue) + elif (config.CONFIG_DATA["display"]["REVISION"] == "SIMU" + or config.CONFIG_DATA["display"]["REVISION"] == "SIMU3.5"): self.lcd = LcdSimulated(display_width=320, display_height=480) elif config.CONFIG_DATA["display"]["REVISION"] == "SIMU5": self.lcd = LcdSimulated(display_width=480, display_height=800) + elif config.CONFIG_DATA["display"]["REVISION"] == "SIMU2.1": + self.lcd = LcdSimulated(display_width=480, + display_height=480) + elif config.CONFIG_DATA["display"]["REVISION"] == "SIMU8.8": + self.lcd = LcdSimulated(display_width=1920, + display_height=480) else: logger.error("Unknown display revision '", config.CONFIG_DATA["display"]["REVISION"], "'") diff --git a/library/lcd/lcd_comm_rev_a.py b/library/lcd/lcd_comm_rev_a.py index cbf3f006..7980a7fd 100644 --- a/library/lcd/lcd_comm_rev_a.py +++ b/library/lcd/lcd_comm_rev_a.py @@ -64,14 +64,14 @@ def __del__(self): @staticmethod def auto_detect_com_port(): com_ports = comports() - auto_com_port = None for com_port in com_ports: if com_port.serial_number == "USB35INCHIPSV2": - auto_com_port = com_port.device - break + return com_port.device + if com_port.vid == 0x1a86 and com_port.pid == 0x5722: + return com_port.device - return auto_com_port + return None def SendCommand(self, cmd: Command, x: int, y: int, ex: int, ey: int, bypass_queue: bool = False): byteBuffer = bytearray(6) diff --git a/library/lcd/lcd_comm_rev_b.py b/library/lcd/lcd_comm_rev_b.py index a64ba872..89ae2303 100644 --- a/library/lcd/lcd_comm_rev_b.py +++ b/library/lcd/lcd_comm_rev_b.py @@ -69,14 +69,14 @@ def is_brightness_range(self): @staticmethod def auto_detect_com_port(): com_ports = comports() - auto_com_port = None for com_port in com_ports: if com_port.serial_number == "2017-2-25": - auto_com_port = com_port.device - break + return com_port.device + if com_port.vid == 0x1a86 and com_port.pid == 0x5722: + return com_port.device - return auto_com_port + return None def SendCommand(self, cmd: Command, payload=None, bypass_queue: bool = False): # New protocol (10 byte packets, framed with the command, 8 data bytes inside) diff --git a/library/lcd/lcd_comm_rev_c.py b/library/lcd/lcd_comm_rev_c.py index 2d2f5492..fbd49318 100644 --- a/library/lcd/lcd_comm_rev_c.py +++ b/library/lcd/lcd_comm_rev_c.py @@ -119,8 +119,10 @@ def __init__(self, command): class SubRevision(Enum): - UNKNOWN = "" - FIVEINCH = "chs_5inch" + UNKNOWN = None + FIVEINCH = bytearray(b'chs_5inch.dev1_rom1.87\x00') + TWOINCH = bytearray(b'chs_5inch.dev1_rom1.88\x00') + EIGHTINCH = bytearray(b'chs_88inch.dev1_rom1.88') def __init__(self, command): self.command = command @@ -141,12 +143,20 @@ def __del__(self): def auto_detect_com_port(): com_ports = comports() + # Try to find awake device through serial number or vid/pid for com_port in com_ports: - if com_port.serial_number == 'USB7INCH': - LcdCommRevC._connect_to_reset_device_name(com_port) - return LcdCommRevC.auto_detect_com_port() if com_port.serial_number == '20080411': return com_port.device + if com_port.vid == 0x0525 and com_port.pid == 0xa4a7: + return com_port.device + if com_port.vid == 0x1d6b and (com_port.pid == 0x0121 or com_port.pid == 0x0106): + return com_port.device + + # Try to find sleeping device and wake it up + for com_port in com_ports: + if com_port.serial_number == 'USB7INCH' or com_port.serial_number == 'CT21INCH': + LcdCommRevC._connect_to_reset_device_name(com_port) + return LcdCommRevC.auto_detect_com_port() return None @@ -200,6 +210,16 @@ def _hello(self): self.lcd_serial.flushInput() if response.startswith(SubRevision.FIVEINCH.value): self.sub_revision = SubRevision.FIVEINCH + self.display_width = 480 + self.display_height = 800 + elif response == SubRevision.TWOINCH.value: + self.sub_revision = SubRevision.TWOINCH + self.display_width = 480 + self.display_height = 480 + elif response == SubRevision.EIGHTINCH.value: + self.sub_revision = SubRevision.EIGHTINCH + self.display_width = 480 + self.display_height = 1920 else: logger.warning("Display returned unknown sub-revision on Hello answer (%s)" % str(response)) @@ -290,7 +310,8 @@ def DisplayPILImage( with self.update_queue_mutex: self._send_command(Command.PRE_UPDATE_BITMAP) self._send_command(Command.START_DISPLAY_BITMAP, padding=Padding.START_DISPLAY_BITMAP) - self._send_command(Command.DISPLAY_BITMAP) + self._send_command(Command.DISPLAY_BITMAP, + payload=bytearray(int(self.display_width * self.display_width / 64).to_bytes(2))) self._send_command(Command.SEND_PAYLOAD, payload=bytearray(self._generate_full_image(image, self.orientation)), readsize=1024) diff --git a/library/lcd/lcd_comm_rev_d.py b/library/lcd/lcd_comm_rev_d.py index 1a400dcf..6bd66644 100644 --- a/library/lcd/lcd_comm_rev_d.py +++ b/library/lcd/lcd_comm_rev_d.py @@ -52,14 +52,12 @@ def __del__(self): @staticmethod def auto_detect_com_port(): com_ports = comports() - auto_com_port = None for com_port in com_ports: if com_port.vid == 0x454d and com_port.pid == 0x4e41: - auto_com_port = com_port.device - break + return com_port.device - return auto_com_port + return None def WriteData(self, byteBuffer: bytearray): LcdComm.WriteData(self, byteBuffer) diff --git a/library/lcd/lcd_comm_rev_e.py b/library/lcd/lcd_comm_rev_e.py new file mode 100644 index 00000000..44f41656 --- /dev/null +++ b/library/lcd/lcd_comm_rev_e.py @@ -0,0 +1,539 @@ +# turing-smart-screen-python - a Python system monitor and library for USB-C displays like Turing Smart Screen or XuanFang +# https://github.com/mathoudebine/turing-smart-screen-python/ + +# Copyright (C) 2021-2023 Matthieu Houdebine (mathoudebine) +# Copyright (C) 2023-2023 Alex W. Baulé (alexwbaule) +# Copyright (C) 2023-2023 Arthur Ferrai (arthurferrai) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import queue +import time +from enum import Enum +from math import ceil + +import serial +from PIL import Image +from serial.tools.list_ports import comports + +from library.lcd.lcd_comm import Orientation, LcdComm +from library.log import logger + + +class Count: + Start = 0 + +class Command(Enum): + # COMMANDS + HELLO = bytearray((0x01, 0xef, 0x69, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc5, 0xd3)) + + RESTART = bytearray((0x84, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + TURNOFF = bytearray((0x83, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + TURNON = bytearray((0x83, 0xef, 0x69, 0x00, 0x00, 0x00, 0x00)) + + SET_BRIGHTNESS = bytearray( + (0x7b, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00)) + + # STOP COMMANDS + STOP_VIDEO = bytearray((0x79, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + STOP_MEDIA = bytearray((0x96, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + + # IMAGE QUERY STATUS + QUERY_STATUS = bytearray((0xcf, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + + # STATIC IMAGE + START_DISPLAY_BITMAP = bytearray((0x2c,)) + PRE_UPDATE_BITMAP = bytearray((0x86, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + UPDATE_BITMAP = bytearray((0xcc, 0xef, 0x69,)) + UPDATE_BITMAP_NO_CHANGES = bytearray( + (0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x69,)) + STOP_UPDATE_BITMAP = bytearray((0x87, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + + RESTARTSCREEN = bytearray((0x84, 0xef, 0x69, 0x00, 0x00, 0x00, 0x01)) + DISPLAY_BITMAP = bytearray((0xc8, 0xef, 0x69)) + + OPTIONS = bytearray((0x7d, 0xef, 0x69, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x00, 0x00, 0xff)) + OPTIONS_TURNOFF = bytearray((0x7d, 0xef, 0x69, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x00, 0x00, 0x61)) + STARTMODE_DEFAULT = bytearray((0x00,)) + STARTMODE_IMAGE = bytearray((0x01,)) + STARTMODE_VIDEO = bytearray((0x02,)) + FLIP_180 = bytearray((0x01,)) + NO_FLIP = bytearray((0x00,)) + + UPLOAD_FILE = bytearray((0x6F, 0xef, 0x69,)) + DELETE_FILE = bytearray((0x66, 0xef, 0x69,)) + LIST_FILES = bytearray((0x65, 0xEF, 0x69,)) + QUERY_FILE_SIZE = bytearray((0x6e, 0xef, 0x69,)) + QUERY_STORAGE_INFORMATION = bytearray((0x64, 0xef, 0x69, + 0x00, 0x00, 0x00, 0x01,)) + + PLAY_IMAGE = bytearray((0x8C, 0xEF, 0x69,)) + PLAY_VIDEO = bytearray((0x78, 0xEF, 0x69,)) + + SEND_PAYLOAD = bytearray((0xFF,)) + + def __init__(self, command): + self.command = command + + +class Padding(Enum): + NULL = bytearray([0x00]) + START_DISPLAY_BITMAP = bytearray([0x2c]) + + def __init__(self, command): + self.command = command + + +class SleepInterval(Enum): + OFF = bytearray((0x00,)) + ONE = bytearray((0x01,)) + TWO = bytearray((0x02,)) + THREE = bytearray((0x03,)) + FOUR = bytearray((0x04,)) + FIVE = bytearray((0x05,)) + SIX = bytearray((0x06,)) + SEVEN = bytearray((0x07,)) + EIGHT = bytearray((0x08,)) + NINE = bytearray((0x09,)) + TEN = bytearray((0x0a,)) + + def __init__(self, command): + self.command = command + +# This class is for Turing Smart Screen 5" screens +class LcdCommRevE(LcdComm): + def __init__(self, com_port: str = "AUTO", display_width: int = 1920, display_height: int = 480, + update_queue: queue.Queue = None): + logger.debug("HW revision: E") + LcdComm.__init__(self, com_port, display_width, + display_height, update_queue) + self.openSerial() + + def __del__(self): + self.closeSerial() + + @staticmethod + def auto_detect_com_port(): + com_ports = comports() + + # Try to find awake device through serial number or vid/pid + for com_port in com_ports: + if com_port.vid == 0x0525 and com_port.pid == 0xa4a7: + return com_port.device + + # If device is asleep, it is listening on a different COM port and identifies as CT88INCH or VID_1A86 & PID_CA88 + for com_port in com_ports: + if com_port.serial_number == "CT88INCH": + logger.debug("Oh look, I found a sleeping 88 inch. Wakey wakey!") + return com_port.device + elif com_port.vid == 0x1a86 and com_port.pid == 0xCA88: + return com_port.device + + return None + + @staticmethod + def _connect_to_reset_device_name(com_port): + # this device enumerates differently when off, we need to connect once to reset it to correct COM device + try: + logger.debug(f"Waiting for device {com_port} to be turned ON...") + serial.Serial(com_port.device, 115200, timeout=1, rtscts=1) + except serial.serialutil.SerialException: + pass + time.sleep(10) + + def _send_command(self, cmd: Command, payload: bytearray = None, padding: Padding = None, + bypass_queue: bool = False, readsize: int = None) -> bytes | None: + message = bytearray() + + if cmd != Command.SEND_PAYLOAD: + message = bytearray(cmd.value) + + # logger.debug("Command: {}".format(cmd.name)) + + if not padding: + padding = Padding.NULL + + if payload: + message.extend(payload) + + msg_size = len(message) + + if not (msg_size / 250).is_integer(): + pad_size = (250 * ceil(msg_size / 250) - msg_size) + message += bytearray(padding.value * pad_size) + + # If no queue for async requests, or if asked explicitly to do the request sequentially: do request now + if not self.update_queue or bypass_queue: + self.WriteData(message) + if readsize: + return self.ReadData(readsize) + else: + # Lock queue mutex then queue the request + self.update_queue.put((self.WriteData, [message])) + if readsize: + self.update_queue.put((self.ReadData, [readsize])) + + def _hello(self): + self._init_packet_interaction(); + + def InitializeComm(self): + pass + + def Reset(self): + logger.info("Display reset (COM port may change)...") + + # When the device is asleep, there is an empty response to the hello + self._send_command(Command.HELLO, readsize=1024, bypass_queue=True) + + # Device wants to receive the restart command twice + self._send_command(Command.RESTART, bypass_queue=True) + self._send_command(Command.RESTART, bypass_queue=True) + self.closeSerial() + + # Wait for display reset then reconnect + time.sleep(15) + + # When waking up, the device switches from COM3 to COM5 + # -> Reset com port + self.com_port = 'AUTO' + + self.openSerial() + + def Clear(self): + # This hardware does not implement a Clear command: display a blank image on the whole screen + # Force an orientation in case the screen is currently configured with one different from the theme + backup_orientation = self.orientation + self.SetOrientation(orientation=Orientation.PORTRAIT) + + blank = Image.new( + "RGB", (self.get_width(), self.get_height()), (255, 255, 255)) + self.DisplayPILImage(blank) + + # Restore orientation + self.SetOrientation(orientation=backup_orientation) + + def ScreenOff(self): + logger.info("Calling ScreenOff") + + # I really don't know why I cannot stop the bitmap updates from here + + self.SetBrightness(0, is_isolated_call=False, bypass_queue=True) + + self._send_command(Command.OPTIONS_TURNOFF, bypass_queue=True) + self._send_command(Command.TURNOFF, bypass_queue=True) + self._send_command(Command.STOP_VIDEO, bypass_queue=True) + + # UsbMonitorS sends a completely black bitmap at this point + # Experiments showed that this is not needed + + def ScreenOn(self): + logger.info("Calling ScreenOn") + # Display needs to be reinizialized at this point, but as far as I can tell, this isn't possible at this point + + self.closeSerial() + # # Give the display some time to wake up and init COM5 + time.sleep(10) + + self.com_port = "AUTO" + self.openSerial() + + def SetBrightness(self, level: int = 25, is_isolated_call: bool = True, bypass_queue: bool = True): + # logger.info("Call SetBrightness") + assert 0 <= level <= 100, 'Brightness level must be [0-100]' + + # Brightness scales from 0 to 255, with 255 being the brightest and 0 being the darkest. + # Convert our brightness % to an absolute value. + converted_level = int((level / 100) * 255) + + if is_isolated_call: + self._init_packet_interaction() + + self._send_command(Command.SET_BRIGHTNESS, payload=bytearray( + (converted_level,)), bypass_queue=bypass_queue) + + def SetOrientation(self, orientation: Orientation = Orientation.PORTRAIT, is_isolated_call: bool = True): + self.orientation = orientation + # logger.info(f"Call SetOrientation to: {self.orientation.name}") + + if is_isolated_call: + self._init_packet_interaction() + + if self.orientation == Orientation.REVERSE_LANDSCAPE or self.orientation == Orientation.REVERSE_PORTRAIT: + b = Command.STARTMODE_DEFAULT.value + Padding.NULL.value + \ + Command.FLIP_180.value + SleepInterval.OFF.value + self._send_command(Command.OPTIONS, payload=b) + else: + b = Command.STARTMODE_DEFAULT.value + Padding.NULL.value + \ + Command.NO_FLIP.value + SleepInterval.OFF.value + self._send_command(Command.OPTIONS, payload=b) + + def ListDirectory(self, path: str) -> tuple[list[str], list[str]]: + self._init_packet_interaction() + + payload = len(path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(path, 'utf-8') + + response = self._send_command( + Command.LIST_FILES, + payload=payload, + readsize=10240, + bypass_queue=True) + + responseList = response.decode().rstrip('\x00') + + if not responseList.startswith("result"): + logger.warning("Failed to list files") + return [], [] + + parts = responseList.split(':') + return parts[2].split('/')[:-1], parts[3].split('/')[:-1] + + def UploadFile(self, src_path: str, target_path: str): + payload = len(target_path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(target_path, 'utf-8') + + response = self._send_command( + Command.UPLOAD_FILE, + payload=payload, + readsize=1024, + bypass_queue=True) + + assert response.startswith(b'create_success'), 'Failed to create file' + + with open(src_path, 'rb') as file: + byte = file.read(1024) + sent = 0 + while byte != b"": + if len(byte) == 1024: + self._send_command(Command.SEND_PAYLOAD, + payload=byte, bypass_queue=True) + sent += 1024 + else: + response = self._send_command( + Command.SEND_PAYLOAD, payload=byte, readsize=1024, bypass_queue=True) + assert response.startswith( + b'file_rev_done'), 'Failed to upload file' + print("Sent %d bytes" % sent) + byte = file.read(1024) + + def DeleteFile(self, target_path: str): + self._init_packet_interaction() + + payload = len(target_path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(target_path, 'utf-8') + + self._send_command( + Command.DELETE_FILE, + payload=payload, + bypass_queue=True) + + def GetFileSize(self, target_path: str, is_isolated_call: bool = True): + if is_isolated_call: + self._init_packet_interaction() + + payload = len(target_path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(target_path, 'utf-8') + + response = self._send_command( + Command.QUERY_FILE_SIZE, + payload=payload, + readsize=1024, + bypass_queue=True) + + size = int(response.decode().rstrip('\x00')) + + assert size > 0, 'File does not exist' + return size + + def PlayImageFromStorage(self, target_path: str, is_isolated_call: bool = True): + if is_isolated_call: + self._init_packet_interaction() + + payload = len(target_path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(target_path, 'utf-8') + + response = self._send_command(Command.PLAY_IMAGE, payload=payload, + readsize=1024, bypass_queue=True) + + assert response.startswith(b'play_img_ok'), 'Failed to play image' + + def PlayVideoFromStorage(self, target_path: str, is_isolated_call: bool = True): + if is_isolated_call: + self._init_packet_interaction() + + payload = len(target_path).to_bytes(4, byteorder='big') + \ + Padding.NULL.value * 3 + bytearray(target_path, 'utf-8') + + response = self._send_command( + Command.PLAY_VIDEO, + payload=payload, + readsize=1024, + bypass_queue=True) + + assert response.startswith( + b'play_video_success'), 'Failed to play video' + + def DisplayPILImage( + self, + image: Image, + x: int = 0, y: int = 0, + image_width: int = 0, + image_height: int = 0 + ): + # If the image height/width isn't provided, use the native image size + if not image_height: + image_height = image.size[1] + if not image_width: + image_width = image.size[0] + + # If our image is bigger than our display, resize it to fit our screen + if image.size[1] > self.get_height(): + image_height = self.get_height() + if image.size[0] > self.get_width(): + image_width = self.get_width() + + assert x <= self.get_width(), 'Image X coordinate must be <= display width' + assert y <= self.get_height(), 'Image Y coordinate must be <= display height' + assert image_height > 0, 'Image height must be > 0' + assert image_width > 0, 'Image width must be > 0' + + if x == 0 and y == 0 and (image_width == self.get_width()) and (image_height == self.get_height()): + with self.update_queue_mutex: + self._stop_media() + self.SetOrientation(self.orientation, is_isolated_call=False) + + self._send_command(Command.PRE_UPDATE_BITMAP) + self._send_command(Command.START_DISPLAY_BITMAP, + padding=Padding.START_DISPLAY_BITMAP) + + self.SetBrightness(60, is_isolated_call=False) + + self._send_command( + Command.DISPLAY_BITMAP, + payload=bytearray(int(self.display_width * self.display_height * 4).to_bytes(4)), + bypass_queue=True + ) + + response = self._send_command( + Command.SEND_PAYLOAD, + payload=bytearray( + self._generate_full_image(image, self.orientation)), + readsize=1024, + bypass_queue=True + ) + + if not response.startswith(b'full_png_sucess'): + logger.warning("Failed to display bitmap") + + self._send_command(Command.QUERY_STATUS, readsize=1024) + else: + with self.update_queue_mutex: + update_image, img_len = self._generate_update_image( + image, x, y, self.orientation) + + payload_len = img_len.to_bytes(4, byteorder='big') + command_payload = payload_len + \ + Count.Start.to_bytes(7, byteorder='big') + + self._send_command(Command.UPDATE_BITMAP, + payload=command_payload) + self._send_command(Command.SEND_PAYLOAD, payload=update_image) + self._send_command(Command.QUERY_STATUS, readsize=1024) + Count.Start += 1 + + @staticmethod + def _generate_full_image(image: Image, orientation: Orientation = Orientation.PORTRAIT): + if orientation == Orientation.REVERSE_PORTRAIT: + image = image.rotate(90, expand=True) + elif orientation == Orientation.REVERSE_LANDSCAPE: + image = image.rotate(180, expand=True) + elif orientation == Orientation.PORTRAIT: + image = image.rotate(270, expand=True) + + image_data = image.convert("RGBA").load() + pixel_data = [] + for y in range(image.height): + for x in range(image.width): + pixel = image_data[x, y] + pixel_data += [pixel[2], pixel[1], pixel[0], pixel[3]] + + hex_data = bytes(pixel_data) + return b'\x00'.join(hex_data[i:i + 249] for i in range(0, len(hex_data), 249)) + + def _generate_update_image(self, image, x, y, orientation: Orientation = Orientation.PORTRAIT): + x0, y0 = x, y + + if orientation == Orientation.PORTRAIT: + y0 = self.get_height() - y - image.height + elif orientation == Orientation.REVERSE_PORTRAIT: + image = image.rotate(180, expand=True) + x0 = self.get_width() - x - image.width + elif orientation == Orientation.LANDSCAPE: + image = image.rotate(90, expand=True) + x0, y0 = y, x + elif orientation == Orientation.REVERSE_LANDSCAPE: + image = image.rotate(270, expand=True) + x0 = self.get_height() - y - image.width + y0 = self.get_width() - x - image.height + + img_raw_data = bytes([]) + image_data = image.convert("RGBA").load() + + for w in range(image.width): + # Target start + img_raw_data += (((x0 + w) * self.display_height) + y0).to_bytes(3, byteorder='big') + + # Number of pixels to be written + img_raw_data += image.height.to_bytes(2, byteorder='big') + + for h in range(image.height): + current_pixel = image_data[w, image.height - h - 1] + img_raw_data += bytes([current_pixel[2], current_pixel[1], + current_pixel[0], current_pixel[3]]) + + img_raw_data += bytes([0xef, 0x69]) + + return b'\x00'.join(img_raw_data[i:i + 249] for i in range(0, len(img_raw_data), 249)), len(img_raw_data) + + def _stop_media(self, is_isolated_call: bool = True): + if is_isolated_call: + self._init_packet_interaction() + + self._send_command(Command.STOP_MEDIA, bypass_queue=True) + response = self._send_command( + Command.STOP_VIDEO, readsize=1024, bypass_queue=True) + + if not response.startswith(b'media_stop'): + logger.warning("Failed to stop media, got response: %s", response) + + def _init_packet_interaction(self): + response = self._send_command( + Command.HELLO, readsize=1024, bypass_queue=True) + + if not response.startswith(b'chs_88inch'): + logger.warning("Failed to initialize packet interaction, got response: %s", response) + + def _no_update(self): + payload_len = (8).to_bytes(4, byteorder='big') + command_payload = payload_len + \ + Count.Start.to_bytes(7, byteorder='big') + + self._send_command(Command.UPDATE_BITMAP, payload=command_payload) + self._send_command(Command.UPDATE_BITMAP_NO_CHANGES) + self._send_command(Command.QUERY_STATUS, readsize=1024) + + Count.Start += 1 diff --git a/res/backgrounds/circular-mask.png b/res/backgrounds/circular-mask.png new file mode 100644 index 00000000..82ee917c Binary files /dev/null and b/res/backgrounds/circular-mask.png differ diff --git a/res/themes/--Theme examples/2.1inch/24/theme_res_1651.png b/res/themes/--Theme examples/2.1inch/24/theme_res_1651.png new file mode 100644 index 00000000..e68a317a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/24/theme_res_1651.png differ diff --git a/res/themes/--Theme examples/2.1inch/24/theme_res_179576.png b/res/themes/--Theme examples/2.1inch/24/theme_res_179576.png new file mode 100644 index 00000000..7f0e3d0a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/24/theme_res_179576.png differ diff --git a/res/themes/--Theme examples/2.1inch/24/theme_res_344810.png b/res/themes/--Theme examples/2.1inch/24/theme_res_344810.png new file mode 100644 index 00000000..7f0e3d0a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/24/theme_res_344810.png differ diff --git a/res/themes/--Theme examples/2.1inch/24/theme_res_510053.png b/res/themes/--Theme examples/2.1inch/24/theme_res_510053.png new file mode 100644 index 00000000..bfcd4e24 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/24/theme_res_510053.png differ diff --git a/res/themes/--Theme examples/2.1inch/24/theme_res_513278.png b/res/themes/--Theme examples/2.1inch/24/theme_res_513278.png new file mode 100644 index 00000000..853c81d6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/24/theme_res_513278.png differ diff --git a/res/themes/--Theme examples/2.1inch/25/theme_res_100830.png b/res/themes/--Theme examples/2.1inch/25/theme_res_100830.png new file mode 100644 index 00000000..f2c251f5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/25/theme_res_100830.png differ diff --git a/res/themes/--Theme examples/2.1inch/25/theme_res_1645.png b/res/themes/--Theme examples/2.1inch/25/theme_res_1645.png new file mode 100644 index 00000000..767a627f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/25/theme_res_1645.png differ diff --git a/res/themes/--Theme examples/2.1inch/25/theme_res_183089.png b/res/themes/--Theme examples/2.1inch/25/theme_res_183089.png new file mode 100644 index 00000000..f2c251f5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/25/theme_res_183089.png differ diff --git a/res/themes/--Theme examples/2.1inch/25/theme_res_265357.png b/res/themes/--Theme examples/2.1inch/25/theme_res_265357.png new file mode 100644 index 00000000..88171073 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/25/theme_res_265357.png differ diff --git a/res/themes/--Theme examples/2.1inch/25/theme_res_269501.png b/res/themes/--Theme examples/2.1inch/25/theme_res_269501.png new file mode 100644 index 00000000..62b21f8b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/25/theme_res_269501.png differ diff --git a/res/themes/--Theme examples/2.1inch/27/theme_res_1024648.png b/res/themes/--Theme examples/2.1inch/27/theme_res_1024648.png new file mode 100644 index 00000000..ab2def37 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/27/theme_res_1024648.png differ diff --git a/res/themes/--Theme examples/2.1inch/27/theme_res_1040286.png b/res/themes/--Theme examples/2.1inch/27/theme_res_1040286.png new file mode 100644 index 00000000..28dc3064 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/27/theme_res_1040286.png differ diff --git a/res/themes/--Theme examples/2.1inch/27/theme_res_1638.png b/res/themes/--Theme examples/2.1inch/27/theme_res_1638.png new file mode 100644 index 00000000..d6b2b10d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/27/theme_res_1638.png differ diff --git a/res/themes/--Theme examples/2.1inch/27/theme_res_342628.png b/res/themes/--Theme examples/2.1inch/27/theme_res_342628.png new file mode 100644 index 00000000..98a3931a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/27/theme_res_342628.png differ diff --git a/res/themes/--Theme examples/2.1inch/27/theme_res_685977.png b/res/themes/--Theme examples/2.1inch/27/theme_res_685977.png new file mode 100644 index 00000000..98a3931a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/27/theme_res_685977.png differ diff --git a/res/themes/--Theme examples/2.1inch/28/theme_res_1653.png b/res/themes/--Theme examples/2.1inch/28/theme_res_1653.png new file mode 100644 index 00000000..c4f4a7d9 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/28/theme_res_1653.png differ diff --git a/res/themes/--Theme examples/2.1inch/28/theme_res_287858.png b/res/themes/--Theme examples/2.1inch/28/theme_res_287858.png new file mode 100644 index 00000000..fe7636ff Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/28/theme_res_287858.png differ diff --git a/res/themes/--Theme examples/2.1inch/28/theme_res_574404.png b/res/themes/--Theme examples/2.1inch/28/theme_res_574404.png new file mode 100644 index 00000000..fe7636ff Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/28/theme_res_574404.png differ diff --git a/res/themes/--Theme examples/2.1inch/29/theme_res_1645.png b/res/themes/--Theme examples/2.1inch/29/theme_res_1645.png new file mode 100644 index 00000000..9f1107ae Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/29/theme_res_1645.png differ diff --git a/res/themes/--Theme examples/2.1inch/29/theme_res_356272.png b/res/themes/--Theme examples/2.1inch/29/theme_res_356272.png new file mode 100644 index 00000000..8f1d926f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/29/theme_res_356272.png differ diff --git a/res/themes/--Theme examples/2.1inch/29/theme_res_677794.png b/res/themes/--Theme examples/2.1inch/29/theme_res_677794.png new file mode 100644 index 00000000..8f1d926f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/29/theme_res_677794.png differ diff --git a/res/themes/--Theme examples/2.1inch/31/theme_res_15515.png b/res/themes/--Theme examples/2.1inch/31/theme_res_15515.png new file mode 100644 index 00000000..cf7c0e08 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/31/theme_res_15515.png differ diff --git a/res/themes/--Theme examples/2.1inch/31/theme_res_1641.png b/res/themes/--Theme examples/2.1inch/31/theme_res_1641.png new file mode 100644 index 00000000..3a74058f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/31/theme_res_1641.png differ diff --git a/res/themes/--Theme examples/2.1inch/31/theme_res_24429.png b/res/themes/--Theme examples/2.1inch/31/theme_res_24429.png new file mode 100644 index 00000000..cf7c0e08 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/31/theme_res_24429.png differ diff --git a/res/themes/--Theme examples/2.1inch/31/theme_res_28887.png b/res/themes/--Theme examples/2.1inch/31/theme_res_28887.png new file mode 100644 index 00000000..6dfd7e19 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/31/theme_res_28887.png differ diff --git a/res/themes/--Theme examples/2.1inch/31/theme_res_34159.png b/res/themes/--Theme examples/2.1inch/31/theme_res_34159.png new file mode 100644 index 00000000..2d919013 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/31/theme_res_34159.png differ diff --git a/res/themes/--Theme examples/2.1inch/32/theme_res_1638.png b/res/themes/--Theme examples/2.1inch/32/theme_res_1638.png new file mode 100644 index 00000000..48132356 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/32/theme_res_1638.png differ diff --git a/res/themes/--Theme examples/2.1inch/32/theme_res_165033.png b/res/themes/--Theme examples/2.1inch/32/theme_res_165033.png new file mode 100644 index 00000000..9ef315fe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/32/theme_res_165033.png differ diff --git a/res/themes/--Theme examples/2.1inch/32/theme_res_84304.png b/res/themes/--Theme examples/2.1inch/32/theme_res_84304.png new file mode 100644 index 00000000..9ef315fe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/32/theme_res_84304.png differ diff --git a/res/themes/--Theme examples/2.1inch/33/theme_res_1653.png b/res/themes/--Theme examples/2.1inch/33/theme_res_1653.png new file mode 100644 index 00000000..e7c78c55 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/33/theme_res_1653.png differ diff --git a/res/themes/--Theme examples/2.1inch/33/theme_res_290241.png b/res/themes/--Theme examples/2.1inch/33/theme_res_290241.png new file mode 100644 index 00000000..9d96b620 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/33/theme_res_290241.png differ diff --git a/res/themes/--Theme examples/2.1inch/33/theme_res_576260.png b/res/themes/--Theme examples/2.1inch/33/theme_res_576260.png new file mode 100644 index 00000000..9d96b620 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/33/theme_res_576260.png differ diff --git a/res/themes/--Theme examples/2.1inch/33/theme_res_857629.png b/res/themes/--Theme examples/2.1inch/33/theme_res_857629.png new file mode 100644 index 00000000..c29189d5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/33/theme_res_857629.png differ diff --git a/res/themes/--Theme examples/2.1inch/33/theme_res_866832.png b/res/themes/--Theme examples/2.1inch/33/theme_res_866832.png new file mode 100644 index 00000000..f46f665f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/33/theme_res_866832.png differ diff --git a/res/themes/--Theme examples/2.1inch/34/theme_res_1572.png b/res/themes/--Theme examples/2.1inch/34/theme_res_1572.png new file mode 100644 index 00000000..fe98536a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/34/theme_res_1572.png differ diff --git a/res/themes/--Theme examples/2.1inch/34/theme_res_324196.png b/res/themes/--Theme examples/2.1inch/34/theme_res_324196.png new file mode 100644 index 00000000..a2982c2f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/34/theme_res_324196.png differ diff --git a/res/themes/--Theme examples/2.1inch/34/theme_res_643568.png b/res/themes/--Theme examples/2.1inch/34/theme_res_643568.png new file mode 100644 index 00000000..a2982c2f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/34/theme_res_643568.png differ diff --git a/res/themes/--Theme examples/2.1inch/34/theme_res_962949.png b/res/themes/--Theme examples/2.1inch/34/theme_res_962949.png new file mode 100644 index 00000000..7afd1dbe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/34/theme_res_962949.png differ diff --git a/res/themes/--Theme examples/2.1inch/34/theme_res_966279.png b/res/themes/--Theme examples/2.1inch/34/theme_res_966279.png new file mode 100644 index 00000000..159c96dd Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/34/theme_res_966279.png differ diff --git a/res/themes/--Theme examples/2.1inch/35/theme_res_1644.png b/res/themes/--Theme examples/2.1inch/35/theme_res_1644.png new file mode 100644 index 00000000..62109c92 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/35/theme_res_1644.png differ diff --git a/res/themes/--Theme examples/2.1inch/35/theme_res_305266.png b/res/themes/--Theme examples/2.1inch/35/theme_res_305266.png new file mode 100644 index 00000000..2b62609b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/35/theme_res_305266.png differ diff --git a/res/themes/--Theme examples/2.1inch/35/theme_res_607490.png b/res/themes/--Theme examples/2.1inch/35/theme_res_607490.png new file mode 100644 index 00000000..2b62609b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/35/theme_res_607490.png differ diff --git a/res/themes/--Theme examples/2.1inch/35/theme_res_905284.png b/res/themes/--Theme examples/2.1inch/35/theme_res_905284.png new file mode 100644 index 00000000..19bc3204 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/35/theme_res_905284.png differ diff --git a/res/themes/--Theme examples/2.1inch/35/theme_res_911133.png b/res/themes/--Theme examples/2.1inch/35/theme_res_911133.png new file mode 100644 index 00000000..f46adb9b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/35/theme_res_911133.png differ diff --git a/res/themes/--Theme examples/2.1inch/36/theme_res_1635.png b/res/themes/--Theme examples/2.1inch/36/theme_res_1635.png new file mode 100644 index 00000000..c0be583d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/36/theme_res_1635.png differ diff --git a/res/themes/--Theme examples/2.1inch/36/theme_res_302648.png b/res/themes/--Theme examples/2.1inch/36/theme_res_302648.png new file mode 100644 index 00000000..4527bee7 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/36/theme_res_302648.png differ diff --git a/res/themes/--Theme examples/2.1inch/36/theme_res_600649.png b/res/themes/--Theme examples/2.1inch/36/theme_res_600649.png new file mode 100644 index 00000000..4527bee7 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/36/theme_res_600649.png differ diff --git a/res/themes/--Theme examples/2.1inch/36/theme_res_894011.png b/res/themes/--Theme examples/2.1inch/36/theme_res_894011.png new file mode 100644 index 00000000..7afd1dbe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/36/theme_res_894011.png differ diff --git a/res/themes/--Theme examples/2.1inch/36/theme_res_897341.png b/res/themes/--Theme examples/2.1inch/36/theme_res_897341.png new file mode 100644 index 00000000..159c96dd Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/36/theme_res_897341.png differ diff --git a/res/themes/--Theme examples/2.1inch/37/theme_res_1315361.png b/res/themes/--Theme examples/2.1inch/37/theme_res_1315361.png new file mode 100644 index 00000000..8024b650 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/37/theme_res_1315361.png differ diff --git a/res/themes/--Theme examples/2.1inch/37/theme_res_1320745.png b/res/themes/--Theme examples/2.1inch/37/theme_res_1320745.png new file mode 100644 index 00000000..7d91dbb6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/37/theme_res_1320745.png differ diff --git a/res/themes/--Theme examples/2.1inch/37/theme_res_1538.png b/res/themes/--Theme examples/2.1inch/37/theme_res_1538.png new file mode 100644 index 00000000..d770c80e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/37/theme_res_1538.png differ diff --git a/res/themes/--Theme examples/2.1inch/37/theme_res_415167.png b/res/themes/--Theme examples/2.1inch/37/theme_res_415167.png new file mode 100644 index 00000000..4f312baf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/37/theme_res_415167.png differ diff --git a/res/themes/--Theme examples/2.1inch/37/theme_res_860222.png b/res/themes/--Theme examples/2.1inch/37/theme_res_860222.png new file mode 100644 index 00000000..76140e40 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/37/theme_res_860222.png differ diff --git a/res/themes/--Theme examples/2.1inch/38/theme_res_1248820.png b/res/themes/--Theme examples/2.1inch/38/theme_res_1248820.png new file mode 100644 index 00000000..8024b650 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/38/theme_res_1248820.png differ diff --git a/res/themes/--Theme examples/2.1inch/38/theme_res_1254204.png b/res/themes/--Theme examples/2.1inch/38/theme_res_1254204.png new file mode 100644 index 00000000..7d91dbb6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/38/theme_res_1254204.png differ diff --git a/res/themes/--Theme examples/2.1inch/38/theme_res_1537.png b/res/themes/--Theme examples/2.1inch/38/theme_res_1537.png new file mode 100644 index 00000000..a7faa0fc Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/38/theme_res_1537.png differ diff --git a/res/themes/--Theme examples/2.1inch/38/theme_res_389038.png b/res/themes/--Theme examples/2.1inch/38/theme_res_389038.png new file mode 100644 index 00000000..e34a63ca Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/38/theme_res_389038.png differ diff --git a/res/themes/--Theme examples/2.1inch/38/theme_res_816302.png b/res/themes/--Theme examples/2.1inch/38/theme_res_816302.png new file mode 100644 index 00000000..8bd1a8a5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/38/theme_res_816302.png differ diff --git a/res/themes/--Theme examples/2.1inch/39/theme_res_168570.png b/res/themes/--Theme examples/2.1inch/39/theme_res_168570.png new file mode 100644 index 00000000..98a05071 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/39/theme_res_168570.png differ diff --git a/res/themes/--Theme examples/2.1inch/39/theme_res_1986.png b/res/themes/--Theme examples/2.1inch/39/theme_res_1986.png new file mode 100644 index 00000000..ccb1d88f Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/39/theme_res_1986.png differ diff --git a/res/themes/--Theme examples/2.1inch/39/theme_res_326645.png b/res/themes/--Theme examples/2.1inch/39/theme_res_326645.png new file mode 100644 index 00000000..98a05071 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/39/theme_res_326645.png differ diff --git a/res/themes/--Theme examples/2.1inch/39/theme_res_484729.png b/res/themes/--Theme examples/2.1inch/39/theme_res_484729.png new file mode 100644 index 00000000..8c3a26b0 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/39/theme_res_484729.png differ diff --git a/res/themes/--Theme examples/2.1inch/39/theme_res_497938.png b/res/themes/--Theme examples/2.1inch/39/theme_res_497938.png new file mode 100644 index 00000000..a51e4b8a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/39/theme_res_497938.png differ diff --git a/res/themes/--Theme examples/2.1inch/40/theme_res_1006802.png b/res/themes/--Theme examples/2.1inch/40/theme_res_1006802.png new file mode 100644 index 00000000..6b118a49 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/40/theme_res_1006802.png differ diff --git a/res/themes/--Theme examples/2.1inch/40/theme_res_1538.png b/res/themes/--Theme examples/2.1inch/40/theme_res_1538.png new file mode 100644 index 00000000..8e84118b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/40/theme_res_1538.png differ diff --git a/res/themes/--Theme examples/2.1inch/40/theme_res_311102.png b/res/themes/--Theme examples/2.1inch/40/theme_res_311102.png new file mode 100644 index 00000000..eb211d0a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/40/theme_res_311102.png differ diff --git a/res/themes/--Theme examples/2.1inch/40/theme_res_649360.png b/res/themes/--Theme examples/2.1inch/40/theme_res_649360.png new file mode 100644 index 00000000..40e5b18a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/40/theme_res_649360.png differ diff --git a/res/themes/--Theme examples/2.1inch/40/theme_res_992099.png b/res/themes/--Theme examples/2.1inch/40/theme_res_992099.png new file mode 100644 index 00000000..8a7747af Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/40/theme_res_992099.png differ diff --git a/res/themes/--Theme examples/2.1inch/41/theme_res_1574.png b/res/themes/--Theme examples/2.1inch/41/theme_res_1574.png new file mode 100644 index 00000000..a1b12a39 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/41/theme_res_1574.png differ diff --git a/res/themes/--Theme examples/2.1inch/41/theme_res_191365.png b/res/themes/--Theme examples/2.1inch/41/theme_res_191365.png new file mode 100644 index 00000000..a806c077 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/41/theme_res_191365.png differ diff --git a/res/themes/--Theme examples/2.1inch/41/theme_res_370329.png b/res/themes/--Theme examples/2.1inch/41/theme_res_370329.png new file mode 100644 index 00000000..a806c077 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/41/theme_res_370329.png differ diff --git a/res/themes/--Theme examples/2.1inch/41/theme_res_549302.png b/res/themes/--Theme examples/2.1inch/41/theme_res_549302.png new file mode 100644 index 00000000..4167fc00 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/41/theme_res_549302.png differ diff --git a/res/themes/--Theme examples/2.1inch/41/theme_res_554158.png b/res/themes/--Theme examples/2.1inch/41/theme_res_554158.png new file mode 100644 index 00000000..c2c8bf56 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/41/theme_res_554158.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_1594.png b/res/themes/--Theme examples/2.1inch/42/theme_res_1594.png new file mode 100644 index 00000000..5c127cd0 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_1594.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_182800.png b/res/themes/--Theme examples/2.1inch/42/theme_res_182800.png new file mode 100644 index 00000000..f36b465e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_182800.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_532443.png b/res/themes/--Theme examples/2.1inch/42/theme_res_532443.png new file mode 100644 index 00000000..5dc5f08a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_532443.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_714279.png b/res/themes/--Theme examples/2.1inch/42/theme_res_714279.png new file mode 100644 index 00000000..5dc5f08a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_714279.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_896124.png b/res/themes/--Theme examples/2.1inch/42/theme_res_896124.png new file mode 100644 index 00000000..7afd1dbe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_896124.png differ diff --git a/res/themes/--Theme examples/2.1inch/42/theme_res_899454.png b/res/themes/--Theme examples/2.1inch/42/theme_res_899454.png new file mode 100644 index 00000000..159c96dd Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/42/theme_res_899454.png differ diff --git a/res/themes/--Theme examples/2.1inch/45/theme_res_1538.png b/res/themes/--Theme examples/2.1inch/45/theme_res_1538.png new file mode 100644 index 00000000..6dbfe2d1 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/45/theme_res_1538.png differ diff --git a/res/themes/--Theme examples/2.1inch/45/theme_res_49917.png b/res/themes/--Theme examples/2.1inch/45/theme_res_49917.png new file mode 100644 index 00000000..8e2dc9ab Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/45/theme_res_49917.png differ diff --git a/res/themes/--Theme examples/2.1inch/45/theme_res_60881.png b/res/themes/--Theme examples/2.1inch/45/theme_res_60881.png new file mode 100644 index 00000000..93512c5e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/45/theme_res_60881.png differ diff --git a/res/themes/--Theme examples/2.1inch/45/theme_res_66737.png b/res/themes/--Theme examples/2.1inch/45/theme_res_66737.png new file mode 100644 index 00000000..af5eb836 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/45/theme_res_66737.png differ diff --git a/res/themes/--Theme examples/2.1inch/45/theme_res_91895.png b/res/themes/--Theme examples/2.1inch/45/theme_res_91895.png new file mode 100644 index 00000000..2fca5710 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/45/theme_res_91895.png differ diff --git a/res/themes/--Theme examples/2.1inch/46/theme_res_1538.png b/res/themes/--Theme examples/2.1inch/46/theme_res_1538.png new file mode 100644 index 00000000..d51187f5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/46/theme_res_1538.png differ diff --git a/res/themes/--Theme examples/2.1inch/46/theme_res_154144.png b/res/themes/--Theme examples/2.1inch/46/theme_res_154144.png new file mode 100644 index 00000000..72e85587 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/46/theme_res_154144.png differ diff --git a/res/themes/--Theme examples/2.1inch/46/theme_res_314112.png b/res/themes/--Theme examples/2.1inch/46/theme_res_314112.png new file mode 100644 index 00000000..5168bc48 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/46/theme_res_314112.png differ diff --git a/res/themes/--Theme examples/2.1inch/47/theme_res_1644.png b/res/themes/--Theme examples/2.1inch/47/theme_res_1644.png new file mode 100644 index 00000000..cfe42d01 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/47/theme_res_1644.png differ diff --git a/res/themes/--Theme examples/2.1inch/47/theme_res_206865.png b/res/themes/--Theme examples/2.1inch/47/theme_res_206865.png new file mode 100644 index 00000000..8116e05c Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/47/theme_res_206865.png differ diff --git a/res/themes/--Theme examples/2.1inch/47/theme_res_414081.png b/res/themes/--Theme examples/2.1inch/47/theme_res_414081.png new file mode 100644 index 00000000..8116e05c Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/47/theme_res_414081.png differ diff --git a/res/themes/--Theme examples/2.1inch/48/theme_res_1644.png b/res/themes/--Theme examples/2.1inch/48/theme_res_1644.png new file mode 100644 index 00000000..b05bc56e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/48/theme_res_1644.png differ diff --git a/res/themes/--Theme examples/2.1inch/48/theme_res_222045.png b/res/themes/--Theme examples/2.1inch/48/theme_res_222045.png new file mode 100644 index 00000000..5d2c86be Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/48/theme_res_222045.png differ diff --git a/res/themes/--Theme examples/2.1inch/48/theme_res_433567.png b/res/themes/--Theme examples/2.1inch/48/theme_res_433567.png new file mode 100644 index 00000000..5d2c86be Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/48/theme_res_433567.png differ diff --git a/res/themes/--Theme examples/2.1inch/49/theme_res_143880.png b/res/themes/--Theme examples/2.1inch/49/theme_res_143880.png new file mode 100644 index 00000000..1215440d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/49/theme_res_143880.png differ diff --git a/res/themes/--Theme examples/2.1inch/49/theme_res_1644.png b/res/themes/--Theme examples/2.1inch/49/theme_res_1644.png new file mode 100644 index 00000000..ed941ecf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/49/theme_res_1644.png differ diff --git a/res/themes/--Theme examples/2.1inch/49/theme_res_288676.png b/res/themes/--Theme examples/2.1inch/49/theme_res_288676.png new file mode 100644 index 00000000..1215440d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/49/theme_res_288676.png differ diff --git a/res/themes/--Theme examples/2.1inch/49/theme_res_428591.png b/res/themes/--Theme examples/2.1inch/49/theme_res_428591.png new file mode 100644 index 00000000..bacb25ee Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/49/theme_res_428591.png differ diff --git a/res/themes/--Theme examples/2.1inch/49/theme_res_440183.png b/res/themes/--Theme examples/2.1inch/49/theme_res_440183.png new file mode 100644 index 00000000..dec2777c Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/49/theme_res_440183.png differ diff --git a/res/themes/--Theme examples/2.1inch/50/theme_res_1102050.png b/res/themes/--Theme examples/2.1inch/50/theme_res_1102050.png new file mode 100644 index 00000000..dfbc5a83 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/50/theme_res_1102050.png differ diff --git a/res/themes/--Theme examples/2.1inch/50/theme_res_1104648.png b/res/themes/--Theme examples/2.1inch/50/theme_res_1104648.png new file mode 100644 index 00000000..c62cb5db Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/50/theme_res_1104648.png differ diff --git a/res/themes/--Theme examples/2.1inch/50/theme_res_1645.png b/res/themes/--Theme examples/2.1inch/50/theme_res_1645.png new file mode 100644 index 00000000..5c688c3e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/50/theme_res_1645.png differ diff --git a/res/themes/--Theme examples/2.1inch/50/theme_res_390231.png b/res/themes/--Theme examples/2.1inch/50/theme_res_390231.png new file mode 100644 index 00000000..bdec7cd5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/50/theme_res_390231.png differ diff --git a/res/themes/--Theme examples/2.1inch/50/theme_res_746136.png b/res/themes/--Theme examples/2.1inch/50/theme_res_746136.png new file mode 100644 index 00000000..bdec7cd5 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/50/theme_res_746136.png differ diff --git a/res/themes/--Theme examples/2.1inch/51/theme_res_121927.png b/res/themes/--Theme examples/2.1inch/51/theme_res_121927.png new file mode 100644 index 00000000..2914d019 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/51/theme_res_121927.png differ diff --git a/res/themes/--Theme examples/2.1inch/51/theme_res_134060.png b/res/themes/--Theme examples/2.1inch/51/theme_res_134060.png new file mode 100644 index 00000000..de8f66ff Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/51/theme_res_134060.png differ diff --git a/res/themes/--Theme examples/2.1inch/51/theme_res_1644.png b/res/themes/--Theme examples/2.1inch/51/theme_res_1644.png new file mode 100644 index 00000000..8f879ba4 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/51/theme_res_1644.png differ diff --git a/res/themes/--Theme examples/2.1inch/51/theme_res_46539.png b/res/themes/--Theme examples/2.1inch/51/theme_res_46539.png new file mode 100644 index 00000000..d54933bf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/51/theme_res_46539.png differ diff --git a/res/themes/--Theme examples/2.1inch/51/theme_res_86586.png b/res/themes/--Theme examples/2.1inch/51/theme_res_86586.png new file mode 100644 index 00000000..d54933bf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/51/theme_res_86586.png differ diff --git a/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_1650.png b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_1650.png new file mode 100644 index 00000000..3fa97964 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_1650.png differ diff --git a/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_222489.png b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_222489.png new file mode 100644 index 00000000..5b5fad2a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_222489.png differ diff --git a/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_432139.png b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_432139.png new file mode 100644 index 00000000..5b5fad2a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/52_RGB/theme_res_432139.png differ diff --git a/res/themes/--Theme examples/2.1inch/53/theme_res_1345291.png b/res/themes/--Theme examples/2.1inch/53/theme_res_1345291.png new file mode 100644 index 00000000..d5d00e04 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/53/theme_res_1345291.png differ diff --git a/res/themes/--Theme examples/2.1inch/53/theme_res_1348954.png b/res/themes/--Theme examples/2.1inch/53/theme_res_1348954.png new file mode 100644 index 00000000..9f17eeef Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/53/theme_res_1348954.png differ diff --git a/res/themes/--Theme examples/2.1inch/53/theme_res_1645.png b/res/themes/--Theme examples/2.1inch/53/theme_res_1645.png new file mode 100644 index 00000000..5144eeaa Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/53/theme_res_1645.png differ diff --git a/res/themes/--Theme examples/2.1inch/53/theme_res_456470.png b/res/themes/--Theme examples/2.1inch/53/theme_res_456470.png new file mode 100644 index 00000000..ed2e4f21 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/53/theme_res_456470.png differ diff --git a/res/themes/--Theme examples/2.1inch/53/theme_res_900876.png b/res/themes/--Theme examples/2.1inch/53/theme_res_900876.png new file mode 100644 index 00000000..ed2e4f21 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/53/theme_res_900876.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1564.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1564.png new file mode 100644 index 00000000..7e37b9f6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1564.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1573992.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1573992.png new file mode 100644 index 00000000..2f944966 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1573992.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1576025.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1576025.png new file mode 100644 index 00000000..e8cba6ff Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1576025.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1578095.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1578095.png new file mode 100644 index 00000000..f1ecd78e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1578095.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1587592.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1587592.png new file mode 100644 index 00000000..8f3565af Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1587592.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1592918.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1592918.png new file mode 100644 index 00000000..193695dc Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1592918.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1601725.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1601725.png new file mode 100644 index 00000000..2dab0e3a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1601725.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1606709.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1606709.png new file mode 100644 index 00000000..66777bb9 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1606709.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_1608888.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_1608888.png new file mode 100644 index 00000000..3ea6e7bf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_1608888.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_284316.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_284316.png new file mode 100644 index 00000000..94475cc7 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_284316.png differ diff --git a/res/themes/--Theme examples/2.1inch/D2/theme_res_563661.png b/res/themes/--Theme examples/2.1inch/D2/theme_res_563661.png new file mode 100644 index 00000000..b411ec02 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/D2/theme_res_563661.png differ diff --git a/res/themes/--Theme examples/2.1inch/aorus/theme_res_1833.png b/res/themes/--Theme examples/2.1inch/aorus/theme_res_1833.png new file mode 100644 index 00000000..c607e875 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/aorus/theme_res_1833.png differ diff --git a/res/themes/--Theme examples/2.1inch/aorus/theme_res_430989.png b/res/themes/--Theme examples/2.1inch/aorus/theme_res_430989.png new file mode 100644 index 00000000..98ad8e41 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/aorus/theme_res_430989.png differ diff --git a/res/themes/--Theme examples/2.1inch/aorus/theme_res_855660.png b/res/themes/--Theme examples/2.1inch/aorus/theme_res_855660.png new file mode 100644 index 00000000..98ad8e41 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/aorus/theme_res_855660.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_1564.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_1564.png new file mode 100644 index 00000000..2191572a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_1564.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_158622.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_158622.png new file mode 100644 index 00000000..fd146350 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_158622.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_281972.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_281972.png new file mode 100644 index 00000000..d5fb8ebb Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_281972.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_405058.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_405058.png new file mode 100644 index 00000000..49701ff3 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_405058.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_405298.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_405298.png new file mode 100644 index 00000000..2af38291 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_405298.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_405514.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_405514.png new file mode 100644 index 00000000..ea705921 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_405514.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_405876.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_405876.png new file mode 100644 index 00000000..f1855376 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_405876.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_406314.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_406314.png new file mode 100644 index 00000000..813985fe Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_406314.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_416778.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_416778.png new file mode 100644 index 00000000..70c056ad Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_416778.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_423902.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_423902.png new file mode 100644 index 00000000..b8373dc0 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_423902.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_438605.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_438605.png new file mode 100644 index 00000000..d531884a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_438605.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_448517.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_448517.png new file mode 100644 index 00000000..6ea7e2a6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_448517.png differ diff --git a/res/themes/--Theme examples/2.1inch/b6/theme_res_452945.png b/res/themes/--Theme examples/2.1inch/b6/theme_res_452945.png new file mode 100644 index 00000000..4d9beb04 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b6/theme_res_452945.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1561.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1561.png new file mode 100644 index 00000000..366c9cbf Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1561.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1743574.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1743574.png new file mode 100644 index 00000000..e1559365 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1743574.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1752352.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1752352.png new file mode 100644 index 00000000..df1d37be Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1752352.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1777928.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1777928.png new file mode 100644 index 00000000..f7aa41f4 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1777928.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1790669.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1790669.png new file mode 100644 index 00000000..df1d37be Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1790669.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1815900.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1815900.png new file mode 100644 index 00000000..cb5fba1e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1815900.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_1822349.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_1822349.png new file mode 100644 index 00000000..b8a4b382 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_1822349.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_334710.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_334710.png new file mode 100644 index 00000000..c7895cea Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_334710.png differ diff --git a/res/themes/--Theme examples/2.1inch/b8/theme_res_659297.png b/res/themes/--Theme examples/2.1inch/b8/theme_res_659297.png new file mode 100644 index 00000000..aab3c311 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/b8/theme_res_659297.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_1570.png b/res/themes/--Theme examples/2.1inch/green/theme_res_1570.png new file mode 100644 index 00000000..1265b1e6 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_1570.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_170357.png b/res/themes/--Theme examples/2.1inch/green/theme_res_170357.png new file mode 100644 index 00000000..a98e4f83 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_170357.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_328072.png b/res/themes/--Theme examples/2.1inch/green/theme_res_328072.png new file mode 100644 index 00000000..a98e4f83 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_328072.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_486630.png b/res/themes/--Theme examples/2.1inch/green/theme_res_486630.png new file mode 100644 index 00000000..420cae39 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_486630.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_494913.png b/res/themes/--Theme examples/2.1inch/green/theme_res_494913.png new file mode 100644 index 00000000..b4e14e1a Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_494913.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_500985.png b/res/themes/--Theme examples/2.1inch/green/theme_res_500985.png new file mode 100644 index 00000000..5141db3b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_500985.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_511813.png b/res/themes/--Theme examples/2.1inch/green/theme_res_511813.png new file mode 100644 index 00000000..f5657673 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_511813.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_518941.png b/res/themes/--Theme examples/2.1inch/green/theme_res_518941.png new file mode 100644 index 00000000..5322366b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_518941.png differ diff --git a/res/themes/--Theme examples/2.1inch/green/theme_res_522474.png b/res/themes/--Theme examples/2.1inch/green/theme_res_522474.png new file mode 100644 index 00000000..03dc639b Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/green/theme_res_522474.png differ diff --git a/res/themes/--Theme examples/2.1inch/msi/theme_res_1815.png b/res/themes/--Theme examples/2.1inch/msi/theme_res_1815.png new file mode 100644 index 00000000..3c6dd414 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/msi/theme_res_1815.png differ diff --git a/res/themes/--Theme examples/2.1inch/msi/theme_res_354957.png b/res/themes/--Theme examples/2.1inch/msi/theme_res_354957.png new file mode 100644 index 00000000..069b7c92 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/msi/theme_res_354957.png differ diff --git a/res/themes/--Theme examples/2.1inch/msi/theme_res_699578.png b/res/themes/--Theme examples/2.1inch/msi/theme_res_699578.png new file mode 100644 index 00000000..069b7c92 Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/msi/theme_res_699578.png differ diff --git a/res/themes/--Theme examples/2.1inch/rog/theme_res_1821.png b/res/themes/--Theme examples/2.1inch/rog/theme_res_1821.png new file mode 100644 index 00000000..e0de426e Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/rog/theme_res_1821.png differ diff --git a/res/themes/--Theme examples/2.1inch/rog/theme_res_348035.png b/res/themes/--Theme examples/2.1inch/rog/theme_res_348035.png new file mode 100644 index 00000000..89ea1e8d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/rog/theme_res_348035.png differ diff --git a/res/themes/--Theme examples/2.1inch/rog/theme_res_692622.png b/res/themes/--Theme examples/2.1inch/rog/theme_res_692622.png new file mode 100644 index 00000000..89ea1e8d Binary files /dev/null and b/res/themes/--Theme examples/2.1inch/rog/theme_res_692622.png differ diff --git a/res/themes/--Theme examples/8.8inch/AMD/theme_res_1211217.png b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1211217.png new file mode 100644 index 00000000..9e967505 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1211217.png differ diff --git a/res/themes/--Theme examples/8.8inch/AMD/theme_res_1221404.png b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1221404.png new file mode 100644 index 00000000..c4cf00c5 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1221404.png differ diff --git a/res/themes/--Theme examples/8.8inch/AMD/theme_res_1936.png b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1936.png new file mode 100644 index 00000000..3be0f826 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/AMD/theme_res_1936.png differ diff --git a/res/themes/--Theme examples/8.8inch/AMD/theme_res_403206.png b/res/themes/--Theme examples/8.8inch/AMD/theme_res_403206.png new file mode 100644 index 00000000..18c4ad67 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/AMD/theme_res_403206.png differ diff --git a/res/themes/--Theme examples/8.8inch/AMD/theme_res_807207.png b/res/themes/--Theme examples/8.8inch/AMD/theme_res_807207.png new file mode 100644 index 00000000..18c4ad67 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/AMD/theme_res_807207.png differ diff --git a/res/themes/--Theme examples/8.8inch/APEX/theme_res_1090303.png b/res/themes/--Theme examples/8.8inch/APEX/theme_res_1090303.png new file mode 100644 index 00000000..79e81dd8 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/APEX/theme_res_1090303.png differ diff --git a/res/themes/--Theme examples/8.8inch/APEX/theme_res_1956.png b/res/themes/--Theme examples/8.8inch/APEX/theme_res_1956.png new file mode 100644 index 00000000..70aea9fb Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/APEX/theme_res_1956.png differ diff --git a/res/themes/--Theme examples/8.8inch/APEX/theme_res_2143708.png b/res/themes/--Theme examples/8.8inch/APEX/theme_res_2143708.png new file mode 100644 index 00000000..79e81dd8 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/APEX/theme_res_2143708.png differ diff --git a/res/themes/--Theme examples/8.8inch/APEX/theme_res_3197122.png b/res/themes/--Theme examples/8.8inch/APEX/theme_res_3197122.png new file mode 100644 index 00000000..2ec3cba6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/APEX/theme_res_3197122.png differ diff --git a/res/themes/--Theme examples/8.8inch/APEX/theme_res_3210506.png b/res/themes/--Theme examples/8.8inch/APEX/theme_res_3210506.png new file mode 100644 index 00000000..f4b356be Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/APEX/theme_res_3210506.png differ diff --git a/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1002872.png b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1002872.png new file mode 100644 index 00000000..757df465 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1002872.png differ diff --git a/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1892.png b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1892.png new file mode 100644 index 00000000..8734442e Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_1892.png differ diff --git a/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_540867.png b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_540867.png new file mode 100644 index 00000000..79d3ff74 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_540867.png differ diff --git a/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6562813.png b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6562813.png new file mode 100644 index 00000000..9fe2b457 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6562813.png differ diff --git a/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6639602.png b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6639602.png new file mode 100644 index 00000000..428400ac Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Assassin's Creed/theme_res_6639602.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1077979.png b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1077979.png new file mode 100644 index 00000000..1abbd225 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1077979.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1959.png b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1959.png new file mode 100644 index 00000000..96b8113f Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_1959.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_2160780.png b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_2160780.png new file mode 100644 index 00000000..1abbd225 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_2160780.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3243590.png b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3243590.png new file mode 100644 index 00000000..61e522b5 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3243590.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3282901.png b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3282901.png new file mode 100644 index 00000000..3c3a7bd5 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE vertical/theme_res_3282901.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1297536.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1297536.png new file mode 100644 index 00000000..c967f0e8 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1297536.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1974.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1974.png new file mode 100644 index 00000000..7dbc38f7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_1974.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_2680928.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_2680928.png new file mode 100644 index 00000000..c967f0e8 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_2680928.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4066575.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4066575.png new file mode 100644 index 00000000..11453a86 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4066575.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4067618.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4067618.png new file mode 100644 index 00000000..5c930078 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4067618.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4068475.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4068475.png new file mode 100644 index 00000000..1f970dd3 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4068475.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4071863.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4071863.png new file mode 100644 index 00000000..b271c8f0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4071863.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4073665.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4073665.png new file mode 100644 index 00000000..05e1aa54 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4073665.png differ diff --git a/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4077983.png b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4077983.png new file mode 100644 index 00000000..9f3d16a4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/BLUE/theme_res_4077983.png differ diff --git a/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1426836.png b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1426836.png new file mode 100644 index 00000000..e0aae8dc Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1426836.png differ diff --git a/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1890.png b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1890.png new file mode 100644 index 00000000..514471cd Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_1890.png differ diff --git a/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_3003209.png b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_3003209.png new file mode 100644 index 00000000..d53c031a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_3003209.png differ diff --git a/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6500054.png b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6500054.png new file mode 100644 index 00000000..ab6fa6cb Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6500054.png differ diff --git a/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6507941.png b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6507941.png new file mode 100644 index 00000000..16e3f4b9 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Blue Technology/theme_res_6507941.png differ diff --git a/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1227412.png b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1227412.png new file mode 100644 index 00000000..912abe52 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1227412.png differ diff --git a/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1823949.png b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1823949.png new file mode 100644 index 00000000..efb58523 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1823949.png differ diff --git a/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1871359.png b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1871359.png new file mode 100644 index 00000000..d41f3ee7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1871359.png differ diff --git a/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1954.png b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1954.png new file mode 100644 index 00000000..76976bef Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_1954.png differ diff --git a/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_630884.png b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_630884.png new file mode 100644 index 00000000..912abe52 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Call of Duty/theme_res_630884.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1288023.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1288023.png new file mode 100644 index 00000000..d007206b Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1288023.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1906.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1906.png new file mode 100644 index 00000000..be11311d Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_1906.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_2611037.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_2611037.png new file mode 100644 index 00000000..ecd6052a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_2611037.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3811150.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3811150.png new file mode 100644 index 00000000..ece4a5f7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3811150.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3831489.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3831489.png new file mode 100644 index 00000000..d07e7887 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077 Vertical/theme_res_3831489.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1888.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1888.png new file mode 100644 index 00000000..2f236b18 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1888.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1985615.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1985615.png new file mode 100644 index 00000000..44b36690 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_1985615.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2984784.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2984784.png new file mode 100644 index 00000000..f4d9a068 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2984784.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2990943.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2990943.png new file mode 100644 index 00000000..3b9b5351 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_2990943.png differ diff --git a/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_984139.png b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_984139.png new file mode 100644 index 00000000..2c7e3066 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Cyberpunk 2077/theme_res_984139.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_1434676.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_1434676.png new file mode 100644 index 00000000..e16c3681 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_1434676.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_1951.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_1951.png new file mode 100644 index 00000000..d8c27e0c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_1951.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_2078017.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2078017.png new file mode 100644 index 00000000..bf6655d6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2078017.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_2178393.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2178393.png new file mode 100644 index 00000000..64a29b75 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2178393.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_2259243.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2259243.png new file mode 100644 index 00000000..fa5849c3 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2259243.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_2324407.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2324407.png new file mode 100644 index 00000000..a0f4b27a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_2324407.png differ diff --git a/res/themes/--Theme examples/8.8inch/Darius/theme_res_791344.png b/res/themes/--Theme examples/8.8inch/Darius/theme_res_791344.png new file mode 100644 index 00000000..fa925adf Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Darius/theme_res_791344.png differ diff --git a/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1500986.png b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1500986.png new file mode 100644 index 00000000..2aeb2a75 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1500986.png differ diff --git a/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1961.png b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1961.png new file mode 100644 index 00000000..5e0d6215 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_1961.png differ diff --git a/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_3094414.png b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_3094414.png new file mode 100644 index 00000000..0af2baa3 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_3094414.png differ diff --git a/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4689676.png b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4689676.png new file mode 100644 index 00000000..9dad13c7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4689676.png differ diff --git a/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4693599.png b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4693599.png new file mode 100644 index 00000000..45e140ed Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Dragon Ball/theme_res_4693599.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1436408.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1436408.png new file mode 100644 index 00000000..ff1519cf Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1436408.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1453256.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1453256.png new file mode 100644 index 00000000..c84bc5ed Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1453256.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1470792.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1470792.png new file mode 100644 index 00000000..42009f7c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1470792.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471163.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471163.png new file mode 100644 index 00000000..add0b5f7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471163.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471984.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471984.png new file mode 100644 index 00000000..38d32ed0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1471984.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1501267.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1501267.png new file mode 100644 index 00000000..5fc46ab4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1501267.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1958.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1958.png new file mode 100644 index 00000000..40db48f3 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_1958.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_524673.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_524673.png new file mode 100644 index 00000000..6d586d82 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_524673.png differ diff --git a/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_980536.png b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_980536.png new file mode 100644 index 00000000..6d586d82 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Earth Theme/theme_res_980536.png differ diff --git a/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_1951.png b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_1951.png new file mode 100644 index 00000000..24b399c7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_1951.png differ diff --git a/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_316670.png b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_316670.png new file mode 100644 index 00000000..17102e4b Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_316670.png differ diff --git a/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_539885.png b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_539885.png new file mode 100644 index 00000000..e26aed53 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_539885.png differ diff --git a/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_763120.png b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_763120.png new file mode 100644 index 00000000..839f1ad7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_763120.png differ diff --git a/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_816626.png b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_816626.png new file mode 100644 index 00000000..e25934a9 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/GUNDAM/theme_res_816626.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_138261.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_138261.png new file mode 100644 index 00000000..c6095836 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_138261.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_145835.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_145835.png new file mode 100644 index 00000000..c6095836 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_145835.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_153418.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_153418.png new file mode 100644 index 00000000..eed10e3d Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_153418.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_1876.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_1876.png new file mode 100644 index 00000000..b4db309a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_1876.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_221366.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_221366.png new file mode 100644 index 00000000..3139fa1d Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_221366.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_639646.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_639646.png new file mode 100644 index 00000000..b5110e07 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_639646.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_642039.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_642039.png new file mode 100644 index 00000000..87d9255d Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_642039.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_645271.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_645271.png new file mode 100644 index 00000000..17803b9e Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_645271.png differ diff --git a/res/themes/--Theme examples/8.8inch/Gradient/theme_res_660813.png b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_660813.png new file mode 100644 index 00000000..bafe4d68 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Gradient/theme_res_660813.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1031627.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1031627.png new file mode 100644 index 00000000..22fde216 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1031627.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1951.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1951.png new file mode 100644 index 00000000..89788c7f Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_1951.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_2202343.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_2202343.png new file mode 100644 index 00000000..68a69820 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_2202343.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3373069.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3373069.png new file mode 100644 index 00000000..d9282a54 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3373069.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3437738.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3437738.png new file mode 100644 index 00000000..6e195c67 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3437738.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3667914.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3667914.png new file mode 100644 index 00000000..d6ee4c09 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3667914.png differ diff --git a/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3694123.png b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3694123.png new file mode 100644 index 00000000..7510495c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Jyanme/theme_res_3694123.png differ diff --git a/res/themes/--Theme examples/8.8inch/METROID/theme_res_1419775.png b/res/themes/--Theme examples/8.8inch/METROID/theme_res_1419775.png new file mode 100644 index 00000000..c635b959 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/METROID/theme_res_1419775.png differ diff --git a/res/themes/--Theme examples/8.8inch/METROID/theme_res_1956.png b/res/themes/--Theme examples/8.8inch/METROID/theme_res_1956.png new file mode 100644 index 00000000..f76ecce4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/METROID/theme_res_1956.png differ diff --git a/res/themes/--Theme examples/8.8inch/METROID/theme_res_2134285.png b/res/themes/--Theme examples/8.8inch/METROID/theme_res_2134285.png new file mode 100644 index 00000000..86066809 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/METROID/theme_res_2134285.png differ diff --git a/res/themes/--Theme examples/8.8inch/METROID/theme_res_2151856.png b/res/themes/--Theme examples/8.8inch/METROID/theme_res_2151856.png new file mode 100644 index 00000000..bcb0b93c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/METROID/theme_res_2151856.png differ diff --git a/res/themes/--Theme examples/8.8inch/METROID/theme_res_705272.png b/res/themes/--Theme examples/8.8inch/METROID/theme_res_705272.png new file mode 100644 index 00000000..2a632e2e Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/METROID/theme_res_705272.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_1892.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_1892.png new file mode 100644 index 00000000..e0878bb4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_1892.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_315537.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_315537.png new file mode 100644 index 00000000..84c9f678 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_315537.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_419676.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_419676.png new file mode 100644 index 00000000..8fae93bb Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_419676.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_523779.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_523779.png new file mode 100644 index 00000000..d37c993a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_523779.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_629673.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_629673.png new file mode 100644 index 00000000..743b7533 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_629673.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_735053.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_735053.png new file mode 100644 index 00000000..604f5f5f Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_735053.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_840569.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_840569.png new file mode 100644 index 00000000..bc64097a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_840569.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_945817.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_945817.png new file mode 100644 index 00000000..3652c4ab Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_945817.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_956804.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_956804.png new file mode 100644 index 00000000..179f4faa Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_956804.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_966844.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_966844.png new file mode 100644 index 00000000..1912df25 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_966844.png differ diff --git a/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_992460.png b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_992460.png new file mode 100644 index 00000000..f0c73d79 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Minimalist black/theme_res_992460.png differ diff --git a/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1045510.png b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1045510.png new file mode 100644 index 00000000..f0373c65 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1045510.png differ diff --git a/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1577582.png b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1577582.png new file mode 100644 index 00000000..c4b174ee Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1577582.png differ diff --git a/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1584041.png b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1584041.png new file mode 100644 index 00000000..487530af Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1584041.png differ diff --git a/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1978.png b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1978.png new file mode 100644 index 00000000..c08e6c27 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_1978.png differ diff --git a/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_513447.png b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_513447.png new file mode 100644 index 00000000..f0373c65 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/NVIDIA/theme_res_513447.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1103942.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1103942.png new file mode 100644 index 00000000..9253da5e Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1103942.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1134326.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1134326.png new file mode 100644 index 00000000..5a5950b6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1134326.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1374020.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1374020.png new file mode 100644 index 00000000..9f78cfe6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1374020.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1379405.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1379405.png new file mode 100644 index 00000000..89a2b5e4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1379405.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1878.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1878.png new file mode 100644 index 00000000..c93a202a Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_1878.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_190879.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_190879.png new file mode 100644 index 00000000..88543134 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_190879.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_321760.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_321760.png new file mode 100644 index 00000000..7fe27d74 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_321760.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_452718.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_452718.png new file mode 100644 index 00000000..6612907b Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_452718.png differ diff --git a/res/themes/--Theme examples/8.8inch/Pink data/theme_res_560206.png b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_560206.png new file mode 100644 index 00000000..8b4b3628 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Pink data/theme_res_560206.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1221836.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1221836.png new file mode 100644 index 00000000..a52670e0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1221836.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1943.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1943.png new file mode 100644 index 00000000..edf71d33 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_1943.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_2470923.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_2470923.png new file mode 100644 index 00000000..a52670e0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_2470923.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3721429.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3721429.png new file mode 100644 index 00000000..7f7e8be5 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3721429.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3747197.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3747197.png new file mode 100644 index 00000000..da2d0ba0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3747197.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3855396.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3855396.png new file mode 100644 index 00000000..d14ad673 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3855396.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3895893.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3895893.png new file mode 100644 index 00000000..5b029b2f Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3895893.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3969592.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3969592.png new file mode 100644 index 00000000..480d6ab8 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3969592.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3977915.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3977915.png new file mode 100644 index 00000000..544cfae1 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3977915.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3999527.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3999527.png new file mode 100644 index 00000000..796b488d Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_3999527.png differ diff --git a/res/themes/--Theme examples/8.8inch/Ranni/theme_res_4014799.png b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_4014799.png new file mode 100644 index 00000000..59cb3369 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Ranni/theme_res_4014799.png differ diff --git a/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1956.png b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1956.png new file mode 100644 index 00000000..7cfda02c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1956.png differ diff --git a/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1962526.png b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1962526.png new file mode 100644 index 00000000..ab94dab4 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_1962526.png differ diff --git a/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2980869.png b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2980869.png new file mode 100644 index 00000000..2794572c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2980869.png differ diff --git a/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2994795.png b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2994795.png new file mode 100644 index 00000000..6ea3f357 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_2994795.png differ diff --git a/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_944623.png b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_944623.png new file mode 100644 index 00000000..fb2e7855 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/SPY FAMILY/theme_res_944623.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_147553.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_147553.png new file mode 100644 index 00000000..d1304f95 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_147553.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_154911.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_154911.png new file mode 100644 index 00000000..57976096 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_154911.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_162281.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_162281.png new file mode 100644 index 00000000..08126317 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_162281.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_1918.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_1918.png new file mode 100644 index 00000000..8b993fe6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_1918.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_235005.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_235005.png new file mode 100644 index 00000000..ec4c8079 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_235005.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_273503.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_273503.png new file mode 100644 index 00000000..1446a05f Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_273503.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_346227.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_346227.png new file mode 100644 index 00000000..154ddcd6 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple Vertical/theme_res_346227.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_134826.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_134826.png new file mode 100644 index 00000000..519d805e Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_134826.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_139611.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_139611.png new file mode 100644 index 00000000..bc01a99c Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_139611.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_144413.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_144413.png new file mode 100644 index 00000000..654d8be5 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_144413.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_1900.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_1900.png new file mode 100644 index 00000000..27405ea2 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_1900.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_215802.png b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_215802.png new file mode 100644 index 00000000..18859450 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple Future Purple/theme_res_215802.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_101096.png b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_101096.png new file mode 100644 index 00000000..735027d3 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_101096.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_157510.png b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_157510.png new file mode 100644 index 00000000..2ada2de0 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_157510.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_1916.png b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_1916.png new file mode 100644 index 00000000..e57104a7 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_1916.png differ diff --git a/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_93758.png b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_93758.png new file mode 100644 index 00000000..3f1df9fa Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Simple black and white theme/theme_res_93758.png differ diff --git a/res/themes/--Theme examples/8.8inch/Technology X/theme_res_141176.png b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_141176.png new file mode 100644 index 00000000..a716d415 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_141176.png differ diff --git a/res/themes/--Theme examples/8.8inch/Technology X/theme_res_1884.png b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_1884.png new file mode 100644 index 00000000..edb1bc78 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_1884.png differ diff --git a/res/themes/--Theme examples/8.8inch/Technology X/theme_res_229500.png b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_229500.png new file mode 100644 index 00000000..e4bd093b Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/Technology X/theme_res_229500.png differ diff --git a/res/themes/--Theme examples/8.8inch/kirby/theme_res_1870.png b/res/themes/--Theme examples/8.8inch/kirby/theme_res_1870.png new file mode 100644 index 00000000..1078b403 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/kirby/theme_res_1870.png differ diff --git a/res/themes/--Theme examples/8.8inch/kirby/theme_res_427618.png b/res/themes/--Theme examples/8.8inch/kirby/theme_res_427618.png new file mode 100644 index 00000000..f12c68f9 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/kirby/theme_res_427618.png differ diff --git a/res/themes/--Theme examples/8.8inch/kirby/theme_res_6871818.png b/res/themes/--Theme examples/8.8inch/kirby/theme_res_6871818.png new file mode 100644 index 00000000..b505dc12 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/kirby/theme_res_6871818.png differ diff --git a/res/themes/--Theme examples/8.8inch/kirby/theme_res_6885507.png b/res/themes/--Theme examples/8.8inch/kirby/theme_res_6885507.png new file mode 100644 index 00000000..23718c87 Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/kirby/theme_res_6885507.png differ diff --git a/res/themes/--Theme examples/8.8inch/kirby/theme_res_846667.png b/res/themes/--Theme examples/8.8inch/kirby/theme_res_846667.png new file mode 100644 index 00000000..d57a0fbf Binary files /dev/null and b/res/themes/--Theme examples/8.8inch/kirby/theme_res_846667.png differ diff --git a/res/themes/26/background.png b/res/themes/26/background.png new file mode 100644 index 00000000..eb6d758b Binary files /dev/null and b/res/themes/26/background.png differ diff --git a/res/themes/26/preview.png b/res/themes/26/preview.png new file mode 100644 index 00000000..a699051a Binary files /dev/null and b/res/themes/26/preview.png differ diff --git a/res/themes/26/theme.yaml b/res/themes/26/theme.yaml new file mode 100644 index 00000000..6d609b5c --- /dev/null +++ b/res/themes/26/theme.yaml @@ -0,0 +1,67 @@ +--- +author: "@mathoudebine" + +display: + DISPLAY_SIZE: 2.1" + DISPLAY_ORIENTATION: portrait + DISPLAY_RGB_LED: 40, 215, 252 + +static_images: + BACKGROUND: + PATH: background.png + X: 0 + Y: 0 + WIDTH: 480 + HEIGHT: 480 + +STATS: + CPU: + PERCENTAGE: + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 68 + Y: 167 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 54 + FONT_COLOR: 205, 205, 205 + BACKGROUND_IMAGE: background.png + GPU: + INTERVAL: 1 + PERCENTAGE: + TEXT: + SHOW: True + SHOW_UNIT: True + X: 236 + Y: 167 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 54 + FONT_COLOR: 205, 205, 205 + BACKGROUND_IMAGE: background.png + + MEMORY: + INTERVAL: 1 + VIRTUAL: + PERCENT_TEXT: + SHOW: True + SHOW_UNIT: True + X: 68 + Y: 316 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 54 + FONT_COLOR: 205, 205, 205 + BACKGROUND_IMAGE: background.png + + DISK: + INTERVAL: 10 + USED: + PERCENT_TEXT: + SHOW: True + SHOW_UNIT: True + X: 236 + Y: 316 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 54 + FONT_COLOR: 205, 205, 205 + BACKGROUND_IMAGE: background.png \ No newline at end of file diff --git a/res/themes/26/theme_example.png b/res/themes/26/theme_example.png new file mode 100644 index 00000000..00d01185 Binary files /dev/null and b/res/themes/26/theme_example.png differ diff --git a/res/themes/30/background.png b/res/themes/30/background.png new file mode 100644 index 00000000..a73f6d66 Binary files /dev/null and b/res/themes/30/background.png differ diff --git a/res/themes/30/preview.png b/res/themes/30/preview.png new file mode 100644 index 00000000..7b22ec15 Binary files /dev/null and b/res/themes/30/preview.png differ diff --git a/res/themes/30/theme.yaml b/res/themes/30/theme.yaml new file mode 100644 index 00000000..5b3dbd21 --- /dev/null +++ b/res/themes/30/theme.yaml @@ -0,0 +1,54 @@ +--- +author: "@mathoudebine" + +display: + DISPLAY_SIZE: 2.1" + DISPLAY_ORIENTATION: portrait + DISPLAY_RGB_LED: 236, 214, 180 + +static_images: + BACKGROUND: + PATH: background.png + X: 0 + Y: 0 + WIDTH: 480 + HEIGHT: 480 + +STATS: + CPU: + PERCENTAGE: + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 270 + Y: 265 + FONT: jetbrains-mono/JetBrainsMono-Light.ttf + FONT_SIZE: 26 + FONT_COLOR: 255, 255, 255 + BACKGROUND_IMAGE: background.png + GRAPH: + SHOW: True + X: 143 + Y: 295 + WIDTH: 192 + HEIGHT: 9 + MIN_VALUE: 0 + MAX_VALUE: 100 + BAR_COLOR: 236, 214, 180 + BAR_OUTLINE: False + BACKGROUND_COLOR: 255, 255, 255 + + DATE: + INTERVAL: 1 + HOUR: # Format (12/24h, timezone translations) will match your computer locale + TEXT: + FORMAT: short # short (6:48 PM) / medium (6:48:53 PM) / long (6:48:53 PM UTC) / full (6:48:53 PM Coordinated Universal Time) + SHOW: True + X: 70 + Y: 151 + FONT: roboto-mono/RobotoMono-Bold.ttf + FONT_SIZE: 112 + FONT_COLOR: 255, 255, 255 + BACKGROUND_IMAGE: background.png + diff --git a/res/themes/30/theme_example.png b/res/themes/30/theme_example.png new file mode 100644 index 00000000..92e4e261 Binary files /dev/null and b/res/themes/30/theme_example.png differ diff --git a/res/themes/43/background.png b/res/themes/43/background.png new file mode 100644 index 00000000..5fa041d9 Binary files /dev/null and b/res/themes/43/background.png differ diff --git a/res/themes/43/preview.png b/res/themes/43/preview.png new file mode 100644 index 00000000..89958f4a Binary files /dev/null and b/res/themes/43/preview.png differ diff --git a/res/themes/43/theme.yaml b/res/themes/43/theme.yaml new file mode 100644 index 00000000..bd9ea905 --- /dev/null +++ b/res/themes/43/theme.yaml @@ -0,0 +1,75 @@ +--- +author: "@mathoudebine" + +display: + DISPLAY_SIZE: 2.1" + DISPLAY_ORIENTATION: portrait + DISPLAY_RGB_LED: 177, 224, 255 + +static_images: + BACKGROUND: + PATH: background.png + X: 0 + Y: 0 + WIDTH: 480 + HEIGHT: 480 + +STATS: + CPU: + PERCENTAGE: + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 262 + Y: 281 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 26 + FONT_COLOR: 0, 0, 0 + BACKGROUND_IMAGE: background.png + GRAPH: + SHOW: True + X: 144 + Y: 314 + WIDTH: 188 + HEIGHT: 6 + MIN_VALUE: 0 + MAX_VALUE: 100 + BAR_COLOR: 255, 255, 255 + BAR_OUTLINE: False + BACKGROUND_COLOR: 62, 58, 57 + TEMPERATURE: + INTERVAL: 5 + TEXT: + SHOW: True + SHOW_UNIT: False + X: 90 + Y: 163 + FONT: jetbrains-mono/JetBrainsMono-Bold.ttf + FONT_SIZE: 110 + FONT_COLOR: 44, 104, 137 + BACKGROUND_IMAGE: background.png + GPU: + INTERVAL: 1 + PERCENTAGE: + GRAPH: + SHOW: True + X: 144 + Y: 369 + WIDTH: 188 + HEIGHT: 6 + MIN_VALUE: 0 + MAX_VALUE: 100 + BAR_COLOR: 255, 255, 255 + BAR_OUTLINE: False + BACKGROUND_COLOR: 62, 58, 57 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 262 + Y: 338 + FONT: jetbrains-mono/JetBrainsMono-Regular.ttf + FONT_SIZE: 26 + FONT_COLOR: 0, 0, 0 + BACKGROUND_IMAGE: background.png + diff --git a/res/themes/43/theme_example.png b/res/themes/43/theme_example.png new file mode 100644 index 00000000..8d4914ad Binary files /dev/null and b/res/themes/43/theme_example.png differ diff --git a/res/themes/44/background.png b/res/themes/44/background.png new file mode 100644 index 00000000..d2ffb300 Binary files /dev/null and b/res/themes/44/background.png differ diff --git a/res/themes/44/preview.png b/res/themes/44/preview.png new file mode 100644 index 00000000..7eb458b5 Binary files /dev/null and b/res/themes/44/preview.png differ diff --git a/res/themes/44/theme.yaml b/res/themes/44/theme.yaml new file mode 100644 index 00000000..ee9682df --- /dev/null +++ b/res/themes/44/theme.yaml @@ -0,0 +1,52 @@ +--- +author: "@mathoudebine" + +display: + DISPLAY_SIZE: 2.1" + DISPLAY_ORIENTATION: portrait + DISPLAY_RGB_LED: 255, 255, 255 + +static_images: + BACKGROUND: + PATH: background.png + X: 0 + Y: 0 + WIDTH: 480 + HEIGHT: 480 + +STATS: + CPU: + PERCENTAGE: + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 256 + Y: 192 + FONT: jetbrains-mono/JetBrainsMono-Light.ttf + FONT_SIZE: 26 + FONT_COLOR: 96, 96, 96 + BACKGROUND_IMAGE: background.png + GRAPH: + SHOW: True + X: 159 + Y: 219 + WIDTH: 162 + HEIGHT: 10 + MIN_VALUE: 0 + MAX_VALUE: 100 + BAR_COLOR: 96, 96, 96 + BAR_OUTLINE: False + BACKGROUND_COLOR: 192, 192, 192 + FREQUENCY: + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: False + X: 120 + Y: 92 + FONT: roboto-mono/RobotoMono-Light.ttf + FONT_SIZE: 100 + FONT_COLOR: 96, 96, 96 + # BACKGROUND_COLOR: 50, 50, 50 + BACKGROUND_IMAGE: background.png \ No newline at end of file diff --git a/res/themes/44/theme_example.png b/res/themes/44/theme_example.png new file mode 100644 index 00000000..2158a38a Binary files /dev/null and b/res/themes/44/theme_example.png differ diff --git a/res/themes/45/background.png b/res/themes/45/background.png new file mode 100644 index 00000000..2de53f69 Binary files /dev/null and b/res/themes/45/background.png differ diff --git a/res/themes/45/preview.png b/res/themes/45/preview.png new file mode 100644 index 00000000..e5e4704d Binary files /dev/null and b/res/themes/45/preview.png differ diff --git a/res/themes/45/theme.yaml b/res/themes/45/theme.yaml new file mode 100644 index 00000000..54ef4d22 --- /dev/null +++ b/res/themes/45/theme.yaml @@ -0,0 +1,94 @@ +--- +author: "@mathoudebine" + +display: + DISPLAY_SIZE: 2.1" + DISPLAY_ORIENTATION: portrait + DISPLAY_RGB_LED: 40, 178, 171 + +static_images: + BACKGROUND: + PATH: background.png + X: 0 + Y: 0 + WIDTH: 480 + HEIGHT: 480 + +STATS: + DATE: + # For time display, it is recommended not to change the interval: keep to 1 + INTERVAL: 1 + DAY: # Format (Y/M/D ordering, month/day translations...) will match your computer locale + TEXT: + FORMAT: short # short (2/20/23) / medium (Feb 20, 2023) / long (February 20, 2023) / full (Monday, February 20, 2023) + SHOW: True + X: 150 + Y: 284 + FONT: roboto-mono/RobotoMono-Regular.ttf + FONT_SIZE: 30 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 50, 50, 50 + BACKGROUND_IMAGE: background.png + HOUR: # Format (12/24h, timezone translations) will match your computer locale + TEXT: + FORMAT: short # short (6:48 PM) / medium (6:48:53 PM) / long (6:48:53 PM UTC) / full (6:48:53 PM Coordinated Universal Time) + SHOW: True + X: 90 + Y: 193 + FONT: roboto-mono/RobotoMono-Bold.ttf + FONT_SIZE: 100 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 50, 50, 50 + BACKGROUND_IMAGE: background.png + NET: + INTERVAL: 1 + ETH: # For Wi-Fi stats change ETH to WLO + UPLOAD: + TEXT: + SHOW: True + X: 147 + Y: 140 + FONT: roboto-mono/RobotoMono-Regular.ttf + FONT_SIZE: 16 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 132, 154, 165 + BACKGROUND_IMAGE: background.png + DOWNLOAD: + TEXT: + SHOW: True + X: 271 + Y: 140 + FONT: roboto-mono/RobotoMono-Regular.ttf + FONT_SIZE: 16 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 132, 154, 165 + BACKGROUND_IMAGE: background.png + GPU: + INTERVAL: 1 + PERCENTAGE: + TEXT: + SHOW: True + SHOW_UNIT: True + X: 197 + Y: 384 + FONT: roboto-mono/RobotoMono-Regular.ttf + FONT_SIZE: 30 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 132, 154, 165 + BACKGROUND_IMAGE: background.png + CPU: + PERCENTAGE: + # In seconds. Longer intervals cause this to refresh more slowly. + # Setting to lower values will display near real time data, + # but may cause significant CPU usage or the display not to update properly + INTERVAL: 1 + TEXT: + SHOW: True + SHOW_UNIT: True + X: 214 + Y: 433 + FONT: roboto-mono/RobotoMono-Regular.ttf + FONT_SIZE: 30 + FONT_COLOR: 255, 255, 255 + # BACKGROUND_COLOR: 132, 154, 165 + BACKGROUND_IMAGE: background.png \ No newline at end of file diff --git a/res/themes/45/theme_example.png b/res/themes/45/theme_example.png new file mode 100644 index 00000000..6dbfe2d1 Binary files /dev/null and b/res/themes/45/theme_example.png differ diff --git a/simple-program.py b/simple-program.py index ce5d0618..ea4450d3 100755 --- a/simple-program.py +++ b/simple-program.py @@ -30,6 +30,7 @@ from library.lcd.lcd_comm_rev_b import LcdCommRevB from library.lcd.lcd_comm_rev_c import LcdCommRevC from library.lcd.lcd_comm_rev_d import LcdCommRevD +from library.lcd.lcd_comm_rev_e import LcdCommRevE from library.lcd.lcd_simulated import LcdSimulated from library.log import logger @@ -46,7 +47,7 @@ # - SIMU for 3.5" simulated LCD (image written in screencap.png) # - SIMU5 for 5" simulated LCD # To identify your smart screen: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Hardware-revisions -REVISION = "A" +REVISION = "E" stop = False @@ -79,12 +80,21 @@ def sighandler(signum, frame): elif REVISION == "D": logger.info("Selected Hardware Revision D (Kipye Qiye Smart Display 3.5\")") lcd_comm = LcdCommRevD(com_port=COM_PORT) - elif REVISION == "SIMU": + elif REVISION == "E": + logger.info("Selected Hardware Revision E (Turing Smart Screen 8.8\")") + lcd_comm = LcdCommRevE(com_port=COM_PORT) + elif REVISION == "SIMU2.1": + logger.info("Selected 2.1\" Simulated LCD") + lcd_comm = LcdSimulated(display_width=480, display_height=480) + elif REVISION == "SIMU3.5": logger.info("Selected 3.5\" Simulated LCD") lcd_comm = LcdSimulated(display_width=320, display_height=480) elif REVISION == "SIMU5": logger.info("Selected 5\" Simulated LCD") lcd_comm = LcdSimulated(display_width=480, display_height=800) + elif REVISION == "SIMU8.8": + logger.info("Selected 8.8\" Simulated LCD") + lcd_comm = LcdSimulated(display_width=1920, display_height=480) else: logger.error("Unknown revision") try: @@ -135,7 +145,7 @@ def sighandler(signum, frame): font_color=(255, 255, 255), background_image=background) - # Display the current time and some progress bars as fast as possible + #Display the current time and some progress bars as fast as possible bar_value = 0 while not stop: start = time.perf_counter() diff --git a/theme-editor.py b/theme-editor.py index e0a63266..197bafad 100755 --- a/theme-editor.py +++ b/theme-editor.py @@ -79,8 +79,12 @@ # For theme editor, always use simulated LCD if config.THEME_DATA["display"].get("DISPLAY_SIZE", '3.5"') == '5"': config.CONFIG_DATA["display"]["REVISION"] = "SIMU5" +elif config.THEME_DATA["display"].get("DISPLAY_SIZE", '3.5"') == '2.1"': + config.CONFIG_DATA["display"]["REVISION"] = "SIMU2.1" +elif config.THEME_DATA["display"].get("DISPLAY_SIZE", '3.5"') == '8.8"': + config.CONFIG_DATA["display"]["REVISION"] = "SIMU8.8" else: - config.CONFIG_DATA["display"]["REVISION"] = "SIMU" + config.CONFIG_DATA["display"]["REVISION"] = "SIMU3.5" from library.display import display # Only import display after hardcoded config is set @@ -248,7 +252,12 @@ def on_zone_click(event): led_color = tuple(map(int, led_color.split(', '))) viewer.configure(bg='#%02x%02x%02x' % led_color) + circular_mask = Image.open("res/backgrounds/circular-mask.png") + # Display preview in the window + if config.THEME_DATA["display"].get("DISPLAY_SIZE", '3.5"') == '2.1"': + # This is a circular screen: apply a circle mask over the preview + display.lcd.screen_image.paste(circular_mask, mask=circular_mask) display_image = ImageTk.PhotoImage(display.lcd.screen_image) viewer_picture = tkinter.Label(viewer, image=display_image, borderwidth=0) viewer_picture.place(x=RGB_LED_MARGIN, y=RGB_LED_MARGIN) @@ -283,6 +292,9 @@ def on_zone_click(event): display.lcd.screen_image.save(config.THEME_DATA['PATH'] + "preview.png", "PNG") # Display new picture + if config.THEME_DATA["display"].get("DISPLAY_SIZE", '3.5"') == '2.1"': + # This is a circular screen: apply a circle mask over the preview + display.lcd.screen_image.paste(circular_mask, mask=circular_mask) display_image = ImageTk.PhotoImage(display.lcd.screen_image) viewer_picture.config(image=display_image) diff --git a/tools/lsusb/turing3.5.txt b/tools/lsusb/turing3.5.txt deleted file mode 100644 index db26c30e..00000000 --- a/tools/lsusb/turing3.5.txt +++ /dev/null @@ -1,91 +0,0 @@ - -Bus 001 Device 002: ID 1a86:5722 QinHeng Electronics UsbMonitor -Device Descriptor: - bLength 18 - bDescriptorType 1 - bcdUSB 2.00 - bDeviceClass 2 Communications - bDeviceSubClass 0 - bDeviceProtocol 0 - bMaxPacketSize0 64 - idVendor 0x1a86 QinHeng Electronics - idProduct 0x5722 - bcdDevice 1.00 - iManufacturer 1 Turing - iProduct 2 UsbMonitor - iSerial 3 USB35INCHIPSV2 - bNumConfigurations 1 - Configuration Descriptor: - bLength 9 - bDescriptorType 2 - wTotalLength 0x0043 - bNumInterfaces 2 - bConfigurationValue 1 - iConfiguration 0 - bmAttributes 0xa0 - (Bus Powered) - Remote Wakeup - MaxPower 500mA - Interface Descriptor: - bLength 9 - bDescriptorType 4 - bInterfaceNumber 0 - bAlternateSetting 0 - bNumEndpoints 1 - bInterfaceClass 2 Communications - bInterfaceSubClass 2 Abstract (modem) - bInterfaceProtocol 1 AT-commands (v.25ter) - iInterface 0 - CDC Header: - bcdCDC 1.10 - CDC Call Management: - bmCapabilities 0x00 - bDataInterface 0 - CDC ACM: - bmCapabilities 0x02 - line coding and serial state - CDC Union: - bMasterInterface 0 - bSlaveInterface 1 - Endpoint Descriptor: - bLength 7 - bDescriptorType 5 - bEndpointAddress 0x81 EP 1 IN - bmAttributes 3 - Transfer Type Interrupt - Synch Type None - Usage Type Data - wMaxPacketSize 0x0008 1x 8 bytes - bInterval 255 - Interface Descriptor: - bLength 9 - bDescriptorType 4 - bInterfaceNumber 1 - bAlternateSetting 0 - bNumEndpoints 2 - bInterfaceClass 10 CDC Data - bInterfaceSubClass 0 - bInterfaceProtocol 0 - iInterface 0 - Endpoint Descriptor: - bLength 7 - bDescriptorType 5 - bEndpointAddress 0x82 EP 2 IN - bmAttributes 2 - Transfer Type Bulk - Synch Type None - Usage Type Data - wMaxPacketSize 0x0040 1x 64 bytes - bInterval 0 - Endpoint Descriptor: - bLength 7 - bDescriptorType 5 - bEndpointAddress 0x03 EP 3 OUT - bmAttributes 2 - Transfer Type Bulk - Synch Type None - Usage Type Data - wMaxPacketSize 0x0040 1x 64 bytes - bInterval 0 -Device Status: 0x0000 - (Bus Powered)