Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ Supported operating systems : macOS, Windows, Linux (incl. Raspberry Pi), basica
| <img src="res/docs/xuanfang.webp"/> | <img src="res/docs/UsbPCMonitor_5inch.webp" width="60%" height="60%"/> | <img src="res/docs/kipye-qiye-35.webp" width="60%" height="60%"/> |
| revision B & flagship (with backplate & RGB LEDs) | Unknown manufacturer, visually similar to Turing 3.5" / 5". Original software is `UsbPCMonitor.exe` | Front panel has an engraved inscription "奇叶智显" Qiye Zhixian (Qiye Smart Display) |

| ✅ WeAct Studio Display FS V1 0.96" | ✅ WeAct Studio Display FS V1 3.5" |
|---------------------------------------------------------------|--------------------------------------------------------------|
| <img src="res/docs/weact_0.96.jpg" width="60%" height="60%"/> | <img src="res/docs/weact_3.5.png" width="60%" height="60%"/> |
| ✅ WeAct Studio Display FS V1 0.96" | ✅ WeAct Studio Display FS V1 3.5" | ✅ Solarmax / HL-VMAX (Artinchip) |
|---------------------------------------------------------------|--------------------------------------------------------------|---------------------------------------------------------------|
| <img src="res/docs/weact_0.96.jpg" width="60%" height="60%"/> | <img src="res/docs/weact_3.5.png" width="60%" height="60%"/> | Ultra-wide PC case & secondary displays (320x1480, 462x1920) |

<details>

Expand Down
32 changes: 30 additions & 2 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
XUANFANG_MODEL = "XuanFang rev. B & flagship"
KIPYE_MODEL = "Kipye Qiye Smart Display"
WEACT_MODEL = "WeAct Studio Display FS V1"
SOLARMAX_MODEL = "Solarmax / HL-VMAX (Artinchip)"
SIMULATED_MODEL = "Simulated screen"

_SIZE_2_1_INCH = "2.1\"" # Only for retro compatibility
Expand All @@ -77,6 +78,7 @@
SIZE_8_INCH = "8\""
SIZE_8_8_INCH = "8.8\""
SIZE_8_8_INCH_NEWREV = "8.8\" / 9.2\" (V1.X new HW rev.)"
SIZE_11_3_INCH = "11.3\" / 9.2\" (320x1480 / 462x1920)"
SIZE_12_3_INCH = "12.3\""
SIZE_2_8_INCH_NEWREV = "2.8\" round (V1.X new HW rev.)"

Expand All @@ -92,6 +94,7 @@
SIZE_8_INCH,
SIZE_8_8_INCH,
SIZE_8_8_INCH_NEWREV,
SIZE_11_3_INCH,
SIZE_12_3_INCH,
)

Expand All @@ -114,6 +117,16 @@
('TUR_USB', SIZE_2_8_INCH_NEWREV): TURING_MODEL,
('WEACT_A', SIZE_3_5_INCH): WEACT_MODEL,
('WEACT_B', SIZE_0_96_INCH): WEACT_MODEL,
('VMAX', SIZE_11_3_INCH): SOLARMAX_MODEL,
('VMAX', '11.3"'): SOLARMAX_MODEL,
('VMAX', _SIZE_9_2_INCH): SOLARMAX_MODEL,
('VMAX', SIZE_8_8_INCH): SOLARMAX_MODEL,
('VMAX', SIZE_8_8_INCH_NEWREV): SOLARMAX_MODEL,
('SOLARMAX', SIZE_11_3_INCH): SOLARMAX_MODEL,
('SOLARMAX', '11.3"'): SOLARMAX_MODEL,
('SOLARMAX', _SIZE_9_2_INCH): SOLARMAX_MODEL,
('SOLARMAX', SIZE_8_8_INCH): SOLARMAX_MODEL,
('SOLARMAX', SIZE_8_8_INCH_NEWREV): SOLARMAX_MODEL,

