Awesome
Watchmate
Companion app for InfiniTime-powered PineTime smart watch.
Visually optimized for GNOME, adaptive for phone and desktop, Linux only.
Features
- 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.
Install
Watchmate is available on Flathub:
flatpak install io.gitlab.azymohliad.WatchMate
Or via the following community-maintained distro packages:
Build
Native
Prerequisites
Add glib schema for persistent settings
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/
Build and Run
To compile and run the project, execute the following command from repo directory:
cargo run --release
Flatpak
Prerequisites
Install Dependencies
flatpak install org.gnome.Platform//45 org.gnome.Sdk//45 org.freedesktop.Sdk.Extension.rust-stable//23.08
Build
flatpak-builder --user target/flatpak flatpak/io.gitlab.azymohliad.WatchMate.yml
Run
flatpak-builder --run target/flatpak flatpak/io.gitlab.azymohliad.WatchMate.yml watchmate
Install
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.
Tech Stack and Thanks
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.