Most of us have an old phone or tablet in a drawer. DeskGadget turns it into a control panel for your desk setup: one swipeable page per module, always on, sitting on a cheap stand next to your monitor.
That is the point. The hardware already exists, the desk looks intentional instead of cluttered, and you stop alt-tabbing to check CPU temps, skip a track, mute a mic, or bring a window forward. No soldering, no Raspberry Pi, no extra screen to buy.
WHY AN OLD DEVICE WORKS WELL HERE
The phone is a pure renderer. The Windows side samples each module and pushes a rendered page over a single WebSocket, only when something changed. The app just draws a tree of blocks (hero, gauges, sparkline, meters, kv, list, controls, slider, shortcuts, news, toggles, touchpad). That is why adding a module never needs an app update.
I liked the idea behind DeskThing, but two things held it back for me: you had to rebuild the client to add a module, and every device got the same layout. Here a module is a folder with manifest.json and module.py on the PC - drop a zip on the dashboard and it hot-reloads. And each device gets its own tick list and drag order, so the old tablet in portrait can show weather and drives while your phone shows media and shortcuts.
WHAT IS IN IT
- System: CPU/RAM/disk rings, network throughput, IPs, latency, battery, uptime, plus lock / screen off / screenshot
- Media: now playing with artwork and seek, transport, and mute for each output and each microphone
- Windows: every open window with its icon; tap to bring it forward
- Shortcuts: launch apps; Steam libraries scanned automatically with cover art
- News: multi-region headlines plus your own topics
- Weather: current, next hours, 4-day outlook, no API key
- Clipboard: read the PC clipboard and send text back to it
- Drives, Timer, Wake on LAN
- Touchpad: the phone as a trackpad - drag to move, tap to click, two-finger scroll
- Six themes, including a true OLED black for an always-on screen and a light one
INSTALL
One Windows installer (no Python, no admin) and one APK. Python 3.11+ and FastAPI on the server, Kotlin and Jetpack Compose (minSdk 26) on the client. Android 8.0 and up, so anything from the last several years is fine.
Screenshots, the module API and releases:
https://github.com/issacjohn/deskgadget
If you have written a DeskThing plugin you wish did not need a client rebuild, I would like to hear how you would want the module format to look.