('SIMU', SIZE_0_96_INCH): SIMULATED_MODEL,
('SIMU', SIZE_2_x_INCH): SIMULATED_MODEL,
Expand All @@ -123,10 +136,16 @@
('SIMU', SIZE_5_2_INCH): SIMULATED_MODEL,
('SIMU', SIZE_8_INCH): SIMULATED_MODEL,
('SIMU', SIZE_8_8_INCH): SIMULATED_MODEL,
('SIMU', SIZE_11_3_INCH): SIMULATED_MODEL,
}
# This map is used to write the correct config.yaml "REVISION" from selected smart screen model and size
model_and_size_to_revision_map = {
(KIPYE_MODEL, SIZE_3_5_INCH): 'D',
(SOLARMAX_MODEL, SIZE_11_3_INCH): 'VMAX',
(SOLARMAX_MODEL, '11.3"'): 'VMAX',
(SOLARMAX_MODEL, _SIZE_9_2_INCH): 'VMAX',
(SOLARMAX_MODEL, SIZE_8_8_INCH): 'VMAX',
(SOLARMAX_MODEL, SIZE_8_8_INCH_NEWREV): 'VMAX',
(TURING_MODEL, SIZE_2_x_INCH): 'C',
(TURING_MODEL, SIZE_3_5_INCH): 'A',
(TURING_MODEL, SIZE_4_6_INCH): 'TUR_USB',
Expand All @@ -151,6 +170,7 @@
(SIMULATED_MODEL, SIZE_5_2_INCH): 'SIMU',
(SIMULATED_MODEL, SIZE_8_INCH): 'SIMU',
(SIMULATED_MODEL, SIZE_8_8_INCH): 'SIMU',
(SIMULATED_MODEL, SIZE_11_3_INCH): 'SIMU',
}
hw_lib_map = {"AUTO": "Automatic", "LHM": "LibreHardwareMonitor (admin.)", "PYTHON": "Python libraries",
"STUB": "Fake random data", "STATIC": "Fake static data"}
Expand Down Expand Up @@ -500,11 +520,15 @@ def load_config_values(self):
size = SIZE_2_x_INCH # If a theme is for 2.1" or 2.8" then it is for all 2.x"
elif size == _SIZE_9_2_INCH:
size = SIZE_8_8_INCH_NEWREV # If a theme is for 9.2" then it is for 8.8"/9.2" (new rev)
elif size == '11.3"':
size = SIZE_11_3_INCH
try:
if size == SIZE_8_8_INCH and self.config['display']['REVISION'] == 'TUR_USB':
size = SIZE_8_8_INCH_NEWREV
if size == SIZE_2_x_INCH and self.config['display']['REVISION'] == 'TUR_USB':
size = SIZE_2_8_INCH_NEWREV
if size in (SIZE_8_8_INCH, SIZE_8_8_INCH_NEWREV) and self.config['display']['REVISION'] in ('VMAX', 'SOLARMAX'):
size = SIZE_11_3_INCH
self.size_cb.set(size)
except:
self.size_cb.current(0)
Expand Down Expand Up @@ -606,7 +630,7 @@ def on_theme_editor_click(self):
# Load binary (for releases) or Python file with system interpreter
theme_editor = next(MAIN_DIRECTORY.glob("theme-editor*"))
if platform.system() == "Windows":
subprocess.Popen([str(theme_editor), self.theme_cb.get()], shell=True)
subprocess.Popen([str(theme_editor), self.theme_cb.get()], creationflags=0x08000000)
else:
subprocess.Popen([str(theme_editor), self.theme_cb.get()])

Expand All @@ -624,7 +648,7 @@ def on_saverun_click(self):
# Load binary (for releases) or Python file with system interpreter
main_file = next(MAIN_DIRECTORY.glob("main*"))
if platform.system() == "Windows":
subprocess.Popen([str(main_file)], shell=True)
subprocess.Popen([str(main_file)], creationflags=0x08000000)
else:
subprocess.Popen([str(main_file)])

Expand Down Expand Up @@ -659,6 +683,10 @@ def on_size_change(self, e=None):
elif size == SIZE_8_8_INCH_NEWREV or size == SIZE_8_8_INCH:
themes = get_themes(SIZE_8_8_INCH)
themes += get_themes(_SIZE_9_2_INCH)
elif size == SIZE_11_3_INCH:
themes = get_themes('11.3"')
themes += get_themes(_SIZE_9_2_INCH)
themes += get_themes(SIZE_8_8_INCH)
else:
themes = get_themes(size)

Expand Down
6 changes: 6 additions & 0 deletions library/display.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
from library.lcd.lcd_comm_rev_d import LcdCommRevD
from library.lcd.lcd_comm_weact_a import LcdCommWeActA
from library.lcd.lcd_comm_weact_b import LcdCommWeActB
from library.lcd.lcd_comm_vmax import LcdCommVmax
from library.lcd.lcd_simulated import LcdSimulated
from library.log import logger

Expand Down Expand Up @@ -76,6 +77,8 @@ def _get_theme_size() -> tuple[int, int]:
return 480, 1920
elif config.THEME_DATA["display"].get("DISPLAY_SIZE", '') == '9.2"':
return 480, 1920 # 9.2" displays are 1920x462 but using 1920x480 to be compatible with 8.8" themes
elif config.THEME_DATA["display"].get("DISPLAY_SIZE", '') == '11.3"':
return 320, 1480
elif config.THEME_DATA["display"].get("DISPLAY_SIZE", '') == '12.3"':
return 720, 1920
else:
Expand Down Expand Up @@ -109,6 +112,9 @@ def __init__(self):
elif config.CONFIG_DATA["display"]["REVISION"] == "WEACT_B":
self.lcd = LcdCommWeActB(com_port=config.CONFIG_DATA['config']['COM_PORT'],
update_queue=config.update_queue)
elif config.CONFIG_DATA["display"]["REVISION"] in ("VMAX", "SOLARMAX"):
self.lcd = LcdCommVmax(com_port=config.CONFIG_DATA['config']['COM_PORT'],
update_queue=config.update_queue, display_width=width, display_height=height)
elif config.CONFIG_DATA["display"]["REVISION"] == "SIMU":
# Simulated display: always set width/height from theme
self.lcd = LcdSimulated(display_width=width, display_height=height)
Expand Down
Loading