Releases: mathoudebine/turing-smart-screen-python
3.9.1 - Turing 8.8" & 2.1" support (bugfix)
This is a 3.9 point release for the following changes:
- Restore compatibility with Python < 3.11 for rev. C and rev. D screens
- Add portable Windows package
For the full 3.9 changelog see https://github.com/mathoudebine/turing-smart-screen-python/releases/tag/3.9.0
To discuss about the 3.9 releases: #691
Is this a malicious program?
Some users reported that the Windows packages published for releases are flagged by their anti-virus solution like Avast or NOD32.
Why are these packages detected as malicious?
Anti-virus software now use heuristic filters to try to detect new threats that have not yet been identified.
Windows packages can trigger the anti-virus heuristic filters for the following reasons:
- Python code packaged as an executable: could disguise some malicious code as a legitimate program
- DLL loading as administrator: could load external malicious code, or infect critical system components
Of course it is not possible to know precisely why these packages are flagged by anti-virus software. The heuristic filters are kept secret to prevent them from being bypassed by harmful programs.
Can I trust this program?
This project is open-source, you can review the code from the main page using Github browser: https://github.com/mathoudebine/turing-smart-screen-python
No security concerns have been reported so far despite the daily activity.
The Windows packages for releases are generated using Github Actions platform on cloud containers from Github. No manual intervention is made, and the files never leave the secured container environment.
The Github actions to generate the packages are available here: https://github.com/mathoudebine/turing-smart-screen-python/blob/main/.github/workflows/generate-windows-packages.yml and https://github.com/mathoudebine/turing-smart-screen-python/blob/main/.github/workflows/generate-windows-packages-debug.yml
I still don't want to take any risks
If you still don't trust Windows packages for releases, just download the source code instead:
Then follow the manual installation procedure. You will need to install Python manually and run some commands from a terminal.
What's Changed
- to_bytes: Restore compatibility with Python < 3.11 by @mathoudebine in #701
- Dev/add windows portable package by @mathoudebine in #702
Full Changelog: 3.9.0...3.9.1
3.9.0 - Turing 8.8" & 2.1" support
This release brings the the long-awaited support for Turing 8.8" and 2.1" displays!
The Configuration window has been updated to support the new display sizes. You can also spot a new "Open themes folder" button for quick access to themes.
Theme Editor has been updated as well with buttons to zoom in/out, useful for wide screens like 8.8":
This release comes with a first set of themes for both display sizes:


