GitHub - Shabablinchikow/Busy-Control-Centre · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Shabablinchikow
Busy-Control-Centre
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>17 Commits<br>17 Commits
.github/workflows
.github/workflows
Resources/Themes
Resources/Themes
Scripts
Scripts
Sources
Sources
docs
docs
.gitignore
.gitignore
CLAUDE.md
CLAUDE.md
LICENSE
LICENSE
README.md
README.md
project.yml
project.yml
View all files
Repository files navigation
Busy Control Centre
A native macOS app for the BUSY Bar — a launcher for small<br>widgets that draw on the bar's 72×16 LED panel, plus focus sessions and a live<br>mirror of the display.
Everything talks to the device's local HTTP API. No cloud, no accounts, no<br>third-party dependencies — SwiftUI and the system frameworks only.
Widgets
Clock<br>Big time, refreshed every second
Nyan Cat<br>Pop-tart cat, rainbow trail, twinkling stars
ISS Alert<br>Quiet until the space station passes near you
Music<br>Spectrum bars following the Music app, with track title
Flightradar<br>Tracks one flight by number: route, altitude, speed
Claude Limits<br>Live Claude Code usage bars with the Clawd mascot
pISS Stream<br>ISS urine-tank level from NASA telemetry, à la pISSStream
Stocks<br>Watchlist prices and the day's change; the arrow greys out when that exchange is shut
Weather<br>Condition icon, temperature, UV index and chance of rain
YouTube<br>Subscriber count for a channel, using your own API key
Mail<br>Unread count from Apple Mail's inbox, or a small celebration
Status<br>Pin a banner on the bar until you switch it off
Timer<br>Countdown run by the bar, with your choice of banner
Pomodoro<br>Work/rest cycles run by the bar
On Call<br>Mic in use → the bar shows an ON CALL banner
Widgets draw via /api/display/draw. Status, Timer, Pomodoro and On Call instead<br>drive the device's built-in focus session (/api/busy/snapshot), which renders<br>the bar's own themed animations at session priority.
Choosing and rotating them. Two windows, ⌘⇧1 and ⌘⇧2. Widgets picks which<br>ones the main list shows, so it stays short. Carousel picks a set to rotate<br>through and how many seconds each gets; the two selections are independent, and<br>switching a widget on by hand stops the rotation so the bar stays where you put<br>it.
Priority. Sessions outrank widgets, and the mic outranks everything: when<br>On Call takes the screen it captures any running timer and restores that exact<br>snapshot afterwards, so the countdown resumes rather than restarting.
Display mirror
The main window can mirror what the bar is showing, drawn as an LED matrix —<br>one dot per device pixel, with bloom on lit dots.
/api/screen is worth a note for anyone else building against it: it advertises<br>Content-Type: image/bmp, but the body is base64-encoded BGR888 with no<br>header . Payload length identifies the panel — 3456 bytes for the front<br>(72×16), 38400 for the back (160×80).
Building
Requires macOS 14+, Xcode 15+, and xcodegen.
brew install xcodegen<br>xcodegen generate<br>open BusyBar.xcodeproj
The Xcode project is generated from project.yml and is not committed. Set<br>DEVELOPMENT_TEAM in project.yml to your own team ID before signing.
Releases are built by CI on tag push (v*); see .github/workflows/release.yml.<br>Signing and notarisation are optional and enabled by setting the repository<br>secrets documented in that workflow — without them CI still produces an<br>unsigned build for testing.
Banner artwork
The banner picker previews each theme with a real frame from the bar's own<br>animation, taken from the firmware repository. Those images are CC-BY-SA-4.0 and<br>are committed under Resources/Themes/ — refresh them with<br>./Scripts/fetch-themes.sh. Any theme without artwork falls back to a text<br>label. See Attributions.
Connecting
Over USB the bar is always at 10.0.4.20 and needs no key. Over Wi-Fi, enter<br>its IP and the HTTP access key from Settings → HTTP Access on the device; the<br>app sends it as X-API-Token.
macOS will ask for Local Network permission on first launch. If the prompt never<br>appears and the app cannot reach the bar, see docs/troubleshooting.md.
Attributions
What<br>Source<br>License
Banner artwork in Resources/Themes/<br>busy-app/busybar-firmware assets/shared/animations, © 2024–2026 Flipper FZCO. One frame extracted per animation, images otherwise unmodified.<br>CC-BY-SA-4.0
pISS Stream widget<br>Idea from pISSStream; telemetry from NASA's public ISS Lightstreamer feed
Weather data<br>Open-Meteo<br>CC-BY-4.0
Widget data<br>wheretheiss.at, adsb.fi,...