Unofficial Python system monitor and library for small IPS USB-C displays like Turing Smart Screen or XuanFang
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)
This release comes with 2 new themes that use the line graph functionality:
@hicwic released the theme he made for his Cyberdeck project
Check this discussion #374 for more details and final prototype!
This theme takes full advantage of the line graph feature, and is inspired by the (in)famous Windows Task Manager
This release also contain the following fixes:
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.3.4...3.4.0
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.3.3...3.3.4
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
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!
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.3.2...3.3.3
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.
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.3.1...3.3.2
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!
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!
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.3.0...3.3.1
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.
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
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.2.0...3.3.0
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.
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.
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.1.0...3.2.0
Radial progress bars are now available in System Monitor themes (thanks @arthurferrai), check the LandscapeMagicBlue theme for examples!
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/3.0.0...3.1.0
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.
In the configuration Wizard, you can now select Turing 5" as your smart screen model.
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.
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/2.4.3...3.0.0
Full Changelog: https://github.com/mathoudebine/turing-smart-screen-python/compare/2.4.2...2.4.3