Releases: mathoudebine/turing-smart-screen-python
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
Release 3.3.3 - Custom data sources & theme author
Custom data sources
Following this feature request #306, it is now possible to easily add custom data sources to this project (unsupported hardware sensors, sound from music players, web API data...) and display them on themes like other sensors.
For this, a Python CustomDataSource
class must be implemented in library/sensors/sensors_custom.py
. This class can have numeric and/or text data to display.
There is no limitation on how much custom data source classes can be added!
Two examples have already been implemented in the file with comments to help you get started.
To display these custom data sources to a theme, they must be added to a new CUSTOM:
field in the theme.yaml
file of your theme.
The name of the class in theme.yaml
must be an exact match to the class name in sensors_custom.py
A theme has been developed to match example classes from sensors_custom.py
: res/themes/CustomDataExample/theme.yaml
Theme authors
I'm very thankful to the community for sharing their themes either using the Themes discussion space or as PR to this repository.
The author name has now been added as a new field to theme files, and is displayed on the Configuration Wizard below theme preview.
If the author name starts with @
it will be displayed as a hyperlink to the author's GitHub profile.
Existing themes on this repository have already been updated with their original author name!
What's Changed
- Implement custom data sources, with theme example and comments by @mathoudebine in #338
- Add authors for existing themes, and display it on Configuration Wizard by @mathoudebine in #339
Full Changelog: 3.3.2...3.3.3
Release 3.3.2 - Hotfix for rev. A
Regression for Turing 3.5 / rev. A display now fixed
Since release 3.3.0, there was a regression for Turing Smart Screen 3.5 / rev. A display in landscape mode.
It has been fixed in this release.
What's Changed
- Create images & fonts caches to avoid opening files from the filesystem every time by @mathoudebine in #334
- Fix issues with orientation for rev. A displays since release 3.3.0 by @mathoudebine in #336
Full Changelog: 3.3.1...3.3.2
Release 3.3.1 - FPS framerate & total RAM
FPS framerate
This release adds support for displaying FPS framerate on System Monitor!
Please note it only works for Windows platforms for now, requires administrator rights, and is limited to AMD GPUs
This is a limitation from LibreHardwareMonitor and GPU manufacturers
Example for a modified LandscapeEarth theme:
Check theme_example.yaml:276
to add this to your theme!
RAM total
Thanks to @majormer a new meter is available for RAM virtual memory total capacity
Check theme_example.yaml:380
to add this to your theme!
What's Changed
- Update stats.py to add RAM total by @majormer in #326
- Add FPS meter for LibreHardwareMonitor integration by @mathoudebine in #333
New Contributors
Full Changelog: 3.3.0...3.3.1
Release 3.3.0 - Kipye Qiye 3.5" support + breaking change
Kipye Qiye 3.5" support
After the "UsbPCMonitor" 3.5" & 5" support in the previous 3.2.0 release, it is now the turn of the quite rare Kipye Qiye 3.5" smart display to be supported by this project!
This new screen is identified as "revision D" in the code & configuration files, and is available for selection in the configuration wizard.
As its resolution of 320x480 is the same as other 3.5" smart screens like Turing or XuanFang, all existing 3.5" themes can be used on this product.
BREAKING CHANGE - text anchor when using this project as a library
An important change in this release may break your layout if you use this project as a library to control a smart screen from your own code.
This change has been introduced in #313 to fix a previous behavior related to text display with the DisplayText()
method.
Before the fix, we used to compute the empty "margins" around a drawn text via a call to textbbox
at the (0,0)
position, and subtract them to the drawn text's location.
This behavior is incorrect: when drawing text, we don't want it to jump up and down depending on the max. character height.
The correct behavior is to rather use the anchor
parameter of the textbox()
function set to a default value like "la"
(left-ascender) or None which default to "la"
By fixing this in the current release, you may find your text fields moved down a bit on your screen.
You can fix your text location on the screen by either using the "lt"
anchor in your calls to the DisplayText()
method (not recommended) or simply update the x/y coordinates of the text fields manually.
NOTE: System Monitor main program is not impacted by this fix, no change for existing themes
What's Changed
- ⬆️ Update pystray requirement from ~=0.19.4 to ~=0.19.5 by @dependabot in #324
- ⬆️ Update pillow requirement from ~=9.5.0 to ~=10.0.1 by @dependabot in #322
- Add anchor parameter to DisplayText by @hchargois in #313
- Add support for Kipye Qiye 3.5 smart display by @mathoudebine in #328
Full Changelog: 3.2.0...3.3.0
Release 3.2.0 - UsbPCMonitor support
UsbPCMonitor 3.5" & 5" support
This release comes with support for "UsbPCMonitor" 3.5" & 5"smart screen models
These smart screens do not have any manufacturer/model name to identify them, other than their specific Windows software named UsbPCMonitor.exe
Since they use the same serial protocol as the Turing 3.5 (rev. A) displays, they are now supported un this project.
Reworked configuration wizard
The configuration wizard has been reworked to ask for display information before theme selection. This way the displayed themes will match the entered display size.
What's Changed
- ⬆️ Update sv-ttk requirement from ~=2.5.3 to ~=2.5.4 by @dependabot in #293
- ⬆️ Update sv-ttk requirement from ~=2.5.4 to ~=2.5.5 by @dependabot in #300
- ⬆️ Bump actions/checkout from 3 to 4 by @dependabot in #316
- ⬆️ Update pythonnet requirement from ~=3.0.1 to ~=3.0.2 by @dependabot in #312
- Detect theme changes on PR and raise a warning, generate and save a diff in the job artifacts by @mathoudebine in #318
- Optimize rgb565 serialization by @hchargois in #317
- Shut down webserver when closing connection to sim LCD by @hchargois in #314
- Update PyYAML and numpy dependencies manually by @mathoudebine in #321
- Add UsbPCMonitor 3.5" & 5" support by @mathoudebine in #323
New Contributors
- @hchargois made their first contribution in #317
Full Changelog: 3.1.0...3.2.0
Release 3.1.0 - Radial progress bars & bugfix
Radial progress bars
Radial progress bars are now available in System Monitor themes (thanks @arthurferrai), check the LandscapeMagicBlue theme for examples!
What's Changed
- Generate a Markdown file containing theme previews in a table by @mathoudebine in #258
- Add support for zenpower (k10temp alternative) by @alexwbaule in #255
- Fix rotation for newer models of Turing 3.5" (no impact on previous models) by @mathoudebine in #266
- ⬆️ Update ruamel-yaml requirement from ~=0.17.31 to ~=0.17.32 by @dependabot in #268
- Added possibility to show radial graphs on themes by @arthurferrai in #260
- Retry read/write once if it fails by @mathoudebine in #270
- Add Radial to theme_example.yaml where supported by @mathoudebine in #271
- Do COM port autodiscovery only once at first connection by @mathoudebine in #272
- ⬆️ Update cython requirement from ~=0.29.35 to ~=0.29.36 by @dependabot in #280
- ⬆️ Update sv-ttk requirement from ~=2.4.5 to ~=2.5.3 by @dependabot in #279
- Add small delay on reconnect by @nneul in #283
New Contributors
- @arthurferrai made their first contribution in #260
- @nneul made their first contribution in #283
Full Changelog: 3.0.0...3.1.0
Release 3.0.0 - Turing 5" display support!
This release comes with Turing 5" displays support!
Many thanks to @alexwbaule @arthurferrai @MrFr1day and everyone that contributed in issues #81 and #90
Please note there is only basic support for now: no video or storage.
Documentation, Theme Editor, Configuration Wizard and Github workflows have been updated to handle 5" devices as well.
This release comes without any breaking changes for 3.5" devices.
Configuration Wizard
In the configuration Wizard, you can now select Turing 5" as your smart screen model.
Themes
Because the display resolution is different for 3.5" displays (320x480) and 5" displays (800x480), themes made previously for 3.5" displays cannot be used on 5" displays.
New 5" themes have been developed and packaged in this release:
When you select Turing 5" in the Configuration Wizard, the theme list is automatically updated to display only compatible themes.
theme.yaml
To create a theme for 5" devices, the format is the same as the 3.5" themes. You can do it manually or using the Theme Editor.
The only property to add to your theme.yaml
is:
display:
DISPLAY_SIZE: 5"
If this property is not in the theme file (to keep compatibility with old/community themes) or if its value is different than 5"
then the theme will be for 3.5 displays.
What's Changed
- Support 5 inches devices by @alexwbaule & @arthurferrai in #252
- New themes for 5" displays by @mathoudebine in #253
New Contributors
- @alexwbaule made their first contribution in #252
- @arthurferrai made their first contribution in #252
Full Changelog: 2.4.3...3.0.0