Skip to content

AlbertArakelyan/Thockify

Repository files navigation

Thockify

A lightweight desktop application that plays mechanical keyboard sounds as you type — globally, across any application.

Thockify captures keyboard input system-wide and plays realistic key press and release sounds in real time, with zero perceptible latency. Sound files are pre-loaded into memory and played concurrently, so even the fastest typists won't experience delays or dropped sounds.

Features

  • Global keyboard capture — works across all applications, not just inside the app window
  • Per-key sounds — distinct sounds for Enter, Backspace, Space, and general keys
  • Key-up support — separate sounds for key press and key release events
  • Sound packs — switch between different keyboard sound profiles
  • Low latency — audio output stream stays open; sounds play instantly via in-memory decoding
  • Minimal footprint — small window, low resource usage, no background daemons

Installation

Download

Pre-built installers are available on the Releases page. Download the appropriate installer for your platform:

Platform Format
Windows .msi or .exe
macOS .dmg
Linux .deb or .AppImage

Build from source

Prerequisites: Rust, Node.js (v18+), and Yarn.

yarn install
yarn tauri build

The compiled binary and installer will be in src-tauri/target/release/bundle/.

Usage

  1. Launch Thockify
  2. Select a sound pack from the dropdown
  3. Click Start
  4. Type anywhere — you'll hear keyboard sounds globally
  5. Click Stop to disable, or close the app

Sound Packs

Sound packs are located in the resources/sound-packs/ directory (inside the app bundle). Each pack is a folder containing:

File Description
config.json Pack metadata (name, support-events)
fallback.wav Default key press sound
fallback-up.wav Default key release sound
enter.wav / enter-up.wav Enter key sounds
backspace.wav / backspace-up.wav Backspace key sounds
spacebar.wav / spacebar-up.wav Space bar key sounds

Adding custom sound packs

Create a new folder inside resources/sound-packs/ with the wav files listed above and a config.json:

{
  "name": "My Custom Pack",
  "support-events": true
}

Platform Notes

Windows — Works out of the box. No elevated permissions required.

macOS — Requires Accessibility permissions. On first launch, macOS will prompt you to grant access in System Settings > Privacy & Security > Accessibility.

Linux — Requires read access to input devices (/dev/input/). You may need to add your user to the input group:

sudo usermod -aG input $USER

Log out and back in for the group change to take effect.

Tech Stack

Component Technology
Framework Tauri v2
Frontend React 19, TypeScript, Tailwind CSS v4
Backend Rust
Input capture rdev
Audio playback rodio

License

MIT

About

A lightweight desktop application that plays mechanical keyboard sounds as you type - globally, across any application.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors