Initial implementation of hdmistat - Linux framebuffer system stats display

Features:
- Beautiful system statistics display using IBM Plex Mono font
- Direct framebuffer rendering without X11/Wayland
- Multiple screens with automatic carousel rotation
- Real-time system monitoring (CPU, memory, disk, network, processes)
- Systemd service integration with install command
- Clean architecture using uber/fx dependency injection

Architecture:
- Cobra CLI with daemon, install, status, and info commands
- Modular design with separate packages for display, rendering, and stats
- Font embedding for zero runtime dependencies
- Layout API for clean text rendering
- Support for multiple screen types (overview, top CPU, top memory)

Technical details:
- Uses gopsutil for cross-platform system stats collection
- Direct Linux framebuffer access via memory mapping
- Anti-aliased text rendering with freetype
- Configurable screen rotation and update intervals
- Structured logging with slog
- Comprehensive test coverage and linting setup

This initial version provides a solid foundation for displaying rich
system information on resource-constrained devices like Raspberry Pis.
This commit is contained in:
2025-07-23 12:55:42 +02:00
commit 402c0797d5
39 changed files with 2160 additions and 0 deletions

9
cmd/hdmistat/main.go Normal file
View File

@@ -0,0 +1,9 @@
package main
import (
"git.eeqj.de/sneak/hdmistat/internal/hdmistat"
)
func main() {
hdmistat.CLIEntry()
}