A fun and practical way to bring your favorite sounds anywhere!
MechvibesDX lets you play any sound when you type or click. Use it for education, presentations, gaming, or just for fun.
- Play sounds on every keystroke (keydown/keyup) and mouse click (press/release)
- Works with education, business, gaming, and accessibility needs
- Global hotkey toggle (
Ctrl+Alt+M) - System tray integration
- Custom soundpack support
- Multiple themes available
- Logo and background customizations
- Download from Releases
- Run installer
- Select soundpacks
- Enjoy the sounds or playing with Customizations
All platforms:
- Rust (1.70 or later)
- Dioxus CLI:
cargo install dioxus-cli
Windows
- Visual Studio Build Tools (C++ build tools)
- Inno Setup (for creating installer)
Linux (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install -y \
libasound2-dev \
pkg-config \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libevdev-dev \
libxdo-dev \
autoconf \
automake \
libtool \
libfuse2
# Note: libfuse2 is required for building AppImageLinux (Fedora/RHEL)
sudo dnf install -y \
alsa-lib-devel \
pkg-config \
webkit2gtk4.1-devel \
gtk3-devel \
libappindicator-gtk3-devel \
librsvg2-devel \
libevdev-devel \
xdotool-devel \
autoconf \
automake \
libtool \
fuse-libs
# Note: fuse-libs is required for building AppImagemacOS
xcode-select --installDevelopment (all platforms)
# Clone repository
git clone https://github.com/hainguyents13/mechvibes-dx.git
cd mechvibes-dx
# Run in development mode
dx serve
# Or use cargo directly
cargo runRelease Build
Windows:
# Build release binary
cargo build --release
# Create installer (requires Inno Setup)
.\scripts\build-windows-installer.ps1
# Output: dist/MechvibesDX-0.4.0-Setup.exeLinux:
# Option 1: Build both DEB and AppImage (recommended)
./scripts/build-linux-installer.sh
# Outputs (unified in dist/ directory):
# - dist/mechvibes-dx_0.4.0_amd64.deb (Ubuntu/Debian)
# - dist/mechvibes-dx-0.4.0-x86_64.AppImage (Universal)
# Install DEB (does NOT add you to the input group - see below)
sudo dpkg -i dist/mechvibes-dx_0.4.0_amd64.deb
# Or run AppImage (portable, no install needed)
chmod +x dist/mechvibes-dx-0.4.0-x86_64.AppImage
./dist/mechvibes-dx-0.4.0-x86_64.AppImage
# Every install method requires this once - the package ships no
# maintainer scripts, so nothing touches your groups automatically:
sudo usermod -a -G input $USER
# Log out and log back in for group changes to take effect
# Option 2: Build DEB only
cargo install cargo-deb
cargo deb
# Output: target/debian/mechvibes-dx_0.4.0_amd64.deb
# Option 3: Build binary only
# Add user to input group manually (required for keyboard input)
sudo usermod -a -G input $USER
# Log out and log back in for group changes to take effect
# Build release binary
cargo build --release
# Binary location: target/release/mechvibes-dxmacOS:
# Build release binary
cargo build --release
# Assemble MechvibesDX.app and package it as a DMG
# (`dx bundle` is not used - it currently ships an empty Contents/Resources,
# see DioxusLabs/dioxus#5723)
./scripts/build-macos-app.sh 0.7.1
# Output: dist/mechvibes-dx-0.7.1-macos-arm64-experimental.dmgmacOS builds are experimental: ad-hoc signed, not notarized, and untested on
real hardware. On first launch, right-click the app and choose "Open" to get
past Gatekeeper. See README-macos.txt for details.
Education - Musical scales, animal sounds, language learning
Business - Professional typewriter sounds, meeting-friendly modes
Gaming - Retro arcade sounds, custom sound effects
Accessibility - Audio feedback for visually impaired users
- Record audio files (OGG, WAV, MP3)
- Create config.json mapping keys to sounds
- Drag and drop folder into app
Piano pack/
├── config.json
├── piano.ogg
└── icon.png
No sounds? Check if muted (Ctrl+Alt+M), soundpack selected, system volume
Hotkey not working? Run as administrator, check for conflicts
Soundpack won't load? Verify config.json syntax, supported audio formats
Linux: No keyboard input detected?
- Add user to
inputgroup:sudo usermod -a -G input $USER - Log out and log back in for changes to take effect
- Verify with:
groups $USER(should includeinput) - Check device permissions:
ls -la /dev/input/event*(should showcrw-rw---- root input)
MechvibesDX sends one anonymous ping when the app starts, so I can see roughly how many people use it and on which operating systems. That is the entire scope.
What is sent: a single app_started event containing your OS name and version, the app version, your language locale, and a random session number that is generated fresh on every launch and never stored.
What is never sent: your keystrokes, your mouse activity, which soundpacks you use, file paths, your name, your email, your IP-derived identity, or any other personal data. There is no account, no persistent identifier, and no way to link two launches back to the same person.
Analytics are handled by Aptabase, an open source privacy-first service.
How to turn it off: open Settings, expand the "Privacy" section, and switch off "Share anonymous usage stats". Once it is off, the app makes no telemetry requests at all.
MIT License - do whatever you want with it.
Report bugs or request features via GitHub Issues.
