/prayer-times

Bash script to manage and display Islamic prayer times with support for Waybar and desktop notifications.

Primary LanguageShellMIT LicenseMIT

🌙 Prayer Times

waybar module
Yad EN Yad AR

A versatile Bash script designed to manage and display Islamic prayer times. It retrieves prayer schedules based on the user's geographical coordinates and provides notifications for each prayer. The script supports multiple languages and integrates seamlessly with notification daemons like dunst and mako.

Inspired by Nofarah Tech's prayer times scripts, this version also includes added support for status bars like Waybar and integrated desktop notifications.

🚀 Quick Start

  1. Clone the repo
git clone https://github.com/0xzer0x/prayer-times.git
  1. Run the install script
cd prayer-times
./install.sh

📦 Dependencies

  • jq
  • at
  • yad
  • mpv
  • curl
  • dunst (x11)
  • polybar (x11)
  • mako (wayland)
  • waybar (wayland)
  • Nerd Font (recommended)

🔧 Procedures

  1. Copy files to their corresponding location on your system
  2. Set the parameters for the script
    • lat: latitude
    • long: longitude
    • method: calculation method
    • print_lang: language to print prayer times schedule in (ar/en)
    • notify: notification daemon (mako/dunst)
  3. Activate systemd user unit
  4. Add statusbar module
  5. Add notification daemon rule
  6. Configure Yad dialog to show in floating mode

🔄 Systemd Unit

  • Run one of the following commands to activate the service for your user
    • systemctl --user enable --now prayer-times.service # start on boot
    • systemctl --user enable --now prayer-times.timer # start on boot + every 8 hours

🖥️ Statusbar Module

Polybar

  • Add the following to your polybar config file (~/.config/polybar/config[.ini]) then add the module
  • Modify colors according to your liking (replace #83CAFA)
[module/prayers]
type = custom/script
exec = $HOME/.local/bin/prayer-times status
interval = 60
label = %{A:$HOME/.local/bin/prayer-times yad:}%{F#83CAFA}󱠧 %{F-} %output%%{A}

Waybar (Wayland)

  • Add the following custom module to your waybar config (~/.config/waybar/config)
"custom/prayers": {
  "interval": 60,
  "return-type": "json",
  "exec": "$HOME/.local/bin/prayer-times waybar",
  "on-click": "$HOME/.local/bin/prayer-times yad",
  "format": "󱠧  {}",
}
  • You can style the module using the class of the next prayer (e.g. Asr)

🔔 Notification Athan

Dunst

  • Add the following rule to your dunstrc file (~/.config/dunst/dunstrc)
[play_athan]
summary = "Prayer Times"
script = "$HOME/.local/bin/toggle-athan"

Mako (Wayland)

  • Add the following criteria/rule to mako config (~/.config/mako/config)
[summary="Prayer Times"]
on-notify=exec $HOME/.local/bin/toggle-athan
on-button-left=exec $HOME/.local/bin/toggle-athan

🖼️ Yad Dialog

  • Window Title: Prayers
  • Configure your window manager to show the Yad window in floating mode and you're all set!
  • Example window rule for Hyprland
windowrulev2 = float,class:(yad)
windowrulev2 = move cursor -50% 30,title:(Prayers)

📚 References