This commit is contained in:
Drath
2025-09-14 21:34:11 +02:00
parent 06b81d5242
commit 0b99dc55ea

View File

@@ -1,12 +1,12 @@
# linuxSmartie
Alphanumeric LCD software for Linux (kind of LCDSmartie for Windows but no GUI, no config file, no plugins, no Windows). Written with C++26, should compile with at least C++20.
Alphanumeric LCD controller software for Linux (kind of LCDSmartie for Windows but no GUI, no config file, no plugins, no Windows). Written with C++26 (`-std=c++2c`), will need at least gcc 14 to compile.
Hardcoded to work with 4x40 character display because that's what I have and I don't plan on using anything else. Should work with most other display sizes by modifying `src/LCDDisplay.cpp`. Best of luck.
Hardcoded to work with 4x40 character display because that's what I have and I don't plan on using anything else. Uses Matrix Orbital protocol over serial. Should work with most other display sizes by modifying `src/LCDDisplay.cpp`. Best of luck.
Vaguely inspired by suckless software philosophy.
## The config is the source code
Same as plugins. Just write more features scrub, learn some C++, damn
Same as plugins. Just write in more features scrub, learn some C++, damn
## TODOs
- Extra screens support perhaps?
@@ -14,10 +14,9 @@ Same as plugins. Just write more features scrub, learn some C++, damn
- In the LCDDisplay lib, reimplement all the features I have in picoSmartie + maybe finally add keypad support for both so I can toggle backlight (?) or change screens if I want any
- Screens could be automatic tbh, like if it detects media playing it switches to media screen, if GPU power > 80W it switches to main (hwmon) screen
- Network monitoring would be sick
- Need shared pointer after all? something is crashing
- centering func
- suspend/resume still broken
- try to be c++23, avoid globals, use naming conventions, avoid c way of doing things unless it makes more sense
- Centering function for the in utils `std::string center(str, len)`;
- Suspend/resume still broken but also I don't really use it soooo...
- Try to be C++26, avoid globals, wrap in namespaces, use naming conventions, use classes, avoid pure C way of doing things unless it makes more sense
## LCD layout
It looks something like this
@@ -54,12 +53,10 @@ Text04="$dll(hwinfo,1,Vcore,3)V $Right($dll(hwinfo,1,Average Effective Clock,a)M
```
### So what's still missing
- Tasmota wall power, doable
- Average CPU freq, doable
- Per-core CPU load, doable but annoying
- FPS counter, maybe possible?
- Active core count, probably impossible but loadAvg is better?
- GPU board power, probably impossible, it was estimated on windows anyway
- CPU cache/iod, likely impossible, zenpower doesnt show it
- GPU clock limit, probably impossible, amdgpu doesnt show it?
- GPU clock limit, probably impossible, gpu_metrics doesnt show it?
- CPU fan, likely impossible, no modules