Advertisement
Guest User

Untitled

a guest
May 26th, 2025
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # === Konfigurasi ===
  4. STATE_FILE="/tmp/last-prayer-reminder.txt"
  5. export DISPLAY=:0
  6. export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus"
  7.  
  8. # === Ambil jadwal dari ipraytime ===
  9. declare -A prayers
  10. 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}')
  11. for line in "${lines[@]}"; do
  12. name=$(echo "$line" | cut -f1 | xargs)
  13. time=$(echo "$line" | cut -f2 | xargs)
  14. prayers["$name"]="$time"
  15. done
  16.  
  17. # === Tentukan waktu sekarang ===
  18. CURRENT_DATE=$(date +%Y-%m-%d)
  19. CURRENT_EPOCH=$(date +%s)
  20.  
  21. # === Cari jadwal sholat berikutnya ===
  22. NEXT_NAME=""
  23. NEXT_TIME=""
  24. NEXT_EPOCH=0
  25.  
  26. for name in Fajr Shurooq Zuhur Asr Maghrib Isha; do
  27. t=${prayers[$name]}
  28. if [[ -n "$t" ]]; then
  29. epoch=$(date -d "$CURRENT_DATE $t" +%s)
  30. if [[ $epoch -ge $CURRENT_EPOCH ]]; then
  31. NEXT_NAME=$name
  32. NEXT_TIME=$t
  33. NEXT_EPOCH=$epoch
  34. break
  35. fi
  36. fi
  37. done
  38.  
  39. # === Jika semua sudah lewat, ambil Fajr besok ===
  40. if [[ -z "$NEXT_NAME" ]]; then
  41. t=${prayers["Fajr"]}
  42. if [[ -n "$t" ]]; then
  43. tomorrow=$(date -d "tomorrow" +%Y-%m-%d)
  44. NEXT_NAME="Fajr"
  45. NEXT_TIME="$t"
  46. NEXT_EPOCH=$(date -d "$tomorrow $t" +%s)
  47. fi
  48. fi
  49.  
  50. # === Notifikasi bertingkat ===
  51. for MIN in 30 20 10 1; do
  52. REM_EPOCH=$((NEXT_EPOCH - MIN * 60))
  53. REM_ID="$NEXT_NAME-$CURRENT_DATE-$MIN"
  54.  
  55. if [[ -f "$STATE_FILE" ]] && grep -q "$REM_ID" "$STATE_FILE"; then
  56. continue
  57. fi
  58.  
  59. if [[ $CURRENT_EPOCH -ge $REM_EPOCH && $CURRENT_EPOCH -lt $((REM_EPOCH + 60)) ]]; then
  60. case $MIN in
  61. 1) MSG="Waktu $NEXT_NAME ($NEXT_TIME) telah tiba";;
  62. 10) MSG="$NEXT_NAME jam $NEXT_TIME (10 menit lagi)";;
  63. 20) MSG="$NEXT_NAME jam $NEXT_TIME (20 menit lagi)";;
  64. 30) MSG="$NEXT_NAME jam $NEXT_TIME (30 menit lagi)";;
  65. esac
  66. notify-send "Pengingat Sholat" "$MSG"
  67. echo "$REM_ID" >> "$STATE_FILE"
  68. fi
  69. done
  70.  
  71. # === Output Genmon ===
  72. echo "<txt>$NEXT_NAME $NEXT_TIME</txt>"
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement