Pico Real Rich Presence
Physical status monitor for Linux environments. Displays contextual active application information on a secondary LCD screen powered by RP2040.
Two Modes of Operation
PRRPC adapts to your workflow with automatic monitoring or manual macro control.
V1 — Auto Monitoring
Automatically detects the active application on your Linux desktop and displays contextual status on the LCD screen. Zero manual input required.
- GNOME focus event detection via pyatspi
- Serial port communication (zero CPU polling)
- Real-time application switching
- Session time tracking
V2 — MacroDeck
Transforms into an interactive MacroDeck with local web control. Send emoji reactions and manually override the display status from any browser.
- Flask web server on localhost:5000
- Multi-thread architecture
- Emoji selector UI
- 100x100px optimized assets
Client-Server Architecture
The system operates via a robust Client-Server architecture over serial port, combining software detection with hardware rendering for reliable performance.
Device in Action
The PRRPC device integrates seamlessly into your desktop workflow, reacting instantly to open applications.
Development Environment
Visual Studio Code active. Device displays the corresponding icon and session timer.
Web Browsing
Focus switches to Firefox — device instantly updates to reflect web activity status.
System Terminal
Fedora terminal detected — native system status displayed on the LCD screen.
Media Playback
Reacting to YouTube Music — tracking current listening session on the display.
Web Control UI (V1)
Initial web-based remote control panel for selecting active emojis in MacroDeck mode.
Web Control UI (V2)
Evolved layout with 100x100px assets and improved manual reaction system.
Specifications
Minimal hardware requirements for a complete physical status monitor setup.
RP2040-Zero
Microcontroller or compatible Raspberry Pi Pico running MicroPython firmware.
1.69" IPS LCD
ST7789 controller, 240x280 resolution, SPI interface with vibrant color output.
USB-C Connection
Single cable for both data interface and power supply. Plug and play setup.
Linux (GNOME/Wayland)
Tested on Fedora with GNOME desktop environment. Python with pyatspi required.
# Example: Adding a new app in monitor_pc.py
APPS_MAPPING = {
"Code": "VSCODE",
"Firefox": "FIREFOX",
# Map window focus keyword to an internal ID
"Obsidian": "NOTAS"
}
# V2: Web control API snippet
@app.route('/set_emoji/<emoji_id>')
def set_emoji(emoji_id):
# Sends manual Emoji command via serial
send_to_serial(emoji_id.upper())
return {"status": "success"}
# V2: RP2040 optimized image loading
if comando in EMOJI_MAP:
arch = EMOJI_MAP[comando]
mostrar_imagen(arch)
Build Your Own PRRPC
Open source, fully documented. Get started with minimal hardware and bring physical status monitoring to your Linux desktop.