Releases: mathoudebine/turing-smart-screen-python
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
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