Skip to main content

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:

FlagOutput
(none)Tabular, human-readable (default)
--jsonStructured JSON
--headlessPlain 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:

LimitValueBehaviour when exceeded
Year1 to 9999The date is rejected as malformed
Range span366 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.

FlagDescription
--autoDetect 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

--auto may be combined only with --city and/or --country. It cannot be mixed with --lat, --long, or --timezone.

Setting coordinates manually with --lat / --long turns auto-detection off, so the location is never re-checked. --refresh-interval only 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 as Africa/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
ArgumentDescription
(none)Print GPS is enabled or GPS is disabled
onProbe for a receiver, and enable GPS only if one is reachable
offDisable GPS and use ipinfo.io network geolocation
-h, --helpShow the help for this subcommand

Where the coordinates come from depends on the platform:

PlatformSourceRequirement
LinuxA running gpsd, read over a local socket on 127.0.0.1:2947gpsd installed and running, with a GPS device attached
WindowsThe WinRT GeolocatorLocation 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.io is used until a fix arrives.

Everything else leaves GPS disabled and reports why:

MessageMeaning
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 --timezone if 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

KeyMethodRegion
mwlMuslim World LeagueEurope, Far East
makkahUmm al-Qura, MakkahArabian Peninsula
isnaISNANorth America
egyptEgyptian General AuthorityAfrica, Middle East
karachiUniv. Islamic Sciences, KarachiPakistan, India, Bangladesh
turkeyDiyanet, TurkeyTurkey
singaporeMUIS, SingaporeSingapore
jakimJAKIM, MalaysiaMalaysia
kemenagKEMENAG, IndonesiaIndonesia (default)
franceUOIF, FranceFrance
russiaSpiritual Admin., RussiaRussia
dubaiGAIAE, DubaiUAE
qatarMin. of Awqaf, QatarQatar
kuwaitMin. of Awqaf, KuwaitKuwait
jordanMin. of Awqaf, JordanJordan
gulfGulf RegionGulf states
tunisiaMin. of Religious Affairs, TunisiaTunisia
algeriaMin. of Religious Affairs, AlgeriaAlgeria
moroccoMin. of Habous, MoroccoMorocco
portugalComunidade Islamica de LisboaPortugal
moonsightingMoonsighting CommitteeWorldwide

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