{"id":23062320,"url":"https://github.com/elara6331/itd","last_synced_at":"2025-08-15T08:33:36.086Z","repository":{"id":104130434,"uuid":"502791910","full_name":"Elara6331/itd","owner":"Elara6331","description":"Linux companion daemon for the InfiniTime smartwatch firmware","archived":false,"fork":false,"pushed_at":"2024-06-04T22:17:30.000Z","size":3343,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T19:18:57.990Z","etag":null,"topics":["golang","linux","pine64","pinetime","pinetime-companion","unix-socket"],"latest_commit_sha":null,"homepage":"https://gitea.elara.ws/Elara6331/itd","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Elara6331.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"liberapay":"Elara6331"}},"created_at":"2022-06-13T03:22:13.000Z","updated_at":"2024-06-04T22:17:33.000Z","dependencies_parsed_at":"2024-06-04T23:36:46.482Z","dependency_job_id":"d4cbf3d9-5a9f-4892-9132-24311d86f5a6","html_url":"https://github.com/Elara6331/itd","commit_stats":null,"previous_names":["arsen6331/itd"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elara6331%2Fitd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elara6331%2Fitd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elara6331%2Fitd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elara6331%2Fitd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Elara6331","download_url":"https://codeload.github.com/Elara6331/itd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229903693,"owners_count":18142115,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","linux","pine64","pinetime","pinetime-companion","unix-socket"],"created_at":"2024-12-16T03:26:39.532Z","updated_at":"2024-12-16T03:26:40.137Z","avatar_url":"https://github.com/Elara6331.png","language":"Go","funding_links":["https://liberapay.com/Elara6331"],"categories":[],"sub_categories":[],"readme":"# ITD\n## InfiniTime Daemon\n\n`itd` is a daemon that uses my infinitime [library](https://go.elara.ws/infinitime) to interact with the [PineTime](https://www.pine64.org/pinetime/) running [InfiniTime](https://infinitime.io).\n\n[![status-badge](https://ci.elara.ws/api/badges/Elara6331/itd/status.svg)](https://ci.elara.ws/Elara6331/itd)\n[![itd-git AUR package](https://img.shields.io/aur/version/itd-git?label=itd-git\u0026logo=archlinux)](https://aur.archlinux.org/packages/itd-git/)\n[![itd-bin AUR package](https://img.shields.io/aur/version/itd-bin?label=itd-bin\u0026logo=archlinux)](https://aur.archlinux.org/packages/itd-bin/)\n[![LURE badge for itd-git](https://lure.sh/pkg/default/itd-git/badge.svg)](https://lure.sh/pkg/default/itd-git)\n[![LURE badge for itd-bin](https://lure.sh/pkg/default/itd-bin/badge.svg)](https://lure.sh/pkg/default/itd-bin)\n\nThis repository is part of the Software Heritage Archive:\n\n[![SWH](https://archive.softwareheritage.org/badge/swh:1:dir:1374aa47b5c0a0d636d6f9c69f77af5e5bae99b2/)](https://archive.softwareheritage.org/swh:1:dir:1374aa47b5c0a0d636d6f9c69f77af5e5bae99b2;origin=https://gitea.elara.ws/Elara6331/itd;visit=swh:1:snp:d2935acbc966dfe1b15c771927bb08b5fc2ec89f;anchor=swh:1:rev:395cded9758dccc020fcd5b666f83a62308c9ab7)\n\n---\n\n### Features\n\n- Notification relay\n- Notification transliteration\n- Call Notifications (ModemManager)\n- Music control\n- Get info from watch (HRM, Battery level, Firmware version, Motion)\n- Set current time\n- Control socket\n- Firmware upgrades\n- Weather\n- BLE Filesystem\n- Navigation (PureMaps)\n- FUSE Filesystem\n\n---\n\n### Installation\n\nSince ITD 0.0.7, packages are built and uploaded whenever a new release is created.\n\n#### Arch Linux\n\nUse the `itd-bin` or `itd-git` AUR packages.\n\n#### Debian/Ubuntu\n\n- Go to the [latest release](https://gitea.elara.ws/Elara6331/itd/releases/latest) and download the `.deb` package for your CPU architecture. You can find your architecture by running `uname -m` in the terminal.\n- Run `sudo apt install \u003cpackage\u003e`, replacing `\u003cpackage\u003e` with the path to the downloaded file. Note: relative paths must begin with `./`.\n- Example: `sudo apt install ~/Downloads/itd-0.0.7-linux-aarch64.deb`\n\n#### Fedora\n\n- Go to the [latest release](https://gitea.elara.ws/Elara6331/itd/releases/latest) and download the `.rpm` package for your CPU architecture. You can find your architecture by running `uname -m` in the terminal.\n- Run `sudo dnf install \u003cpackage\u003e`, replacing `\u003cpackage\u003e` with the path to the downloaded file.\n- Example: `sudo dnf install ~/Downloads/itd-0.0.7-linux-aarch64.rpm`\n\n#### Alpine (and postmarketOS)\n\n- Go to the [latest release](https://gitea.elara.ws/Elara6331/itd/releases/latest) and download the `.apk` package for your CPU architecture. You can find your architecture by running `uname -m` in the terminal.\n- Run `sudo apk add --allow-untrusted \u003cpackage\u003e`, replacing `\u003cpackage\u003e` with the path to the downloaded file.\n- Example: `sudo apk add --allow-untrusted ~/Downloads/itd-0.0.7-linux-aarch64.apk`\n\nNote: `--allow-untrusted` is required because ITD isn't part of a repository, and therefore is not signed.\n\n---\n\n### `itctl`\n\nThis daemon comes with a binary called `itctl` which uses the socket to control the daemon from the command line. As such, it can be scripted using bash.\n\nThis is the `itctl` usage screen:\n```\nNAME:\n   itctl - A new cli application\n\nUSAGE:\n   itctl [global options] command [command options] [arguments...]\n\nCOMMANDS:\n   help            Display help screen for a command\n   resources, res  Handle InfiniTime resource loading\n   filesystem, fs  Perform filesystem operations on the PineTime\n   firmware, fw    Manage InfiniTime firmware\n   get             Get information from InfiniTime\n   notify          Send notification to InfiniTime\n   set             Set information on InfiniTime\n   update, upd     Update information on InfiniTime\n   watch           Watch a value for changes\n\nGLOBAL OPTIONS:\n   --socket-path value, -s value  Path to itd socket (default: \"/tmp/itd/socket\")\n```\n\n---\n\n### `itgui`\n\nIn `cmd/itgui`, there is a gui frontend to the socket of `itd`. It uses the [Fyne library](https://fyne.io/) for Go.\n\n#### Easy Installation\n\nThe easiest way to install `itgui` is to use my other project, [LURE](https://gitea.elara.ws/Elara6331/lure). LURE will only work if your package manager is `apt`, `dnf`, `yum`, `zypper`, `pacman`, or `apk`.\n\nInstructions:\n\n1. Install LURE. This can be done with the following command: `curl https://www.elara.ws/lure.sh | bash`.\n2. Check to make sure LURE is properly installed by running `lure ref`.\n3. Run `lure in itgui`. This process may take a while as it will compile `itgui` from source and package it for your distro.\n4. Once the process is complete, you should be able to open and use `itgui` like any other app.\n\n#### Compilation\n\nBefore compiling, certain prerequisites must be installed. These are listed on the following page: https://developer.fyne.io/started/#prerequisites\n\nIt can be compiled by running:\n\n```shell\ngo build ./cmd/itgui\n```\n\n#### Cross-compilation\n\nDue to the use of OpenGL, cross-compilation of `itgui` isn't as simple as that of `itd` and `itctl`. The following guide from the Fyne website should work for `itgui`: https://developer.fyne.io/started/cross-compiling.\n\n#### Screenshots\n\n![Info tab](cmd/itgui/screenshots/info.png)\n\n![Motion tab](cmd/itgui/screenshots/motion.png)\n\n![Notify tab](cmd/itgui/screenshots/notify.png)\n\n![FS tab](cmd/itgui/screenshots/fs.png)\n\n![FS mkdir](cmd/itgui/screenshots/mkdir.png)\n\n![FS resource upload](cmd/itgui/screenshots/resources.png)\n\n![Time tab](cmd/itgui/screenshots/time.png)\n\n![Firmware tab](cmd/itgui/screenshots/firmware.png)\n\n![Upgrade in progress](cmd/itgui/screenshots/progress.png)\n\n![Metrics tab](cmd/itgui/screenshots/metrics.png)\n\n---\n\n### Socket\n\nThis daemon creates a UNIX socket at `/tmp/itd/socket`. It allows you to directly control the daemon and, by extension, the connected watch.\n\nThe socket uses the [DRPC](https://github.com/storj/drpc) library for requests. The code generated by this framework is located in [`internal/rpc`](internal/rpc)\n\nThe API description is located in the [`internal/rpc/itd.proto`](internal/rpc/itd.proto) file.\n\n---\n\n### Starting\n\nTo start the daemon, run the following **without root**:\n\n```shell\nsystemctl --user start itd\n```\n\nTo autostart on login, run:\n```shell\nsystemctl --user enable itd\n```\n\n---\n\n### Cross compiling\n\nTo cross compile, simply set the go environment variables. For example, for PinePhone, use:\n\n```shell\nmake GOOS=linux GOARCH=arm64\n```\n\nThis will compile `itd` and `itctl` for Linux aarch64 which is what runs on the PinePhone. This daemon only runs on Linux due to the library's dependencies (`dbus`, and `bluez` specifically).\n\n---\n\n### Configuration\n\nThis daemon places a config file at `/etc/itd.toml`. This is the global config. `itd` will also look for a config at `~/.config/itd.toml`.\n\nMost of the time, the daemon does not need to be restarted for config changes to take effect.\n\n---\n\n### Attribution\n\nLocation data from OpenStreetMap Nominatim, \u0026copy; [OpenStreetMap](https://www.openstreetmap.org/copyright) contributors\n\nWeather data from the [Norwegian Meteorological Institute](https://www.met.no/en)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felara6331%2Fitd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felara6331%2Fitd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felara6331%2Fitd/lists"}