To get these new themes, don't forget to check "Default themes" during setup (and backup your local theme modifications before!):
Please do not hesitate to raise an issue if you find some bugs in this release!
What's Changed
- ⬆️ Update numpy requirement from ~=2.2.2 to ~=2.2.3 by @dependabot in #684
- ⬆️ Update psutil requirement from ~=6.1.1 to ~=7.0.0 by @dependabot in #686
- Implement support for Turing 2.1" and 8.8" screens by @mathoudebine in #690
Full Changelog: 3.8.2...3.9.0
3.8.2 - Optimizations ✨
This release adds common optimizations for all screens:
- Thanks to @hchargois the optimized serialization process already applied to rev. A (Turing Smart Screen 3.5") has been extended to all supported displays: Turing 5", XuanFang, Kipye... The image serialization is now up to 60x faster!
- Sensor monitoring does not start until screen is fully initialized and background is displayed, to avoid serial buffer overload and "burst" mode where the screen displays data frantically during the first 10 seconds
- A debug installer is now generated for each release, with command window to display logs. Useful for debugging.
- For rev. B screens (XuanFang) a cool-down of 0.05 seconds has been added between each frames to reduce drastically the problem of "corrupted bitmaps" for themes with a lot of content.
Full list of changes
- ⬆️ Update pyinstaller requirement from ~=6.11.1 to ~=6.12.0 by @dependabot in #671
- Use Numpy for all revisions by @hchargois in #641
- Generate debug installer for Windows by @mathoudebine in #678
- Optimize load to avoid "burst" at startup, fix rev. B corruption by @mathoudebine in #679
Full Changelog: 3.8.1...3.8.2
3.8.1 - Windows Installer fix
What's Changed
- Fix Windows Installer not opening Theme Editor because of spaces in paths by @mathoudebine in #676
Full Changelog: 3.8.0...3.8.1
3.8.0 - Windows Installer 💾
Windows Installer now available
This feature has been requested a lot in Issues and Discussions, it is now available starting from this release!
It means Windows users will now be able to easily install and update the Turing System Monitor program without having to install Python and dependencies manually.
During the first installation, the System Monitor is installed along all default themes and configuration.
When updating to a newer version, the installer will offer a way to reinstall default themes and configuration. This is unchecked by default in case the user has made changes to the default themes and want to keep it. Custom themes added manually will always be preserved.
After installation is complete, the System Monitor program will be installed in %localappdata%\Programs\Turing System Monitor
and can be launched (or uninstalled) from the Start Menu:
If you already used the System Monitor program on your machine, you will need to reconfigure it and import your themes to %localappdata%\Programs\Turing System Monitor\themes
. To open this folder type Win+R and enter this path then press Enter.
Every time a new release is created, the Windows installer will be built by Github Actions and attached to the release notes: see "Assets" below this message and download turing-system-monitor_3.8.0.exe
now!
Weather & Ping configuration
Following release 3.7.0 that added the support for weather and ping sensors, they can now be setup through the Configuration window:
Python 3.8 support removed
Python 3.8 is now EOL and support has ended since 2024-10. Some Python modules this project uses have started to drop Python 3.8 support, which means this project cannot support Python 3.8 anymore.
If you have Python 3.8, you can stick to the previous version of this project (3.7.0) or update Python.
New themes
@takattila added its themes to this project, thanks!
All changes
- ⬆️ Update ruamel-yaml requirement from ~=0.18.6 to ~=0.18.7 by @dependabot in #633
- Fix time/date fields of all themes to avoid ghosting by @mathoudebine in #636
- ⬆️ Update pillow requirement from ~=11.0.0 to ~=11.1.0 by @dependabot in #637
- ⬆️ Update ruamel-yaml requirement from ~=0.18.7 to ~=0.18.8 by @dependabot in #638
- Add weather and ping options to configure wizard by @mathoudebine in #639
- Fix most type hinting issues in library/lcd by @hchargois in #622
- ⬆️ Update ruamel-yaml requirement from ~=0.18.8 to ~=0.18.10 by @dependabot in #643
- Create installer for Windows by @mathoudebine in #640
- Remove Python 3.8 support by @mathoudebine in #658
- ⬆️ Update numpy requirement from ~=2.2.1 to ~=2.2.2 by @dependabot in #651
- ⬆️ Bump Minionguyjpro/Inno-Setup-Action from 1.2.2 to 1.2.5 by @dependabot in #659
- ⬆️ Update babel requirement from ~=2.16.0 to ~=2.17.0 by @dependabot in #663
- Simple themes by @takattila in #662
New Contributors
- @takattila made their first contribution in #662
Full Changelog: 3.7.0...3.8.0
Release 3.7.0 - 🌦️ New Ping & Weather sensors, advanced radials, LHM update
New Ping & Weather sensors
Thanks to @Psykotik, new sensors are available in this release:
PING
sensor to display ping delay between your computer and any other internal/external host/IPWEATHER
sensors to display weather forecast (temperature/humidity/text forecast) from your location using OpenWeatherMap API
Check the new ColoredFlat theme to get started!
These sensors needs to be configured in config.yaml
. OpenWeatherMap API needs a key created from an account on their website.
Advanced radial graphs
Thanks to @caerffili it is now possible to create intersecting radials:
Check the Advanced Radial theme example to get started!
LibreHardwareMonitor 0.9.4 update
If you are using Windows, this release includes the new LibreHardwareMonitor release 0.9.4 to support latest hardware.
Check the release note to see if your hardware is included in this release.
New themes
LandscapeModernDevice35 (3.5")
Full changelog
- ⬆️ Update pillow requirement from ~=10.4.0 to ~=11.0.0 by @dependabot in #586
- Incorrect log message when configuring manually in *nix environments. #582 by @nhomar in #583
- Added new theme by @napobear in #594
- Fix total_memory is NAN for AMD GPUs crashes thread by @Pepper-the-kobold in #573
- [Add] Ping and Weather custom sensor + ColoredFlat Theme by @Psykotik in #510
- Advanced radials by @caerffili in #500
- Replace relative path with absolute, to allow launch from another folder by @mathoudebine in #623
- Add LineGraph new properties: axis legend font and font size by @mathoudebine in #624
- ⬆️ Update psutil requirement from ~=6.1.0 to ~=6.1.1 by @dependabot in #627
- Update LibreHardwareMonitor to 0.9.4 by @mathoudebine in #630
New Contributors
- @nhomar made their first contribution in #583
- @napobear made their first contribution in #594
- @Pepper-the-kobold made their first contribution in #573
- @Psykotik made their first contribution in #510
- @caerffili made their first contribution in #500
Full Changelog: 3.6.0...3.7.0
Release 3.6.0 - Python 3.13 and numpy 2.x support, bugfixes
This quick release adds support for Python 3.13 and numpy 2.x, as well as features ans fixes since latest release including:
- Add text box width and height by @Xzonn to use non-monospaced fonts on text fields without "ghosting" effects
- Add line width option for Line graphs by @MAIKS1900
- Fix CPU temperature bar graph and radial graph inverted by @mathoudebine
- New "Total vRAM" sensor by @majormer
- New "SystemUptime" sensor by @NurNano
- Fix AMD GPU load sensor by @sutaburosu
- Use Nvidia GPU in priority with Python sensors by @mathoudebine
I also want to thank you all for your contributions wether it is PR, issues, themes...
This project has been an amazing journey and I'm glad to see a such a good spirit of support in the Discussions space
I wish I could have more time to answer to all of you individually
I will try to review and integrate as much PRs as I can during the following weeks
Happy end of year ! ✨
Full Changelog
- Update service file to remove root as user by @mathoudebine in #520
- Add text box width and height by @Xzonn in #487
- Add line width option for Line graphs by @MAIKS1900 in #509
- ⬆️ Update tkinter-tooltip requirement from ~=3.0.0 to ~=3.1.0 by @dependabot in #523
- Fix CPU temperature bar graph and radial graph inverted by @mathoudebine in #528
- ⬆️ Update pillow requirement from ~=10.3.0 to ~=10.4.0 by @dependabot in #529
- Correct TaskManager5inch net up/down display by @rWolstenholme in #532
- Do not monitor hardware sensors that are not used by the theme by @mathoudebine in #540
- Add Total vRAM by @majormer in #485
- New sensor: GPU total memory by @mathoudebine in #541
- SystemUptime by @NurNano in #492
- SystemUptime by @mathoudebine in #542
- Convert
amd_gpu.query_load()
value to a percentage by @sutaburosu in #544 - ⬆️ Update pyyaml requirement from ~=6.0.1 to ~=6.0.2 by @dependabot in #549
- ⬆️ Update babel requirement from ~=2.15.0 to ~=2.16.0 by @dependabot in #552
- Use Nvidia GPU in priority with Python sensors by @mathoudebine in #571
- ⬆️ Update pythonnet requirement from ~=3.0.3 to ~=3.0.5 by @dependabot in #617
- Update numpy to v2 by @hchargois in #615
- ⬆️ Update numpy requirement from ~=1.26.4 to ~=2.2.0 by @dependabot in #614
- Python 3.13 support by @mathoudebine in #618
- ⬆️ Update tkinter-tooltip requirement from ~=3.1.0 to ~=3.1.2 by @dependabot in #606
- ⬆️ Update psutil requirement from ~=5.9.8 to ~=6.1.0 by @dependabot in #589
New Contributors
- @Xzonn made their first contribution in #487
- @MAIKS1900 made their first contribution in #509
- @rWolstenholme made their first contribution in #532
- @NurNano made their first contribution in #492
- @sutaburosu made their first contribution in #544
Full Changelog: 3.5.0...3.6.0
Release 3.5.0 - CPU Fan manual selection & bugfix
New feature : CPU fan manual selection for Linux platforms
On Linux platforms, the CPU fan is often controlled by the motherboard unlike the GPU fan.
Because of that, it does not contain cpu
in the sensor name, and cannot automatically detected.
E.g. with an AMD CPU on an Asus motherboard: the CPU fan sensor is managed by nct6798
Nuvoton's Super I/O Controller
>$ sensors
nct6798-isa-0290
Adapter: ISA adapter
fan1: 707 RPM (min = 0 RPM) #
fan2: 906 RPM (min = 0 RPM) # One of those is the CPU fan, but which one?
fan3: 691 RPM (min = 0 RPM) #
fan4: 657 RPM (min = 0 RPM) #
fan5: 0 RPM (min = 0 RPM)
fan6: 0 RPM (min = 0 RPM)
fan7: 0 RPM (min = 0 RPM)
amdgpu-pci-0800
Adapter: PCI adapter
fan1: 825 RPM (min = 0 RPM, max = 3200 RPM) # GPU fan is clearly identified
On previous releases, when CPU fan could not be automatically detected, it was ignored with the following warning on logs:
20/02/2024 18:05:13 [WARNING] Your CPU Fan Speed is not supported yet
With this new release, there is now a new field in the config.yaml
configuration file:
# CPU fan
# For Linux/MacOS platforms, the CPU fan is amongst all fan sensors gathered from the motherboard chipset
# If value is AUTO the system monitor will try to auto-select the CPU fan
# If auto-detection fails, it might be necessary to manually indicate which fan is the CPU fan
# Value must be 'controller/fan' e.g. 'nct6798/fan2'. Use configuration wizard for help in selection
CPU_FAN: AUTO
And the CPU fan can be manually selected in the configuration wizard:
A tooltip also indicates which package to install in order to detect hardware sensors from the motherboard:
What's Changed
- Fix sensor names for Intel GPU, avoid exception when fan speed is None by @mathoudebine in #479
- Add GPU frequency sensor by @mathoudebine in #480
- ⬆️ Update pillow requirement from ~=10.2.0 to ~=10.3.0 by @dependabot in #496
- Add LHM robustness for sensors None values by @mathoudebine in #507
- Check if theme is valid for Configuration Wizard by @mathoudebine in #506
- ⬆️ Update babel requirement from ~=2.14.0 to ~=2.15.0 by @dependabot in #511
- Add CPU fan selection for Python libraries on Linux by @mathoudebine in #484
Full Changelog: 3.4.0...3.4.1
Release 3.4.0 - Line graphs & bugfix
New feature: line graphs!
Thanks to @hicwic's PR #371 the System Monitor program now supports line graphs!
The line graph feature has been added to many metrics like: CPU/GPU/Disk/Memory usage, temperature, CPU Fan speed, FPS...
Check https://github.com/mathoudebine/turing-smart-screen-python/blob/main/res/themes/theme_example.yaml and look for LINE_GRAPH
key:
LINE_GRAPH:
SHOW: False
X: 300
Y: 220
WIDTH: 133
HEIGHT: 70
MIN_VALUE: 0
MAX_VALUE: 100
HISTORY_SIZE: 10
AUTOSCALE: False
LINE_COLOR: 61, 184, 225
AXIS: True
AXIS_COLOR: 255, 135, 0
# BACKGROUND_COLOR: 0, 0, 0
BACKGROUND_IMAGE: background.png
The history size (number of previous values displayed on the graph) can be adjusted for its data.
With AUTOSCALE: True
the line graph Y axis will constantly adjust to the min/max displayed values, otherwise set MIN_VALUE
/ MAX_VALUE
for a static Y axis
Graph axis can be show or hidden with AXIS: True
/ False
and set to a specific color with AXIS_COLOR
(default to the LINE_COLOR
if not set)
New themes:
This release comes with 2 new themes that use the line graph functionality:
Cyberdeck theme (3.5 inch)
@hicwic released the theme he made for his Cyberdeck project
Check this discussion #374 for more details and final prototype!
Task Manager theme (5 inch)
This theme takes full advantage of the line graph feature, and is inspired by the (in)famous Windows Task Manager
Other fixes
This release also contain the following fixes:
- System Monitor: Workaround for models failing to display their previous content after being turned off/on #427 (fixes #419)
- Theme Editor: only refresh theme if theme file still exists (fix for vim text editor) #428 (fixes #401)
- System Monitor: Custom stats not displayed if numeric value is zero #444 (fixes #442)
- System Monitor: Better error message when missing ImageTk dependency #443
- System Monitor: Do not use psutil virtual_memory used/free: not reliable. Use total/available instead #462 (fixes #450)
- System Monitor: User proper conversion for Memory values (power of 1024 instead of power of 1000) #463 (fixes #449 partially)
- System Monitor: Fix LibreHardwareMonitor computation for swap/pagefile usage in case no swap/pagefile defined #391 (fixes #390)
What's Changed
- Fix LibreHardwareMonitor computation for swap/pagefile usage in case no swap/pagefile defined by @mathoudebine in #391
- Add listing of SubHardware from LibreHardwareMonitor by @mathoudebine in #395
- ⬆️ Update psutil requirement from ~=5.9.6 to ~=5.9.7 by @dependabot in #422
- ⬆️ Bump actions/setup-python from 4 to 5 by @dependabot in #407
- ⬆️ Bump actions/upload-artifact from 3 to 4 by @dependabot in #414
- ⬆️ Bump github/codeql-action from 2 to 3 by @dependabot in #412
- ⬆️ Update babel requirement from ~=2.13.1 to ~=2.14.0 by @dependabot in #411
- Workaround for models failing to display their previous content after being turned off/on by @mathoudebine in #427
- Theme Editor: only refresh theme if theme file still exists (fix for vim text editor) by @mathoudebine in #428
- Fix: Custom stats not displayed if numeric value is zero by @mathoudebine in #444
- Update error message when missing ImageTk dependency by @mathoudebine in #443
- ⬆️ Update pillow requirement from ~=10.1.0 to ~=10.2.0 by @dependabot in #434
- ⬆️ Update psutil requirement from ~=5.9.7 to ~=5.9.8 by @dependabot in #457
- ⬆️ Bump actions/dependency-review-action from 3 to 4 by @dependabot in #454
- Feature - plot graph by @hicwic in #371
- Do not use psutil virtual_memory used/free: not reliable. Use total/available instead by @mathoudebine in #462
- User proper conversion for Memory values (power of 1024 instead of power of 1000) by @mathoudebine in #463
- ⬆️ Update sv-ttk requirement from ~=2.5.5 to ~=2.6.0 by @dependabot in #464
- ⬆️ Update ruamel-yaml requirement from ~=0.18.5 to ~=0.18.6 by @dependabot in #466
- @hicwic PR #371 by @mathoudebine in #461
New Contributors
Full Changelog: 3.3.4...3.4.0
Release 3.3.4 - Python 3.12 compatible
What's Changed
- Compatibility with Python 3.12 by @mathoudebine in #345
- Update bash green theme with radial by @Rollbacke in #352
- ⬆️ Update ruamel-yaml requirement from ~=0.17.32 to ~=0.17.33 by @dependabot in #342
- ⬆️ Update babel requirement from ~=2.12.1 to ~=2.13.0 by @dependabot in #350
- ⬆️ Update ruamel-yaml requirement from ~=0.17.33 to ~=0.17.35 by @dependabot in #351
- ⬆️ Bump stefanzweifel/git-auto-commit-action from 4 to 5 by @dependabot in #355
- ⬆️ Update pythonnet requirement from ~=3.0.2 to ~=3.0.3 by @dependabot in #357
- ⬆️ Update psutil requirement from ~=5.9.5 to ~=5.9.6 by @dependabot in #360
- ⬆️ Update pillow requirement from ~=10.0.1 to ~=10.1.0 by @dependabot in #361
- ⬆️ Update ruamel-yaml requirement from ~=0.17.35 to ~=0.17.40 by @dependabot in #366
- ⬆️ Update babel requirement from ~=2.13.0 to ~=2.13.1 by @dependabot in #372
- ⬆️ Update ruamel-yaml requirement from ~=0.17.40 to ~=0.18.3 by @dependabot in #377
- ⬆️ Update ruamel-yaml requirement from ~=0.18.3 to ~=0.18.4 by @dependabot in #380
- ⬆️ Update ruamel-yaml requirement from ~=0.18.4 to ~=0.18.5 by @dependabot in #383
Full Changelog: 3.3.3...3.3.4