Subir archivos a "/"

This commit is contained in:
2026-08-15 15:19:42 +02:00
parent de34ecb763
commit 73aa3a3aef
+122
View File
@@ -0,0 +1,122 @@
# PRRPC — Pico Real Rich Presence
> Physical status monitor for Linux environments. Displays contextual active application information on a secondary LCD screen powered by RP2040.
**Live:** [prrpc.jrodriiguezg.link](https://prrpc.jrodriiguezg.link)
**GitHub:** [jrodriiguezg/PRRPC](https://github.com/jrodriiguezg/PRRPC)
---
## Overview
PRRPC is an open-source hardware/software project that bridges your Linux desktop with a physical secondary display. A Python service running on the host PC detects the currently active application via GNOME's accessibility API and sends that information over USB serial to an RP2040 microcontroller, which renders a graphical icon on a 1.69" IPS LCD screen.
It operates in two distinct modes:
| Version | Mode | Description |
|---|---|---|
| V1 | Auto Monitoring | Automatic active-app detection and display |
| V2 | MacroDeck | Interactive mode with browser-based emoji control |
## Architecture
```
Host PC (Linux / GNOME / Wayland)
│ pyatspi focus events
Python Service (monitor_pc.py)
│ Serial (USB-C)
RP2040-Zero (MicroPython)
│ SPI
1.69" IPS LCD (ST7789, 240×280)
```
**Key property:** The serial communication model means **zero CPU polling** on the host — events are pushed only when the active window changes.
## Features
### V1 — Auto Monitoring
- GNOME window focus detection via `pyatspi`
- Event-driven serial communication (no polling, near-zero CPU impact)
- Real-time application switching reflected on the LCD
- Session time tracking per application
### V2 — MacroDeck
- Flask web server on `localhost:5000`
- Browser-accessible emoji selector UI
- Manual display override from any device on the LAN
- Multi-threaded architecture
- Optimized 100×100px RGB565 image assets
## Hardware Specifications
| Component | Specification |
|---|---|
| Microcontroller | RP2040-Zero (or compatible Raspberry Pi Pico) |
| Firmware | MicroPython |
| Display | 1.69" IPS LCD, ST7789 controller, 240×280px |
| Interface | SPI (display) + USB-C (data + power) |
| Host OS | Linux with GNOME desktop (Wayland/X11) |
| Host Language | Python + pyatspi |
## Software Requirements
- **Host:** Python 3, `pyatspi`, `pyserial`
- **V2 additionally:** `flask`
- **Microcontroller:** MicroPython with `st7789` display driver
## App Mapping (V1)
```python
# 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"
}
```
## Web Control API (V2)
```python
# 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"}
```
## Gallery
The device has been tested and demonstrated with the following applications on Fedora Linux:
- **VS Code** — Development environment detection
- **Firefox** — Web browsing session tracking
- **Terminal** — System shell activity
- **YouTube Music** — Media playback tracking
## Tested On
- **OS:** Fedora Linux (GNOME, Wayland)
- **Hardware:** RP2040-Zero + 1.69" ST7789 LCD
## Support
☕ [Support on Ko-fi](https://ko-fi.com/jrodriiguezg)
## Author
**Juan Raul Rodriguez Gil** — Built with passion for Linux & Hardware
[jrodriiguezg.link](https://jrodriiguezg.link) | [GitHub](https://github.com/jrodriiguezg) | [Instagram](https://www.instagram.com/jrodriiguezg.link/?hl=es)
---
© 2026 Juan Raul Rodriguez Gil