Sync mouse sensitivity across Linux, macOS, and Windows from a single config.
sensync reads one sensync.toml and applies the equivalent OS settings on Linux (Hyprland), macOS, and Windows. At sensitivity = 1.0 with acceleration = false all three operating systems produce raw 1:1 input; other values use per-OS approximations.
Trackpad settings live in the same config under [trackpad] and follow the same rules.
git clone https://github.com/bug3/sensync
cd sensync
go build -o ~/.local/bin/sensync ./cmd/sensyncMake sure ~/.local/bin is on your PATH, or drop the binary anywhere you keep CLIs.
sensync initwrites an example config under your user config directory:- Linux:
~/.config/sensync/config.toml - macOS:
~/Library/Application Support/sensync/config.toml - Windows:
%APPDATA%\sensync\config.toml
- Linux:
- Edit the file to set the values you want.
- On Linux (Hyprland), add
source = ~/.config/hypr/sensync.confto yourhyprland.confonce. - Run
sensync applyon each host. Re-run after changing the config.
For a git-synced dotfiles flow, drop a sensync.toml in the directory you run sensync from, or pass --config <path> explicitly. Lookup order: --config flag, ./sensync.toml, then the user config directory.
| Command | Description |
|---|---|
sensync init |
Write the example config to the user config directory |
sensync init --force |
Overwrite an existing config file |
sensync apply |
Apply the resolved config to this host |
sensync apply --dry-run |
Print planned changes without applying |
sensync apply --yes |
Skip confirmation prompts |
sensync apply --config <path> |
Use an explicit config path |
sensync get |
Print the live system state as TOML |
sensync version |
Print the sensync version |
- macOS:
defaultswrites apply to new processes; log out for full effect.natural_scrollmaps to the single globalcom.apple.swipescrolldirectionswitch, so mouse and trackpad cannot diverge; the trackpad value wins and a warning is emitted when they differ. For per-device scroll direction, use a tool like LinearMouse. Trackpad/mousesensitivity = 1.0anchors to the macOS default tracking speed;acceleration = falseonly yields raw 1:1 atsensitivity = 1.0. - Hyprland:
input { sensitivity = X }is global. Diverging mouse and trackpad sensitivity emits a warning, and trackpad values win. - Windows: natural scroll inversion is not supported in the MVP.
- Per-app sensitivity overrides.
- Polling rate (firmware concern).
- Daemon or boot-time auto-apply.
- Cloud config sync (git is the sync layer).
- Linux compositors other than Hyprland.
- Windows non-Precision-Touchpad trackpads.