Real-time system stats from your Linux gaming PC displayed on a Raspberry Pi touchscreen.
Works on Bazzite, SteamOS, and other Linux distributions.
- 8 Color Themes - Dark/Cyberpunk, Light, Matrix, Retro, Nord, Dracula, Black & White, Steam
- Dual Orientation - Portrait (480×1920) or Landscape (1920×480) with instant switching
- Custom Game Art - Display your own game artwork (JPG, PNG, WEBP, GIF animations)
- Real-time Stats - CPU, GPU, RAM, VRAM, FPS, temperatures, frequencies, power usage
- Steam Integration - Game names, player counts, artwork
- Touch Controls - Settings panel with themes, orientation, network info
- Auto-start - Boots directly into stats display
| Portrait - Black & White Theme | Portrait - Light Theme | Portrait - Cyberpunk Theme |
|---|---|---|
![]() |
![]() |
![]() |
Settings Panel:
- Theme selection (8 themes)
- Display rotation (Portrait/Landscape with touch calibration)
- Gauge display mode (Usage % or Temperature)
- Network information
- Disk information
- Linux Gaming PC - Bazzite, SteamOS, Ubuntu, Fedora, Arch, etc.
- Raspberry Pi 3 or newer - Pi 4/5 recommended for best performance
- Touchscreen Display - 480×1920 or 1920×480 (landscape capable)
- Recommended: 8.8" IPS Touchscreen Display (480×1920) - The screen used in this project
- Both on the same network
- 3D Printed Bezel - Fractal Design Ridge LCD Case Mod - Custom bezel for mounting in Fractal Ridge case (shown in photos above)
unzip RPI_Stats_Display.zip
cd RPI_Stats_Display/RPI
chmod +x install.sh
sed -i 's/\r$//' install.sh
sudo ./install.shThe installer will:
- Install Firefox ESR browser
- Configure display rotation
- Create rotation scripts in
~/stats-display/ - Set up systemd service for auto-start
- Ask for orientation preference (Portrait or Landscape)
After install:
sudo rebootThe stats display will auto-start on boot.
unzip RPI_Stats_Display.zip
cd RPI_Stats_Display/LinuxPC
sed -i 's/\r$//' install.sh
chmod +x install.sh
./install.shEnter your Raspberry Pi's IP address when prompted.
The installer will:
- Set up MangoHud FPS logger
- Configure auto CSV cleanup
- Install stats sender service
- Start sending stats to the Pi
After installation, the stats display automatically appears on the Pi screen showing:
Place custom game artwork in ~/game_art/ on the Raspberry Pi.
File naming options:
By Steam AppID (most reliable):
1091500.jpg # Cyberpunk 2077
2357570.png # Elden Ring
271590.webp # Grand Theft Auto V
By game name:
Cyberpunk 2077.jpg
Elden Ring.png
Grand Theft Auto V.gif
Supported formats:
.jpg/.jpeg.png.webp.gif(animated GIFs work!)
Tips:
- Use Steam AppID for reliability
- 600×900 aspect ratio recommended (Steam library format)
- Files are cached - faster than Steam CDN
Add to your Steam game launch options:
MangoHud (Recommended):
mangohud %command%
MangoHud logs FPS to CSV files which the stats sender reads and transmits to the Pi.
Gamescope (Alternative):
gamescope --stats-path /tmp/gamescope-stats -- %command%
# Check service status
sudo systemctl status stats-display.service
# View logs
sudo journalctl -u stats-display.service -n 50
# Restart service
sudo systemctl restart stats-display.serviceThe system uses xrandr for instant rotation. If issues occur:
# Test rotation manually
cd ~/stats-display
./rotate-landscape.sh # or ./rotate-portrait.sh
# Check if X server is running
echo $DISPLAY # Should show :0
# Test touch calibration
xinput list # Find your touch device
xinput map-to-output <device-id> HDMI-1Touch calibration happens automatically during rotation. If it doesn't work:
# Find touch device ID
xinput list | grep -i touch
# Map to output (replace 7 with your device ID)
DISPLAY=:0 xinput map-to-output 7 HDMI-1# Check sender service on Linux PC
systemctl --user status stats-sender.service
# View sender logs
journalctl --user -u stats-sender.service -f
# Restart sender
systemctl --user restart stats-sender.service
# Test network connection
ping <RASPBERRY_PI_IP># Check browser autostart
ls -la ~/.config/autostart/
# Manually start Firefox kiosk
firefox-esr --kiosk --private-window http://localhost:5000 &On the Linux PC, edit the stats sender configuration:
nano ~/linux-stats/stat_sender.pyUpdate the PI_IP variable, then restart:
systemctl --user restart stats-sender.service# Stop and disable service
sudo systemctl stop stats-display.service
sudo systemctl disable stats-display.service
# Remove files
sudo rm -rf /opt/stats-display
sudo rm -rf ~/stats-display
sudo rm /etc/systemd/system/stats-display.service
sudo rm ~/.config/autostart/stats-display-browser.desktop
# Reload systemd
sudo systemctl daemon-reload~/linux-stats/uninstall.shOr manually:
# Stop and disable services
systemctl --user stop stats-sender.service fps-logger.service csv-cleanup.service
systemctl --user disable stats-sender.service fps-logger.service csv-cleanup.service
# Remove files
rm -rf ~/linux-stats
rm ~/.config/systemd/user/stats-sender.service
rm ~/.config/systemd/user/fps-logger.service
rm ~/.config/systemd/user/csv-cleanup.service
# Reload systemd
systemctl --user daemon-reload- Bazzite
- Minimum: Raspberry Pi 3 / 3+
- Recommended: Raspberry Pi 4
- Best: Raspberry Pi 5
Note: Pi Zero and Pi Zero 2W are not recommended due to performance limitations with the web interface.
- Resolution: 480×1920 (portrait) or 1920×480 (landscape capable)
- Touch input support (optional but recommended)
- HDMI or DSI connection
Tested Display:
- 8.8" IPS Capacitive Touchscreen (480×1920)
- USB powered
- HDMI input
- Capacitive touch via USB
- Works perfectly with this project
3D Printed Case Mod:
- Fractal Design Ridge LCD Bezel
- Custom bezel for mounting 8.8" display in Fractal Ridge case
- STL files available for free download
- Shown in the photos above
If you find this project useful, consider buying me a coffee! ☕
This project is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
This means:
- ✅ Free for personal use
- ✅ Free for educational use
- ✅ You can modify and share (with credit)
- ❌ Cannot be sold or used commercially
- ❌ Modified versions must use the same license
For commercial use, please contact: https://ko-fi.com/pyrocac



