Skip to main content

dotmatrix-unlocked

ci

Turn a cheap iDotMatrix-compatible 32×32 Bluetooth LED panel into a desk companion, run from your computer with a local web UI.

The web UI: a live preview of the panel next to skins and dashboard modules

Features

Display: pick it, preview it, Apply. Nothing reaches the panel until you press Apply.

  • Dashboard with 16 modules: clock (big, analog or binary), weather, 8-hour forecast, sunrise/sunset, moon phase, week, month, day progress, now playing, and live Claude Code activity.
  • 12 ready-made screens (Classic, Big clock, Weather station, Night owl, Calendar, Claude ops…). Reorder modules, pick fonts and colours, then save your own layouts.
  • Skins: album art, a spinning vinyl, GIFs, a Winamp-style visualizer (7 styles), and a mischievous pixel cat.
  • GIF library: 16 built-in animations, GIPHY search, or upload your own. GIFs are re-tuned for LEDs, with sharper shrinking, a contrast stretch and no dither noise.

Live: takes over the panel right away. Stop it and your skin comes back.

  • Games: Snake, Tetris, Breakout, 2048 and Flappy, played with the keyboard or on-screen buttons.
  • Video: YouTube links or uploaded clips (experimental).
  • Countdown timer that shows over any skin, plus quick text or image messages.

It reacts to you

  • The cat naps when you're idle, waves when Claude Code needs your input, and dances to your music. Ask it to do a flip, feed it, or have it catch a fish.
  • The microphone (off by default, runs in your browser) drives the visualizer, and a clap startles the cat.
  • Claude Code hooks show when sessions are working or waiting on you, and can pull the dashboard up when Claude needs input.

Settings

  • Brightness, gamma (to calibrate your LEDs), weather city.
  • Run in the background: start at login and restart after a crash, with a switch to turn it off.
Live Settings
Live view with Snake running Settings with the Run in the background switch

Not affiliated with iDotMatrix. Tested on a 32×32 IDM-* panel; other sizes aren't supported yet.

Install

Needs Python 3.12+ and Bluetooth.

uv tool install dotmatrix-unlocked     # or: pipx install dotmatrix-unlocked
dotmatrix                              # opens http://127.0.0.1:7766; offers to keep running in the background

Don't have uv? See docs.astral.sh/uv, or use pipx.

In the web UI, click Find my panel. Turn the panel on first and close its phone app: the panel accepts only one Bluetooth connection.

No panel? dotmatrix run --fake runs everything with the browser preview standing in for the display.

Then, optionally:

dotmatrix service install   # run in the background: start at login, restart if it crashes (also in Settings)
dotmatrix hooks install     # show Claude Code activity (edits ~/.claude/settings.json, keeps a .bak)
dotmatrix doctor            # checks everything and prints the fix for anything missing

To stop the background copy: turn off Run in the background in Settings, or dotmatrix service uninstall.

Platforms

macOS Linux (incl. Raspberry Pi) Windows
Panel over Bluetooth ✓ ✓ (BlueZ) ✓
Start at login launchd systemd user service Task Scheduler
Now playing media-control playerctl (any MPRIS player) built in (no album art yet)
Idle detection (the cat naps) ✓ X11 with xprintidle ✓
Video ffmpeg + yt-dlp same same

Windows support is new and less tested. Reports are welcome.

macOS: the first connection asks for Bluetooth permission for Python. If it was denied, enable it in System Settings › Privacy & Security › Bluetooth. Raspberry Pi / headless Linux: after dotmatrix service install, run loginctl enable-linger $USER so the service starts without anyone logging in.

Privacy

  • The web UI and API listen on 127.0.0.1 only. Requests must come from that host and be JSON, so other websites can't drive your panel.
  • The microphone (visualizer, clap-to-startle the cat) is off by default. It runs inside your browser, and only 16 loudness levels are sent to the local service; no audio leaves the browser.
  • Network calls: Open-Meteo for weather (only once you set a city), GIPHY if you add a key, and video links you paste.

Command line

dotmatrix                     start + open the web UI
dotmatrix run [--fake]        foreground
dotmatrix scene "HELLO" --ttl 10 --color 255,200,0
dotmatrix status
dotmatrix scan | hello | test | image PATH | brightness PCT   # direct to the panel, service stopped

The local HTTP API (POST /scene, /event, /game, /timer, /cat…) is what the web UI uses. Anything on your machine can push to the panel with a curl.

Development

git clone https://github.com/anishsrinivasan/dotmatrix-unlocked && cd dotmatrix-unlocked
uv sync --group dev
uv run pytest            # runs every module's self-check + the app end to end in --fake mode
uv run dotmatrix run --fake
  • Add a game: subclass Game in game.py and add it to GAMES.
  • Add a dashboard module: write a draw function and add it to MODULES in render.py.
  • Add a visualizer style (skins.py) or a cat trick (cat.py): same idea.

The web UI picks all of these up automatically.

License

GPL-3.0-or-later. It builds on python3-idotmatrix-library, which is also GPL-3.0.

Metadata

Release files for dotmatrix-unlocked 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dotmatrix-unlocked 0.1.3
File Size Uploaded Provenance
dotmatrix_unlocked-0.1.3.tar.gz 125.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for dotmatrix-unlocked 0.1.3
File Interpreter ABI Platform
dotmatrix_unlocked-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 214.3 kB

Release files / dotmatrix_unlocked-0.1.3.tar.gz

Download URL dotmatrix_unlocked-0.1.3.tar.gz
Size 125.1 kB
Tags Source
SHA-256 checksum
How to use checksums
43a3c99de79326156861b451fcfc0d31670e0aa72c884a2565785a13be084f5e
BLAKE2b-256 checksum
How to use checksums
0fa8e11c3da1458cb946734bd452cc0a672d0ab8eb5b3e42b0925e6899ecd187
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dotmatrix_unlocked-0.1.3-py3-none-any.whl

Download URL dotmatrix_unlocked-0.1.3-py3-none-any.whl
Size 89.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b02841c590f98b1104c183a5065f616c78cfa73834f16483b660f9a07e81ec6
BLAKE2b-256 checksum
How to use checksums
2c936bbfe1d546e2f25dc94422d4e4250a35830d3176a3716ada930fc7b17a03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for dotmatrix-unlocked 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page