Command reference
Every Muslimtify feature is available from the muslimtify command. Run muslimtify help (or any command with --help) to see the available options.
Output formats
By default, muslimtify prints a human-readable table. Most read-only commands (show, location, notification) also support two machine-friendly formats:
| Flag | Output |
|---|---|
| (none) | Tabular, human-readable (default) |
--json | Structured JSON |
--headless | Plain key=value pairs |
This flexibility makes it easy to integrate muslimtify into custom Linux widgets, such as waybar or yad.
Every command accepts -h / --help for its own usage and examples, e.g. muslimtify show --help.
muslimtify show
Print today's prayer times using your current configuration. This is the quickest way to verify your setup.
muslimtify show # today's prayer times as a table
muslimtify show --json # same data as JSON
muslimtify show --headless # same data as key=value
muslimtify show --next
Print the next prayer time and the remaining time until it starts. For example, if it is currently Dhuhr, it shows Asr and the countdown. After the day's last prayer, it rolls over to tomorrow's Fajr.
muslimtify show --next # next prayer as a table
muslimtify show --next --json # next prayer as JSON
muslimtify show --next --headless # next prayer as key=value
muslimtify show --date <start> [end]
Print the prayer times for a specific date, or an inclusive date range when a second date is given. Dates use the yyyy-mm-dd format.
muslimtify show --date 2026-07-07 # a single day
muslimtify show --date 2026-07-01 2026-07-30 # every day from Jul 1 to Jul 30 (inclusive)
muslimtify show --date 2026-07-07 --json # single day as JSON
Two limits apply to the dates you pass:
| Limit | Value | Behaviour when exceeded |
|---|---|---|
| Year | 1 to 9999 | The date is rejected as malformed |
| Range span | 366 days (inclusive) | The range is rejected before any output |
The 366-day cap covers a full leap year, which is the longest span with a practical use. Components do not need to be zero-padded, so 2026-7-7 parses the same as 2026-07-07. Anything else, including a leading sign, extra digits such as 00002026, or trailing characters, is rejected.
muslimtify location
Show or update your location. Prayer times depend on your coordinates and timezone.
muslimtify location # show current location
muslimtify location --json # show location as JSON
muslimtify location set --auto # detect from your IP
muslimtify location set --auto --city=Mansoura # auto-detect, custom city label
muslimtify location set --auto --country=EG # auto-detect, custom country code
muslimtify location set --lat=-6.175 --long=106.82 # set coordinates manually
muslimtify location set --timezone=Asia/Jakarta # override the timezone
muslimtify location set --city=Jakarta # set a city label
muslimtify location set --refresh-interval=21600 # re-check the location every 6 hours
muslimtify location set --refresh-interval=0 # never re-check automatically
muslimtify location gps on # read coordinates from a GPS receiver
The location view reports a gps field alongside the saved coordinates, showing whether the GPS source is enabled. It appears in all three output formats, as a gps row in the table, gps=true / gps=false in --headless, and a boolean "gps" in --json.
The gmt field shows the offset in effect today, so it follows daylight saving rather than the value frozen in the config when the location was last set.
muslimtify location set updates only the fields you pass, leaving the rest untouched.
| Flag | Description |
|---|---|
--auto | Detect coordinates, timezone, and country from your IP address |
--lat=<latitude> | Set latitude manually (make sure the timezone matches) |
--long=<longitude> | Set longitude manually (make sure the timezone matches) |
--timezone=<iana> | Set the IANA timezone, e.g. Asia/Jakarta (make sure the coordinates match). The name must resolve on this system or it is rejected |
--city=<name> | Set a display label for your city |
--country=<iso2> | Set the ISO-2 country code, e.g. ID (used by method --auto) |
--refresh-interval=<seconds> | How often an auto-detected location is re-checked. 0 disables it, the minimum is 3600 (1 hour), and the default is 43200 (12 hours). See Location auto-refresh |
--automay be combined only with--cityand/or--country. It cannot be mixed with--lat,--long, or--timezone.
Setting coordinates manually with
--lat/--longturns auto-detection off, so the location is never re-checked.--refresh-intervalonly affects locations detected with--auto.
An unknown or unresolvable timezone name is rejected with
Error: Unknown timezone '<name>'rather than saved. Real zones that sit at UTC+0, such asAfrica/Abidjan, are accepted normally.
muslimtify location gps
Read your coordinates from a GPS receiver on the machine instead of looking them up over the network. GPS is off by default.
muslimtify location gps # show whether GPS is currently enabled
muslimtify location gps on # probe the receiver and enable it if one is present
muslimtify location gps off # disable GPS and go back to ipinfo lookup
| Argument | Description |
|---|---|
| (none) | Print GPS is enabled or GPS is disabled |
on | Probe for a receiver, and enable GPS only if one is reachable |
off | Disable GPS and use ipinfo.io network geolocation |
-h, --help | Show the help for this subcommand |
Where the coordinates come from depends on the platform:
| Platform | Source | Requirement |
|---|---|---|
| Linux | A running gpsd, read over a local socket on 127.0.0.1:2947 | gpsd installed and running, with a GPS device attached |
| Windows | The WinRT Geolocator | Location access enabled under Settings > Privacy & security > Location |
gps on is a validating enable. It probes the receiver first and only saves the setting if one is actually available, so a typo or a missing daemon fails immediately instead of silently degrading later. Two outcomes enable GPS:
- A fix is ready now, confirmed with the detected coordinates.
- A device is present but has no fix yet. GPS is enabled anyway and
ipinfo.iois used until a fix arrives.
Everything else leaves GPS disabled and reports why:
| Message | Meaning |
|---|---|
GPS: cannot reach gpsd. Install and start it, then try again. | No gpsd is listening on the local socket |
GPS: no GPS device detected. Connect one, then try again. | gpsd is running but reports no device |
GPS: location access is turned off. | Windows location permission is denied |
GPS not available in this build. | The binary has no GPS client for this platform |
GPS supplies coordinates only, never a timezone. The timezone is taken from the host system when a GPS fix is used, so set it explicitly with
--timezoneif the machine's clock is in a different region.
Toggling GPS clears the cached prayer times so the next run recomputes them from the new source.
muslimtify method
Show or set the calculation method used to derive prayer times.
muslimtify method # show the current method
muslimtify method mwl # set a method by key
muslimtify method --auto # auto-select the method from your country
muslimtify method --list # list all available methods
Available methods
| Key | Method | Region |
|---|---|---|
mwl | Muslim World League | Europe, Far East |
makkah | Umm al-Qura, Makkah | Arabian Peninsula |
isna | ISNA | North America |
egypt | Egyptian General Authority | Africa, Middle East |
karachi | Univ. Islamic Sciences, Karachi | Pakistan, India, Bangladesh |
turkey | Diyanet, Turkey | Turkey |
singapore | MUIS, Singapore | Singapore |
jakim | JAKIM, Malaysia | Malaysia |
kemenag | KEMENAG, Indonesia | Indonesia (default) |
france | UOIF, France | France |
russia | Spiritual Admin., Russia | Russia |
dubai | GAIAE, Dubai | UAE |
qatar | Min. of Awqaf, Qatar | Qatar |
kuwait | Min. of Awqaf, Kuwait | Kuwait |
jordan | Min. of Awqaf, Jordan | Jordan |
gulf | Gulf Region | Gulf states |
tunisia | Min. of Religious Affairs, Tunisia | Tunisia |
algeria | Min. of Religious Affairs, Algeria | Algeria |
morocco | Min. of Habous, Morocco | Morocco |
portugal | Comunidade Islamica de Lisboa | Portugal |
moonsighting | Moonsighting Committee | Worldwide |
For a custom method, set "method": "custom" in config.json with your own fajr_angle and isha_angle (in degrees).
muslimtify madzhab
Show or set the madzhab, which affects the Asr calculation.
muslimtify madzhab # show the current madzhab
muslimtify madzhab shafi # Shafi'i (default)
muslimtify madzhab hanafi # Hanafi
muslimtify madzhab --list # list madzhab options
muslimtify notification
Show or configure the notifications and reminders shown around each prayer.
muslimtify notification # show current settings
muslimtify notification --json # show settings as JSON
muslimtify notification --headless # show settings as key=value
Prayer names accepted below are fajr, dhuhr, asr, maghrib, and isha (or all). sunrise and dhuha were accepted until prayertimes.h v0.2.0 removed them, since neither is a prescribed prayer.
Enable / disable a prayer
muslimtify notification enable fajr # enable Fajr notifications
muslimtify notification disable asr # disable Asr notifications
muslimtify notification enable all # enable every prayer
Reminders
Set one or more reminders that fire a number of minutes before the Adhan. Each value is minutes (1–1440).
muslimtify notification --reminder fajr 30 15 5 # reminders for a single prayer
muslimtify notification --reminder --all 30 15 5 # the same reminders for every prayer
muslimtify notification --reminder fajr none # clear Fajr's reminders
Urgency
Set the desktop notification urgency level.
muslimtify notification --urgency normal # normal | critical | low
Adhan
Play (and configure) the Adhan per prayer.
muslimtify notification --adhan enable maghrib # play adhan for Maghrib
muslimtify notification --adhan disable fajr # stop playing adhan for Fajr
muslimtify notification --adhan set /path/to/adhan.mp3 # set a custom adhan file
Sound mode
Choose what sound the notification itself plays.
muslimtify notification --sound adhan # adhan | default | off
muslimtify offset
Shift a prayer time by a fixed number of minutes to fine-tune it against your local mosque. The value is a signed integer from -60 to 60.
muslimtify offset fajr +4 # shift Fajr 4 minutes later
muslimtify offset asr -2 # shift Asr 2 minutes earlier
muslimtify offset all 0 # reset the offset for every prayer
muslimtify daemon
Manage the background service that watches the clock and fires notifications.
muslimtify daemon install # register and start the background service
muslimtify daemon status # check whether the service is running (also the default)
muslimtify daemon uninstall # stop and remove the background service
On Linux the daemon is registered with systemd. Run muslimtify daemon status after installing to confirm it is active.
Other commands
muslimtify version # show version information
muslimtify help # show the top-level help message