A prayer-times widget for Quickshell on Wayland. It shows a live countdown to the next prayer and a popup with the full day's schedule. Times are scraped from sajda.com for any city, with a selectable Asr madhab.
Use it either as a standalone bar (works on any compositor, no dotfiles needed) or as a native widget in the illogical-impulse / end-4 bar.
| Standalone | illogical-impulse (end-4) |
|---|---|
![]() |
![]() |
- Live countdown to the next prayer, with the full daily schedule on hover/click
- Next prayer highlighted; Tahajjud omitted; all times in your local timezone
- Configurable location (any sajda.com city) and madhab (Shafi'i / Hanafi)
- Pure Python stdlib for fetching/parsing (no extra deps), with a 6h disk cache
Self-contained wlr-layer-shell panel; no shell/dotfiles required. Works on
Hyprland, Sway, river, Niri, etc.
git clone https://github.com/Shyvve/quickshell-prayer-times.git
cd quickshell-prayer-times
cp config.example.json ~/.config/quickshell-prayer-times/config.json
$EDITOR ~/.config/quickshell-prayer-times/config.json # set your city
qs -p standalone/shell.qml→ details & appearance options in standalone/README.md.
Integrates next to the clock and matches your Material You theme.
git clone https://github.com/Shyvve/quickshell-prayer-times.git
cd quickshell-prayer-times
./integrations/illogical-impulse/install.sh # then two small manual edits→ full steps in integrations/illogical-impulse/README.md.
| Key | Meaning |
|---|---|
country, city, locationId |
From the sajda.com URL of your city (see below) |
label |
Text shown in the popup header |
madhab |
"shafi" or "hanafi" (changes the Asr time) |
locale |
sajda.com locale prefix, e.g. "en", "ru" |
- Standalone reads these from
~/.config/quickshell-prayer-times/config.json(seeconfig.example.json). - illogical-impulse reads them from
Config.options.bar.prayerTimes.
Open your city on sajda.com and read the URL:
https://sajda.com/en/prayer-times/kazakhstan/almaty/1526384
└ country ┘ └ city ┘ └id┘
You can sanity-check the data straight from the script:
python3 prayertimes.py --country turkey --city istanbul --location-id 745044 --label "Istanbul"CLI flags override the config file, which overrides the built-in defaults.
prayertimes.py fetches the monthly sajda.com page, which embeds a Next.js
payload with per-day UTC timestamps (fajr, sunrise, dhuhr, asr,
asr_shafi, maghrib, isha). It converts them to the local timezone, picks
the requested madhab's Asr, drops Tahajjud, and prints today's schedule plus
tomorrow's Fajr as JSON. The QML side runs it and ticks a 1-second countdown to
the next prayer.
MIT — see LICENSE.
Not affiliated with sajda.com. Prayer-time data belongs to sajda.com; this is an unofficial widget for personal use.

