Filter out phantom clicks and mouse jitter.
- Debounces clicks: Ignores button bounces within 100ms (fixing worn-out mouse switches)
- Debounces scroll: Ignores scroll wheel bounces in opposite direction (fixing defective scroll wheels that scroll up when you scroll down)
- Smooths movement: Absorbs tiny movements under 3px (helping shaky hands or high-DPI mice)
git clone <repo>
cd dewobble
cargo build --releaseNormal mode (quiet, only shows blocked bounces):
./target/release/dewobbleHold mode (absorb rapid clicks as held state instead of blocking):
./target/release/dewobble --holdVerbose mode (shows all clicks and mouse movements):
./target/release/dewobble --verboseX11 or permission errors:
sudo ./target/release/dewobbleNote: On Wayland, running with
sudooften fails due to session permissions. Try without sudo first.
BLOCK mode (default): Rapid clicks within 100ms are suppressed entirely.
HOLD mode (--hold): Rapid clicks are converted to a "held" state - the button stays pressed until the debounce period (100ms) passes. This feels more like a clean mechanical switch.
Permission denied: Add your user to the input group and log out/back in:
sudo usermod -a -G input $USERSet via environment variables:
# Adjust debounce window (default: 100ms)
DEBOUNCE_MS=150 ./target/release/dewobble
# Adjust movement threshold (default: 3.0 pixels)
MOVEMENT_THRESHOLD=5.0 ./target/release/dewobble
# Adjust scroll debounce (default: 50ms) - increase for bouncier scroll wheels
SCROLL_DEBOUNCE_MS=100 ./target/release/dewobble
# Combined example
DEBOUNCE_MS=200 MOVEMENT_THRESHOLD=10.0 SCROLL_DEBOUNCE_MS=100 ./target/release/dewobble --holdOr edit src/main.rs for permanent changes:
const DEFAULT_DEBOUNCE_MS: u64 = 100; // Increase for bouncier switches
const DEFAULT_MOVEMENT_THRESHOLD: f64 = 3.0; // Increase for shakier hands
const DEFAULT_SCROLL_DEBOUNCE_MS: u64 = 50; // Increase for bouncier scroll wheelsThen cargo build --release again.
MIT