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.
93 lines
2.2 KiB
Markdown
93 lines
2.2 KiB
Markdown
# hdmistat
|
|
|
|
A beautiful system statistics display daemon for Linux framebuffers. Perfect for Raspberry Pis and other headless systems.
|
|
|
|
## Features
|
|
|
|
- 🖥️ Direct framebuffer rendering (no X11/Wayland required)
|
|
- 📊 Real-time system statistics (CPU, memory, disk, network)
|
|
- 🎨 Beautiful typography using IBM Plex Mono
|
|
- 🔄 Configurable screen carousel
|
|
- 🚀 Lightweight and efficient
|
|
- 🔧 Easy systemd integration
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go install git.eeqj.de/sneak/hdmistat/cmd/hdmistat@latest
|
|
sudo hdmistat install
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Run as daemon
|
|
```bash
|
|
sudo hdmistat daemon
|
|
```
|
|
|
|
### Install systemd service
|
|
```bash
|
|
sudo hdmistat install
|
|
```
|
|
|
|
### Check status
|
|
```bash
|
|
hdmistat status
|
|
```
|
|
|
|
### Display system info
|
|
```bash
|
|
hdmistat info
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Create `/etc/hdmistat/config.yaml`:
|
|
|
|
```yaml
|
|
framebuffer: /dev/fb0
|
|
rotation_interval: 10s
|
|
screens:
|
|
- overview
|
|
- top_cpu
|
|
- top_memory
|
|
- network_detail
|
|
```
|
|
|
|
## Building from Source
|
|
|
|
```bash
|
|
git clone https://git.eeqj.de/sneak/hdmistat
|
|
cd hdmistat
|
|
make build
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- Linux with framebuffer support
|
|
- Go 1.21+
|
|
- Root access for framebuffer device
|
|
|
|
## License
|
|
|
|
MIT License
|
|
|
|
Copyright (c) 2024
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE. |