{"id":50568157,"url":"https://github.com/todbot/tauri-blink1-toy","last_synced_at":"2026-06-04T16:30:39.587Z","repository":{"id":349502369,"uuid":"1202571974","full_name":"todbot/tauri-blink1-toy","owner":"todbot","description":"electron-blink1-toy ported to tauri","archived":false,"fork":false,"pushed_at":"2026-04-29T19:44:03.000Z","size":551,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T21:32:06.650Z","etag":null,"topics":["blink1","electron","led","rgb","rust","tauri","usb","usbrgbled"],"latest_commit_sha":null,"homepage":"https://github.com/todbot/tauri-blink1-toy","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/todbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-06T06:54:20.000Z","updated_at":"2026-04-29T19:44:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/todbot/tauri-blink1-toy","commit_stats":null,"previous_names":["todbot/tauri-blink1-toy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/todbot/tauri-blink1-toy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Ftauri-blink1-toy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Ftauri-blink1-toy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Ftauri-blink1-toy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Ftauri-blink1-toy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/todbot","download_url":"https://codeload.github.com/todbot/tauri-blink1-toy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Ftauri-blink1-toy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33914543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["blink1","electron","led","rgb","rust","tauri","usb","usbrgbled"],"created_at":"2026-06-04T16:30:38.062Z","updated_at":"2026-06-04T16:30:39.582Z","avatar_url":"https://github.com/todbot.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tauri-blink1-toy\n\nA simple [Tauri v2](https://tauri.app) app for controlling a [blink(1)](https://blink1.thingm.com) USB LED device.\n\nClick a color swatch to fade the blink(1) to that color. Use the Rescan button to detect a device that was plugged in after launch.\n\nThis is a port of [electron-blink1-toy](https://github.com/todbot/electron-blink1-toy/) — same UI and behavior, rewritten with a Rust/Tauri backend instead of Electron/Node. USB HID access uses the [`hidapi`](https://crates.io/crates/hidapi) crate directly, with no native Node modules required.\n\n\u003cimg src=\"./docs/tauri-blink1-toy-screenshot.png\" width=700 /\u003e\n\n## Requirements\n\n- [Rust](https://rustup.rs) (stable)\n- [Tauri CLI](https://tauri.app/start/): `cargo install tauri-cli`\n- A [blink(1)](https://blink1.thingm.com) USB device (mk1, mk2, or mk3)\n- macOS, Windows, or Linux\n\n\n## Usage\n\n```\nmake dev\n```\n\nThe app scans for a blink(1) on launch. If none is found, plug one in and click **Rescan**.\n\n## Build\n\n```\nmake build              # release binary for current platform\nmake dist-mac-unsigned  # unsigned universal macOS .app (arm64 + x86_64)\nmake dist-mac           # signed + notarized universal macOS DMG (requires env vars below)\nmake dist-win-unsigned  # unsigned Windows NSIS installer (local testing)\nmake dist-win           # signed Windows NSIS installer (requires env vars below)\nmake dist-linux         # Linux .deb package + .zip of the binary\n```\n\n### MacOS code signing \u0026 notarization\n\n```bash\nexport APPLE_SIGNING_IDENTITY=\"Developer ID Application: Your Name (TEAMID)\"\nexport APPLE_ID=\"your@email.com\"\nexport APPLE_PASSWORD=\"xxxx-xxxx-xxxx-xxxx\"\nexport APPLE_TEAM_ID=\"XXXXXXXXXX\"\nmake dist-mac\n```\n\n- `APPLE_SIGNING_IDENTITY` — signs the binary; find the exact string with `security find-identity -v -p codesigning`\n- `APPLE_PASSWORD` — notarizes with Apple's servers; must be an [App-Specific Password](https://support.apple.com/en-us/102431), not your Apple ID password (note: Electron calls this `APPLE_APP_SPECIFIC_PASSWORD`)\n- `APPLE_ID` and `APPLE_TEAM_ID` — your Apple developer account credentials for notarization\n\n### Windows code signing\n\nInstall the signing tool:\n\n```powershell\ncargo install trusted-signing-cli\n```\n\nSet the required environment variables:\n\n```powershell\n$env:AZURE_TENANT_ID = \"your-tenant-id\"\n$env:AZURE_CLIENT_ID = \"your-client-id\"\n$env:AZURE_CLIENT_SECRET = \"your-client-secret\"\n```\n\nEdit the `signCommand` in `src-tauri/tauri.conf.json` to set your Azure Trusted Signing endpoint URL, account name, and certificate profile name. Then run:\n\n```powershell\nmake dist-win\n```\n\nThe signing command is defined in `tauri.conf.json` under `bundle.windows.signCommand`. Tauri invokes it once per file that needs signing, passing the file path as `%1`.\n\n### Icons\n\nTo regenerate icons from the original Electron project's `icon.icns`:\n\n```\nmake extract-icon\n```\n\nOr supply your own 1024×1024 PNG:\n\n```\nmake icons SRC=/path/to/icon-1024.png\n```\n\n## Architecture\n\n| Layer | Technology |\n|---|---|\n| UI | Vanilla HTML/CSS/JS (`src/`) |\n| IPC bridge | `src/blink1-bridge.js` — wraps `window.__TAURI__.core.invoke` |\n| Backend | Rust (`src-tauri/src/lib.rs`) — three Tauri commands |\n| USB/HID | `src-tauri/src/blink1.rs` — `hidapi` crate, VID `0x27B8` / PID `0x01ED` |\n\nThe three Tauri commands map 1:1 to the original Electron IPC channels:\n\n| Tauri command | Electron channel |\n|---|---|\n| `blink1_set_color(r, g, b)` | `blink1:setColor` |\n| `blink1_rescan()` | `blink1:rescan` |\n| `blink1_get_devices()` | `blink1:getDevices` |\n\n\n## Dependencies for Development\n\nNeeded if you want to compile from source.\n\n\n### MacOS\n\nInstall Rust via `rustup`:\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n```\n\nThen install the Tauri CLI:\n\n```bash\ncargo install tauri-cli\n```\n\nXcode Command Line Tools are required (provides `clang`). If you haven't installed them:\n\n```bash\nxcode-select --install\n```\n\n### Windows\n\nInstall Rust via `rustup-init.exe` from [rustup.rs](https://rustup.rs) — choose the **MSVC** toolchain (the default), not GNU.\n\nInstall LLVM, which provides the `clang` compiler required by `tauri-cli` and `hidapi`:\n\n```powershell\nwinget install LLVM.LLVM\n```\n\nAfter installing, open a new terminal and verify:\n\n```powershell\nclang --version\n```\n\nIf `clang` is still not found, add LLVM to PATH manually. In an elevated PowerShell (search PowerShell in Start, right-click → \"Run as administrator\"):\n\n```powershell\n[System.Environment]::SetEnvironmentVariable(\"PATH\", $env:PATH + \";C:\\Program Files\\LLVM\\bin\", \"Machine\")\n```\n\nThen open a new terminal and retry.\n\nWebView2 (required by Tauri) is pre-installed on Windows 10 and 11.\n\n### Linux\n\nInstall Rust via `rustup` — do not use `apt install rustc`, which is several versions behind:\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\n```\n\nInstall required system libraries (Ubuntu/Debian):\n\n```bash\nsudo apt install -y \\\n  libgtk-3-dev \\\n  libwebkit2gtk-4.1-dev \\\n  libayatana-appindicator3-dev \\\n  librsvg2-dev \\\n  libssl-dev \\\n  pkg-config\n```\n\nThen install the Tauri CLI:\n\n```bash\ncargo install tauri-cli\n```\n\n## See also\n\n- [`electron-blink1-toy`](../node/electron-blink1-toy/) — the original Electron version\n- [`BlinkMSequencerTauri`](../BlinkMSequencerNew/BlinkMSequencerTauri/) — a more complete Tauri app using the same patterns, targeting the BlinkM/LinkM device\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Ftauri-blink1-toy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftodbot%2Ftauri-blink1-toy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Ftauri-blink1-toy/lists"}