readme wasnt upsaded in ages

This commit is contained in:
2026-05-11 11:17:44 +02:00
parent c1fd1f706e
commit ac75332680

View File

@@ -3,7 +3,7 @@ Alphanumeric LCD controller software for Linux (kind of LCDSmartie for Windows b
Big ol rewrite in C, like God intended because GOOD LORD C++ IS A MESS. Originally written with C23, then ported to C99 because it's a bigger numer. Also trivially portable to ANSI C. Idk maybe I'll port it to C23 again.
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 if you try to make it work with anything else.
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/lcd.c`. Best of luck if you try to make it work with anything else.
Vaguely inspired by suckless software philosophy, as in:
@@ -18,9 +18,8 @@ Same as plugins. Just write in more features scrub, learn some C, damn
- Extra screens support perhaps? just halt sensors monitoring thread and print another struct on display if needed, have a semaphore or sth
- Maybe not even screens, keep the 1st line and change lines 2-4
- Media playback screen (use mpris, get playback info with mpris)
- 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
- In the lcd 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 in media screen and GPU power > 80W it switches to main (hwmon) screen
- **FUCK C++, HUGE REWRITE FROM SCRATCH IN C LIKE GOD ALWAYS INTENDED** but fuuuuck display thread would be so painful without std::string. And I really would need to start a whole ass project from a clean slate since I made it a point to use a lot of C++ features which now bite me in the ass.
## LCD layout
It looks something like this
@@ -65,13 +64,13 @@ Text04="$dll(hwinfo,1,Vcore,3)V $Right($dll(hwinfo,1,Average Effective Clock,a)M
- GPU clock limit, probably impossible, gpu_metrics doesnt show it?
### Shit needed to compile on Debian 13
V simple:
```bash
sudo apt install build-essential cmake libwebsockets-dev nlohmann-json3-dev
sudo apt install build-essential cmake
make configure
make build
```
You're probably on some meme immutable distro so use Debian 13 on distrobox. Ubuntu 24.04 should also work. Might set up a distrobox container file, with distrobox-assemble (?)
You're probably on some meme immutable distro so use Debian 13 on distrobox. Ubuntu 24.04 should also work.
### Additional notes
@@ -79,4 +78,4 @@ You're probably on some meme immutable distro so use Debian 13 on distrobox. Ubu
- On Fedora Workstation it can be added by appending it to `/etc/kernel/cmdline`.
- On atomic desktops (Silverblue/Kinoite), `rpm-ostree kargs --append-if-missing=acpi_enforce_resources=lax`
- You need to be able to read RAPL as user. Create in `/etc/tmpfiles.d/intelrapl.conf` with content `z- /sys/class/powercap/intel-rapl:0/energy_uj 0440 root uucp - -`. Adjust uucp to whatever group applicable, like `dialout`.
- `compile_commands.json` is so clang understands this project, so we can edit it with helix/neovim. Generated with `bear -- make`, make sure to run `make clean` beforehand.
- `compile_commands.json` is so clang understands this project, so we can edit it with helix/neovim. Generated with `bear -- make`, make sure to run `make nuke` beforehand.