{"id":47278881,"url":"https://github.com/gh123man/opensnek","last_synced_at":"2026-05-04T20:01:55.168Z","repository":{"id":343854004,"uuid":"1174019050","full_name":"gh123man/OpenSnek","owner":"gh123man","description":"Lightweight configuration software for USB and bluetooth Razer devices on macOS","archived":false,"fork":false,"pushed_at":"2026-03-29T14:50:26.000Z","size":36636,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T17:39:15.211Z","etag":null,"topics":["mouse-control","peripherals","razer"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gh123man.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-06T01:38:06.000Z","updated_at":"2026-03-29T14:50:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gh123man/OpenSnek","commit_stats":null,"previous_names":["gh123man/open-snek","gh123man/opensnek"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/gh123man/OpenSnek","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh123man%2FOpenSnek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh123man%2FOpenSnek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh123man%2FOpenSnek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh123man%2FOpenSnek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gh123man","download_url":"https://codeload.github.com/gh123man/OpenSnek/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gh123man%2FOpenSnek/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31306710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["mouse-control","peripherals","razer"],"created_at":"2026-03-15T20:59:08.960Z","updated_at":"2026-05-04T20:01:55.162Z","avatar_url":"https://github.com/gh123man.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"OpenSnek/App/Resources/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png\" alt=\"open-snek app icon\" width=\"200\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eOpenSnek\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  Configure supported Razer mice on macOS without Synapse, Windows, or vendor lock-in.\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003e\u003ca href=\"https://github.com/gh123man/OpenSnek/releases\"\u003eDownload\u003c/a\u003e\u003c/h2\u003e\n\n![Screenshot](/docs/media/screenshot.png)\n\nOpenSnek is an open source native macOS app for configuring supported Razer mice over USB or Bluetooth.\n\n## Highlights\n\n- Lightweight native macOS app bundle with no unnecessary runtime bloat\n- Very low idle and background overhead, so it stays out of the way when you are not using it\n- Optional menu bar control for quick, on-the-fly DPI adjustments  \n  \u003cimg src=\"docs/media/menu-icon.png\" alt=\"open-snek app icon\" width=\"250\"\u003e\n- Rebind all supported mouse buttons and write to onboard stoarge  \n  \u003cimg src=\"docs/media/bindings.png\" alt=\"open-snek app icon\" width=\"300\"\u003e\n\n## Motivation\n\nRazer does not support the Basilisk V3 X HyperSpeed on macOS at all, so this project started by reverse engineering the BLE protocol from Windows traffic between the mouse and Synapse.\n\nThe goal is simple: make supported Razer mice configurable on macOS without needing Synapse, Windows, or a second machine just to change settings.\n\nMore device support is welcome, whether that comes from new hardware captures or pull requests. For USB protocol reference work, this project also builds on the excellent documentation and reverse-engineering effort from [OpenRazer](https://github.com/openrazer/openrazer).\n\n## Features\n\n- Change DPI, stage count, and active stage\n- Adjusts supported lighting settings\n- Remaps supported buttons\n- Works over USB and Bluetooth where the device protocol allows it\n- Avoids the need for Synapse or a separate Windows machine\n\n## Download and Install\n\n1. Download the latest DMG from [GitHub Releases](https://github.com/gh123man/OpenSnek/releases).\n2. Open the DMG.\n3. Drag `OpenSnek.app` into `Applications`.\n4. Launch `OpenSnek`.\n\nOfficial builds use the latest Xcode/macOS SDK. Minimum supported macOS version: macOS 14.\n\nIf macOS asks for permissions:\n\n- For USB control, grant `Input Monitoring` to `OpenSnek` in `System Settings \u003e Privacy \u0026 Security`.\n- For Bluetooth control, allow Bluetooth access when prompted.\n\n## Supported Devices\n\nSupport is transport-specific. A mouse may be supported over USB, Bluetooth, or both, depending on what has been captured, tested, and validated in the app.\n\nStatus key:\n- `Validated` = supported and locally capture/test validated in OpenSnek\n- `Mapped` = supported through a shipped profile, but not yet locally validated on OpenSnek hardware\n- `Not yet` = the transport exists on the hardware but OpenSnek does not support it yet\n- `No` = that transport is not available on the device\n\n| Device | USB | Bluetooth | Notes |\n|---|---|---|---|\n| Basilisk V3 X HyperSpeed | Validated | Validated | |\n| Basilisk V3 | Mapped | No | OpenRazer-backed USB profile, modeled after the Basilisk V3 35K with a `26,000` DPI ceiling |\n| Basilisk V3 Pro | Validated | Validated | |\n| Basilisk V3 35K | Validated | No | |\n\nNot every feature is fully supported on every listed transport yet. Some controls and readback paths are still partial while capture, testing, and validation continue.\n\nSupport docs:\n- Per-device USB/BT feature matrix: [docs/DEVICE_SUPPORT.md](docs/DEVICE_SUPPORT.md)\n- Protocol and transport docs: [docs/protocol/PROTOCOL.md](docs/protocol/PROTOCOL.md)\n- Contribution and new-device workflow: [CONTRIBUTING.md](CONTRIBUTING.md)\n\nUnsupported Razer mice still get a best-effort experience when possible. OpenSnek will probe for controls that already match known behavior, show a light warning that the device is not fully supported, and avoid exposing UI for features that have not been mapped safely yet.\n\nSupport for more devices is welcome. New device support can land either through outside contributors or as more hardware becomes available for capture, testing, and validation.\n\n## Build From Source\n\nFrom the repo root:\n\n```bash\n./run.sh\n```\n\nThat rebuilds the canonical Xcode `OpenSnek.app` target, copies it into the stable local `.dist` bundle path, and launches it through `OpenSnek/scripts/run_macos_app.sh`.\n\nIf you want to reuse the current app bundle without rebuilding:\n\n```bash\n./run.sh --no-build\n```\n\n## Build\n\n```bash\nswift build --package-path OpenSnek\n```\n\n## Test\n\n```bash\nswift test --package-path OpenSnek\n```\n\n## Xcode\n\n```bash\n./OpenSnek/scripts/generate_xcodeproj.sh --open\n```\n\n`OpenSnek/OpenSnek.xcodeproj` is generated from `OpenSnek/project.yml` on demand and is not checked into git.\n\n## Project Docs\n\n- App build, run, probe, and validation details: [OpenSnek/README.md](OpenSnek/README.md)\n- Device support and reverse-engineering workflow: [CONTRIBUTING.md](CONTRIBUTING.md)\n- Device support matrix by feature and transport: [docs/DEVICE_SUPPORT.md](docs/DEVICE_SUPPORT.md)\n- DMG release and notarization setup: [docs/release/DMG_RELEASE.md](docs/release/DMG_RELEASE.md)\n- Protocol documentation: [docs/protocol/PROTOCOL.md](docs/protocol/PROTOCOL.md)\n- Supported Python tooling: [tools/python/README.md](tools/python/README.md)\n- BLE capture corpus: [captures/README.md](captures/README.md)\n\n## License\n\nThis repository is licensed under the Apache License 2.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgh123man%2Fopensnek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgh123man%2Fopensnek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgh123man%2Fopensnek/lists"}