🚧 Work in Progress (WIP): AdhanPause is currently in active development. The core desktop media control, local server, and Chrome extension are functional. The daily dashboard UI is currently being built.
AdhanPause is a local Windows desktop application and companion browser extension that calculates exact Islamic prayer times and automatically pauses all active media—whether it is a desktop app like Spotify or a browser tab like YouTube—the moment an Adhan triggers.
- Universal Media Control: Uses native Windows PowerShell hooks to globally pause desktop media applications.
- Browser Extension Companion: A Manifest V3 Chrome extension that connects via local WebSockets to pause web-based players (YouTube, Netflix, Soundcloud, etc.).
- Background Operation: Runs silently in the Windows System Tray without cluttering your taskbar.
- Offline First: Calculates prayer times locally using your coordinates, requiring no constant external API calls for daily schedules.
- [WIP] Daily Dashboard: An elegant, upcoming UI featuring Hijri calendar integration, daily prayer lists, and smart 30-minute countdown timers.
- Client/Server App: Flutter & Dart (Windows Desktop)
- Local Communication: WebSockets (ws://127.0.0.1:3010)
- Browser Extension: HTML, JavaScript (Manifest V3)
- System Integration: Windows PowerShell (
VK_MEDIA_PLAY_PAUSEvirtual key)
Ensure you have the Flutter SDK installed and configured for Windows desktop development.
# Clone the repository
git clone [https://github.com/YourUsername/adhan-pause.git](https://github.com/YourUsername/adhan-pause.git)
# Navigate to the project directory
cd adhan-pause
# Install dependencies
flutter pub get
# Run the application
flutter run -d windows- Open Google Chrome and navigate to chrome://extensions/.
- Enable Developer mode using the toggle in the top right corner.
- Click the Load unpacked button.
- Select the adhan_pause_extension folder located within this repository.
- Note: Ensure the Flutter desktop app is currently running so the extension can successfully bind to the local WebSocket server!