A Windows application that plays language-specific audio files when you switch input languages using Alt+Shift.
NOTE: Automatically built with Claude Sonnet 4.0, no real coding.
- π― Global Language Detection: Monitors language changes system-wide, regardless of which application has focus
- π΅ Custom Audio Playback: Plays language-specific MP3 files for each input language
- π Smart Fallback: Falls back to system beep if audio files are missing
- π± System Tray Integration: Runs invisibly in the background with system tray access
- β‘ Lightweight: Minimal resource usage with clean architecture
- π‘οΈ Robust Error Handling: Never crashes, always provides feedback
- Operating System: Windows 10/11
- Framework: .NET 9.0 Runtime (included in self-contained builds)
- Audio: Windows audio system
- Detects Language Changes: Uses Windows API low-level keyboard hook to monitor Alt+Shift combinations
- Identifies Current Language: Determines the active input language from Windows
- Plays Corresponding Audio: Maps language names to MP3 files and plays the appropriate sound
- Runs in Background: Operates silently from the system tray
OneBitSoftware.InputLanguageScreamer/
βββ Desktop/
β βββ Audio/ # Audio files directory
β β βββ English.mp3 # English language audio
β β βββ Bulgarian.mp3 # Bulgarian language audio
β βββ Program.cs # Application entry point
β βββ LanguageMonitorApp.cs # System tray application
β βββ GlobalKeyboardHook.cs # Windows API keyboard hook
β βββ LanguageAudioPlayer.cs # MP3 audio playback
β βββ Desktop.csproj # Project configuration
βββ OneBitSoftware.InputLanguageScreamer.sln
- Download the latest release from the Releases page
- Choose the appropriate package for your system:
- Windows x64 (Recommended):
InputLanguageScreamer-vX.X.X-win-x64.zip
- Windows x86 (32-bit):
InputLanguageScreamer-vX.X.X-win-x86.zip
- Windows ARM64:
InputLanguageScreamer-vX.X.X-win-arm64.zip
- Portable (Minimal):
InputLanguageScreamer-vX.X.X-portable.zip
- Windows x64 (Recommended):
- Extract the ZIP file to your desired location
- Add your MP3 audio files to the
Audio
folder - Run
Desktop.exe
# Clone the repository
git clone https://github.com/OneBitSoftware/OneBitSoftware.InputLanguageScreamer.git
cd OneBitSoftware.InputLanguageScreamer
# Build the project
dotnet build --configuration Release
# Publish as single executable
dotnet publish Desktop/Desktop.csproj --configuration Release --output ./publish
This project uses GitHub Actions for automated building and releasing:
- Tag a new version:
git tag v1.0.1 && git push origin v1.0.1
- Automatic build: GitHub Actions will automatically build for all platforms
- Release creation: A new GitHub release will be created with all packages
- Multi-platform support: Builds for Windows x64, x86, and ARM64
- Every push/PR: Automatic build verification
- Quality checks: Code builds successfully on Windows
- Status badges: Build status visible in README
-
Create MP3 files named after your input languages:
English.mp3
for EnglishBulgarian.mp3
for BulgarianSpanish.mp3
for Spanish- etc.
-
Place them in the
Audio
folder next to the executable -
The application will automatically detect and play the appropriate file when you switch languages
- Primary: MP3 (recommended)
- Fallback: System beep if MP3 files are missing
- Start the Application: Run
Desktop.exe
- System Tray: The app will appear in your system tray
- Switch Languages: Use Alt+Shift to change input languages
- Hear Audio: The corresponding MP3 file will play
- Exit: Right-click the system tray icon and select "Exit"
The application automatically maps Windows input languages to audio files:
Windows Language | Audio File |
---|---|
English (United States) | English.mp3 |
Bulgarian | Bulgarian.mp3 |
Spanish | Spanish.mp3 |
French | French.mp3 |
To add support for additional languages:
- Add the corresponding MP3 file to the
Audio
folder - Name it using the English name of the language
- The application will automatically detect it
LanguageMonitorApp
: Main application context managing system trayGlobalKeyboardHook
: Windows API integration for global keyboard monitoringLanguageAudioPlayer
: MP3 playback using NAudio libraryProgram
: Application entry point
- NAudio: High-quality audio playback library
- .NET Windows Forms: System tray and UI components
- Windows API: Low-level keyboard hook functionality
- Visual Studio 2022 or VS Code
- .NET 9.0 SDK
- Windows 10/11
# Debug build
dotnet build
# Release build
dotnet build --configuration Release
# Run locally
dotnet run --project Desktop/Desktop.csproj
- Build the application
- Add test MP3 files to the Audio folder
- Run the application
- Switch input languages using Alt+Shift
- Verify audio playback
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- NAudio: Excellent .NET audio library
- Microsoft: Windows API documentation and .NET framework
- Community: Feedback and feature suggestions
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Initial release
- Global language change detection
- MP3 audio playback support
- System tray integration
- Support for English and Bulgarian languages
Made with β€οΈ by OneBit Software