Desktop prayer times application for Indonesian cities
A simple, elegant desktop application built with Python and PyQt6 that displays real-time Islamic prayer schedules for major cities across Indonesia using the Aladhan API.
- 📅 Real-Time Prayer Times - Automatically fetches and displays today's prayer schedule (Subuh, Dzuhur, Ashar, Maghrib, Isya)
- 🕌 100+ Indonesian Cities - Covers all provincial capitals and major cities across Indonesia
- 🔔 Audio Notifications - Play adhan (call to prayer) at prayer times with customizable MP3 file
- 🎨 Dark Mode - Toggle between light and dark themes
- 💻 System Tray Integration - Minimize to system tray and receive prayer time notifications
- 🚀 Auto-Start - Run automatically at system startup (Windows, macOS, Linux)
- ⏰ Live Clock - Always-visible clock showing current time
- 🌐 Multi-Platform - Works on Windows, macOS, and Linux
The application features three main tabs with light and dark theme support:
- Python 3.10 or higher
- PyQt6
- requests library
-
Download and extract Adzanid-Windows-v1.2.0.zip
-
Windows SmartScreen Warning: You may see a security warning
- Click "More info"
- Click "Run anyway"
- This happens because the app isn't digitally signed (requires expensive certificate)
- The app is safe - you can verify the source code on GitHub
-
Run
Adzanid.exe
No Python installation required!
Install Adzanid with a single command:
Important
Requires Python 3.10, 3.11, or 3.12 (not 3.13 or higher due to PyInstaller compatibility)
Using curl:
curl -fsSL https://raw.githubusercontent.com/fikrisyahid/adzanid/main/quick-install.sh | sudo -E bashOr using wget:
wget -qO- https://raw.githubusercontent.com/fikrisyahid/adzanid/main/quick-install.sh | sudo -E bashTip
If you're using conda or a virtual environment, the -E flag is required to preserve your Python environment. Without it, the script may not detect your Python 3.12 installation.
What the installation does:
- ✅ Validates Python installation and version
- ✅ Automatically installs system dependencies (python3-venv)
- ✅ Builds the application with all dependencies
- ✅ Installs to system directories:
- Linux:
/opt/adzanidwith desktop entry - macOS:
/Applications/Adzanid.app
- Linux:
- ✅ Creates command-line shortcut:
adzanid - ✅ Cleans up temporary files after installation
After installation:
- Linux: Find Adzanid in your application menu or run
adzanidin terminal - macOS: Find Adzanid in Applications folder or run
adzanidin terminal
If you prefer to install manually from the cloned repository:
# Clone the repository
git clone https://github.com/fikrisyahid/adzanid.git
cd adzanid
# Make the install script executable
chmod +x install.sh
# Run the installation script with sudo -E (to preserve conda environment if active)
sudo -E ./install.shTip
The -E flag preserves environment variables. This is important if you're using conda or a virtual environment.
If you prefer to run without system installation:
# Clone the repository
git clone https://github.com/fikrisyahid/adzanid.git
cd adzanid
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.pyIf you want to build manually without installation:
# Ensure Python < 3.13
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install pyinstaller
# Build
pyinstaller --name "Adzanid" --windowed --icon=assets/icon.png --add-data "assets:assets" main.py
# Copy assets
cp -r assets dist/Adzanid/The executable will be in the dist/Adzanid/ directory.
Simply delete the extracted Adzanid folder. If you enabled "Run at Startup", the app will automatically remove the startup entry when you close it.
Uninstall Adzanid with a single command:
curl -fsSL https://raw.githubusercontent.com/fikrisyahid/adzanid/main/uninstall.sh | sudo bashOr using wget:
wget -qO- https://raw.githubusercontent.com/fikrisyahid/adzanid/main/uninstall.sh | sudo bashOr from cloned repository:
cd adzanid
chmod +x uninstall.sh
sudo ./uninstall.shNote
The --yes flag automatically confirms the uninstallation when piping from curl/wget. When running the script directly, you'll be asked to confirm interactively.
What the uninstallation removes:
- ✅ Application files from
/opt/adzanid(Linux) or/Applications/Adzanid.app(macOS) - ✅ Command-line launcher from
/usr/local/bin/adzanid - ✅ Desktop entry (Linux only)
- ✅ User autostart entries (if enabled)
User settings are preserved and can be manually deleted if desired:
- Linux:
~/.config/Adzanid/ - macOS:
~/Library/Application Support/Adzanid/and~/Library/Preferences/com.fikrisyahid.adzanid.plist
python main.py- Select Your City - Choose your city from the dropdown in the Settings tab
- Configure Audio (Optional) - Browse and select your preferred adhan MP3 file
- Enable Features (Optional):
- Toggle Dark Mode for a darker theme
- Enable "Minimize to Tray" to keep the app running in the background
- Enable "Run at Startup" to launch automatically when your system boots
Click the "Test Suara Adzan" button in the Settings tab to preview your selected audio file.
adzanid/
├── main.py # Application entry point
├── app/
│ ├── __init__.py
│ ├── constants.py # App-wide constants and configuration
│ ├── services/ # Business logic services
│ │ ├── audio_service.py # Audio playback
│ │ ├── prayer_time_service.py # API integration
│ │ ├── startup_service.py # System startup management
│ │ └── theme_manager.py # Theme switching
│ └── ui/ # User interface components
│ ├── main_window.py # Main application window
│ ├── schedule_tab.py # Prayer times display
│ ├── settings_tab.py # User settings
│ ├── about_tab.py # About information
│ └── system_tray.py # System tray integration
└── assets/
├── icons.png # Application icon
└── adhan.mp3 # Default adhan audio
This application uses the Aladhan API to fetch prayer times. The API is free and does not require authentication.
- Uses Windows Registry for startup management
- System tray icon works out of the box
- Creates LaunchAgent plist for startup management
- May need to grant permissions for notifications
- Creates
.desktopfile in~/.config/autostart/for startup - System tray support depends on your desktop environment
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
This project is open source and available under the MIT License.
Special thanks to the Aladhan team for providing the free prayer times API that powers this application.
Made with ❤️ for the Muslim community in Indonesia





