Companion app for InfiniTime-powered PineTime smart watch.
Visually optimized for GNOME, adaptive for phone and desktop, Linux only.
- Current time service.
- Data reading: battery level, heart rate, steps count, firmware version.
- OTA firmware and external resources updates. Both, from manually specified DFU/resources files, or automatically downloaded from InfiniTime releases for selected version.
- Media-player control.
- Notifications forwarding.
Watchmate is available on Flathub:
flatpak install io.gitlab.azymohliad.WatchMate
Or via the following community-maintained distro packages:
Settings schema can be installed locally as follows:
mkdir -p $HOME/.local/share/glib-2.0/schemas/
cp assets/io.gitlab.azymohliad.WatchMate.gschema.xml $HOME/.local/share/glib-2.0/schemas/
glib-compile-schemas $HOME/.local/share/glib-2.0/schemas/
To compile and run the project, execute the following command from repo directory:
cargo run --release
flatpak install org.gnome.Platform//45 org.gnome.Sdk//45 org.freedesktop.Sdk.Extension.rust-stable//23.08
flatpak-builder --user target/flatpak flatpak/io.gitlab.azymohliad.WatchMate.yml
flatpak-builder --run target/flatpak flatpak/io.gitlab.azymohliad.WatchMate.yml watchmate
flatpak-builder --install target/flatpak flatpak/io.gitlab.azymohliad.WatchMate.yml
Here and above, target/flatpak
is the build directory. It's a convenient default for Rust project (target
is already in .gitignore
), but can be anything else.
Watchmate stands on the shoulders of the following giants:
- Rust programming language.
- Relm4, GTK4 (rs) and Libadwaita (rs) for GUI.
- BlueR (an official BlueZ Bindings for Rust) for the bluetooth stack.
- Awesome parts of Rust ecosystem, like tokio, serde, reqwest, zbus, anyhow and others (see Cargo.toml for the full list).
I'm deeply grateful to all people behind these technologies. Watchmate wouldn't be possible without them: first, it would be technically unliftable; second, even with the alternatives, I probably wouldn't enjoy it so much, and joy is vitally important for hobby projects like this one.