Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # === Konfigurasi ===
- STATE_FILE="/tmp/last-prayer-reminder.txt"
- export DISPLAY=:0
- export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
- # === Ambil jadwal dari ipraytime ===
- declare -A prayers
- readarray -t lines < <(ipraytime | awk 'NR==12 {print "Fajr\t"$2; print "Shurooq\t"$3; print "Zuhur\t"$4; print "Asr\t"$5; print "Maghrib\t"$6; print "Isha\t"$7}')
- for line in "${lines[@]}"; do
- name=$(echo "$line" | cut -f1 | xargs)
- time=$(echo "$line" | cut -f2 | xargs)
- prayers["$name"]="$time"
- done
- # === Tentukan waktu sekarang ===
- CURRENT_DATE=$(date +%Y-%m-%d)
- CURRENT_EPOCH=$(date +%s)
- # === Cari jadwal sholat berikutnya ===
- NEXT_NAME=""
- NEXT_TIME=""
- NEXT_EPOCH=0
- for name in Fajr Shurooq Zuhur Asr Maghrib Isha; do
- t=${prayers[$name]}
- if [[ -n "$t" ]]; then
- epoch=$(date -d "$CURRENT_DATE $t" +%s)
- if [[ $epoch -ge $CURRENT_EPOCH ]]; then
- NEXT_NAME=$name
- NEXT_TIME=$t
- NEXT_EPOCH=$epoch
- break
- fi
- fi
- done
- # === Jika semua sudah lewat, ambil Fajr besok ===
- if [[ -z "$NEXT_NAME" ]]; then
- t=${prayers["Fajr"]}
- if [[ -n "$t" ]]; then
- tomorrow=$(date -d "tomorrow" +%Y-%m-%d)
- NEXT_NAME="Fajr"
- NEXT_TIME="$t"
- NEXT_EPOCH=$(date -d "$tomorrow $t" +%s)
- fi
- fi
- # === Notifikasi bertingkat ===
- for MIN in 30 20 10 1; do
- REM_EPOCH=$((NEXT_EPOCH - MIN * 60))
- REM_ID="$NEXT_NAME-$CURRENT_DATE-$MIN"
- if [[ -f "$STATE_FILE" ]] && grep -q "$REM_ID" "$STATE_FILE"; then
- continue
- fi
- if [[ $CURRENT_EPOCH -ge $REM_EPOCH && $CURRENT_EPOCH -lt $((REM_EPOCH + 60)) ]]; then
- case $MIN in
- 1) MSG="Waktu $NEXT_NAME ($NEXT_TIME) telah tiba";;
- 10) MSG="$NEXT_NAME jam $NEXT_TIME (10 menit lagi)";;
- 20) MSG="$NEXT_NAME jam $NEXT_TIME (20 menit lagi)";;
- 30) MSG="$NEXT_NAME jam $NEXT_TIME (30 menit lagi)";;
- esac
- notify-send "Pengingat Sholat" "$MSG"
- echo "$REM_ID" >> "$STATE_FILE"
- fi
- done
- # === Output Genmon ===
- echo "<txt>$NEXT_NAME $NEXT_TIME</txt>"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement