🎧 Terminal DJ
Turn your terminal into a vibe — Terminal DJ plays sound reactions based on your terminal output. A satisfying chime for success, a buzzer for errors.

✨ Features
| Feature |
Description |
| 🔊 Sound Reactions |
Plays a chime on success, a buzzer on errors |
| 🖥️ Multi-Terminal |
Listens to all open terminals simultaneously |
| ⏱️ Smart Cooldown |
Configurable debounce prevents sound spam |
| 📊 Status Bar |
Shows 🎧 DJ: ON / OFF — click to toggle |
| ⚙️ Configurable |
Custom keywords, cooldown, and on/off toggle |
| 🪟🍎🐧 Cross-Platform |
Windows, macOS, and Linux |
| 🪶 Zero Dependencies |
Uses native OS audio players |
| 📝 Output Logs |
Debug logs in the Terminal DJ output channel |
🔍 How It Works
Terminal DJ uses two detection strategies:
- Keyword Detection — Reads live terminal output and matches against configurable keyword lists
- Exit Code Fallback — If no keyword matched, uses the command's exit code (0 = success, non-zero = error)
Default Error Keywords
error · failed · exception · traceback · syntaxerror · not recognized · segmentation fault · fatal · abort · panic · FAIL
Default Success Keywords
success · compiled successfully · done · finished · exit code 0 · build successful · passed · completed · build succeeded
💡 You can customize these keyword lists in VS Code Settings.
📦 Installation
From VS Code Marketplace
- Open Extensions panel (
Ctrl+Shift+X)
- Search for Terminal DJ
- Click Install
From VSIX
- Download
.vsix from Releases
Ctrl+Shift+P → Extensions: Install from VSIX…
- Select the downloaded file
🎮 Commands
| Command |
Description |
Terminal DJ: Toggle Sound On/Off |
Toggle sounds with one click |
Terminal DJ: Test Error Sound |
Play the error buzzer to verify audio |
Terminal DJ: Test Success Sound |
Play the success chime to verify audio |
Tip: Access commands via Ctrl+Shift+P (Command Palette), or click the status bar item to toggle.
⚙️ Settings
| Setting |
Type |
Default |
Description |
terminalDJ.enableSound |
boolean |
true |
Enable/disable sound reactions |
terminalDJ.cooldownMs |
number |
2000 |
Cooldown between sounds (ms, range: 500–10000) |
terminalDJ.errorKeywords |
string[] |
see above |
Keywords that trigger the error sound |
terminalDJ.successKeywords |
string[] |
see above |
Keywords that trigger the success sound |
Example settings.json
{
"terminalDJ.enableSound": true,
"terminalDJ.cooldownMs": 1500,
"terminalDJ.errorKeywords": ["error", "failed", "exception", "fatal"],
"terminalDJ.successKeywords": ["success", "done", "passed"]
}
🎬 Demo
Open a terminal in VS Code
Run a command that fails:
node -e "throw new Error('oops')"
→ 🔴 Error buzzer plays
Run a successful command:
echo "build successful"
→ 🟢 Success chime plays
Check the status bar: 🎧 DJ: ON — click to toggle off
🛠️ Requirements
- VS Code ≥ 1.93.0
- Audio output enabled on your system
- Linux users:
aplay (ALSA) or paplay (PulseAudio) in $PATH
📂 Project Structure
terminal-dj/
├── src/extension.ts # Core extension logic
├── media/
│ ├── error.wav # Error buzzer sound
│ └── success.wav # Success chime sound
├── package.json # Extension manifest
├── tsconfig.json # TypeScript configuration
├── icon.png # Marketplace icon
├── CHANGELOG.md # Version history
├── LICENSE # MIT License
├── README.md # This file
└── .vscodeignore # Package exclusions
❓ FAQ
Q: Sounds are not playing?
A: Run Ctrl+Shift+P → "Terminal DJ: Test Success Sound". If nothing plays, check your OS audio output. On Linux, ensure aplay or paplay is installed.
Q: Too many sounds / sound spam?
A: Increase terminalDJ.cooldownMs in settings (e.g., 3000 for 3 seconds).
Q: Can I use custom sounds?
A: Replace media/error.wav and media/success.wav with your own WAV files (16-bit PCM, mono recommended).
Q: Status bar not showing?
A: Ensure the extension is enabled. Run Ctrl+Shift+P → "Reload Window".
🔄 Changelog
See CHANGELOG.md for version history.
📄 License
This project is licensed under the MIT License.
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.
Made with 🎵 and ❤️ by Rishikesh