How it Works
The system operates via a Client-Server architecture over a serial port, combining software detection with hardware rendering.
- Host (PC - Linux): A Python service monitors GNOME desktop focus events using pyatspi.
- Client (Device - RP2040): A microcontroller receives the processed data and renders the graphical interface using raw RGB565 icons.
- Communication: Native serial port integration, avoiding polling for zero CPU consumption.
APPS_MAPPING = {
"Code": "VSCODE",
"Firefox": "FIREFOX",
"Obsidian": "NOTAS"
}
Hardware Requirements
RP2040-Zero
Microcontroller or compatible Raspberry Pi Pico running MicroPython.
1.69" IPS LCD
Module with ST7789 Controller and 240x280 Resolution via SPI.
USB-C
Direct Connection for both Data Interface and Power supply.
In Action
The PRRPC device integrates perfectly into the desktop workflow, reacting instantly to open applications on the main monitor.
Development Environment
Visual Studio Code open on the monitor. The PRRPC shows the corresponding icon and session time.
Web Browsing
Switching focus to the browser instantly updates the device status to reflect web activity.
System Terminal
Detailed view of the device showing the native Fedora terminal status.
Media Playback
Reacts to multimedia applications like Youtube Music, tracking the current session.
V2 Key Features
PRRPC V2 evolves the physical status monitor, turning it into an interactive MacroDeck with local web control.
- Hybrid Mode: Works seamlessly as an automatic application monitor or as a manual Emoji reaction panel.
- Local Web Interface: Instantly control the screen from any browser on your local network using localhost:5000.
- Graphical Optimization: Assets resized to 100x100px and a new dictionary mapping system for significantly smoother UI transitions.
@app.route('/set_emoji/<emoji_id>')
def set_emoji(emoji_id):
send_to_serial(emoji_id.upper())
return {"status": "success"}
How it Works
- Multi-thread Architecture (PC): The Python host now concurrently runs a Flask Web Server and the pyatspi window monitor, managing user inputs and background events simultaneously.
- Client Engine (RP2040): Uses a highly optimized internal dictionary (EMOJI_MAP) to instantly load raw RGB565 files from flash memory without delay.
if comando in EMOJI_MAP:
arch = EMOJI_MAP[comando]
mostrar_imagen(arch)
Hardware Requirements
RP2040-Zero
Microcontroller or compatible Raspberry Pi Pico running MicroPython.
1.69" IPS LCD
Module with ST7789 Controller and 240x280 Resolution via SPI.
USB-C
Direct Connection for both Data Interface and Power supply.
Web Control Interface
The local web interface allows you to manually override the status and send custom emojis directly to the screen.
Emoji Selector UI (V1)
Initial design of the web-based remote control panel for selecting active emojis.
Emoji Selector UI (V2)
Evolved layout supporting the new 100x100px assets and improved manual reaction system.