pebble/README.md
Companion app for Pebble watches, built with the Pebble C SDK. Communicates with the Tasks.org Android app over Bluetooth via AppMessage (PebbleKit Android).
Supported platforms: All Pebble hardware — aplite (original Pebble), basalt (Pebble Time), chalk (Pebble Time Round), diorite (Pebble 2), emery (Pebble Time 2). Color displays show priority color bars; B&W displays use text priority indicators.
macOS:
brew install uv
Ubuntu/Debian:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows: Use WSL with the Ubuntu instructions above.
uv tool install pebble-tool --python 3.13
pebble sdk install latest
Ubuntu/Debian also needs: sudo apt install libsdl1.2debian libfdt1
Verify with pebble --version.
pebble/
src/c/
main.c ← entry point, AppMessage router
protocol.h ← protocol constants (mirrors PebbleProtocol.kt)
protocol.c ← message sending, chunk parsing
task_list_window.c/.h ← main task list (MenuLayer)
menu_window.c/.h ← filter/list picker (MenuLayer)
task_view_window.c/.h ← task detail view (ScrollLayer)
resources/ ← images, fonts
wscript ← WAF build file
package.json ← Pebble app manifest
cd pebble
pebble build
The build produces a .pbw bundle in build/ for all target platforms.
pebble install --emulator basalt
View logs while running:
pebble logs
Useful emulator commands:
pebble emu-bt-connection --connected false # simulate BT disconnect
pebble emu-bt-connection --connected true # reconnect
pebble screenshot # take screenshot
pebble kill # stop emulator
The watch must be paired to an Android phone running Tasks.org — the phone bridges all communication between the watch and your task data.
pebble install --phone <IP_ADDRESS>
build/pebble.pbw to your phoneIf your Pebble is paired to your Mac via System Settings > Bluetooth:
pebble install --serial /dev/cu.PebbleTimeXXXX-SerialPo
Check ls /dev/cu.Pebble* to find the device name. Note: you still
need the phone paired for the app to communicate with Tasks.org.
In task detail view:
The Android side lives in the main Tasks.org app:
app/src/main/java/org/tasks/pebble/ — PebbleService (BroadcastReceiver),
PebbleMessageHandler, PebbleProtocol, PebbleRefresherapp/src/main/java/org/tasks/watch/WatchServiceLogic.kt — shared
business logic (also used by Wear OS)PebbleKit Android is added as a dependency in app/build.gradle.kts.
The PebbleService BroadcastReceiver is registered in
AndroidManifest.xml and handles communication automatically when
the Pebble app sends messages.