4 stable releases
| new 1.0.3 | Apr 5, 2026 |
|---|---|
| 1.0.1 | Apr 3, 2026 |
| 0.1.0 |
|
#2 in Accessibility
86KB
2K
SLoC
mousefree
Keyboard-driven mouse navigation for Wayland. Launch the overlay, type two keys to jump the cursor to a grid cell, then click, drag, or scroll — all without touching the mouse.
Requirements
- A Wayland compositor with
wlr-layer-shellandwlr-virtual-pointersupport (Sway, Hyprland, river, etc.) fontconfig(fc-match) for system font discovery- US QWERTY keyboard layout (other layouts are not yet supported)
Install
With mise:
mise use -g cargo:mousefree
Or with cargo directly:
cargo install mousefree
Or build from source:
git clone https://github.com/swaits/mousefree.git
cd mousefree
cargo install --path .
Then bind mousefree to a hotkey in your compositor. Every Wayland compositor
has its own way to bind a key to launch a program — consult your compositor's
docs. For example, in Sway:
bindsym $mod+semicolon exec mousefree
Controls
| Key | Action |
|---|---|
a–p |
Select column |
q,w,e,… |
Select row (completes cell selection) |
Space |
Click |
Enter |
Double-click |
Shift+Enter |
Triple-click (select line/paragraph) |
. |
Right-click |
/ |
Start drag (type a second cell to drop) |
h j k l |
Nudge cursor (8 px) |
H J K L |
Medium nudge (16 px) |
Ctrl+h j k l |
Large nudge (32 px) |
Alt+h j k l |
Pixel-perfect nudge (1 px) |
| Arrow keys | Scroll |
Backspace |
Undo / go back |
Escape |
Quit |
Keys like h, j, k, l are context-sensitive: before a cell is selected
they choose a column/row; after a cell is locked they nudge the cursor.
Troubleshooting
- "could not find a system font" — Install fontconfig (
sudo apt install fontconfig/sudo pacman -S fontconfig) and verify withfc-match sans-serif. - Overlay does not appear — Your compositor may not support
wlr-layer-shellorwlr-virtual-pointer. Try Sway, Hyprland, or river. - Keys produce wrong characters — mousefree currently assumes a US QWERTY layout. Other layouts are not yet supported.
- Virtual pointer stuck after crash — If the process is killed mid-drag, a mouse button may stay pressed. Restarting your compositor session clears it.
License
Dependencies
~7–13MB
~255K SLoC