MHICAL(1)

πŸ“¦
version 1.8 Β· 4 versions
, in alpine 3.24, epel 10, epel 9, fedora 43, fedora 44

πŸ’– MHICAL(1) πŸ’–

nmh's iconic manipulator of iCalendar event requests πŸ—“οΈβœ¨

okay bestie, listen β€” this is mhical, and she's the girl who handles your iCalendar (.ics) event requests. display them, reply to them, cancel them. iCalendar event requests and replies are defined by RFC 5545, no cap.


✨ SYNOPSIS ✨

mhical [-help] [-version] [-form formatfile] [-format formatstring]
     [[-reply accept | decline | tentative] | -cancel] [-attendee
     address] [-contenttype] [-infile infile] [-outfile outfile]
     [-unfold] [-debug]

🌸 DESCRIPTION 🌸

so mhical manipulates an iCalendar (.ics) event request β€” she can display it, generate a reply to it, or cancel it. iCalendar event requests and replies are defined by RFC 5545. periodt.

the default operation is just to display the iCalendar event request in a human-readable format. like, she'll show you the tea in a way your eyeballs can actually parse. πŸ‘‘

for the display operation, the -format string and -form formatfile switches can be used to specify a format string or a format file to read. if you give her a format string, it must be specified as a single argument to the -format switch β€” one argument, no splitting, don't try it. if you give her a format file name with -form, the file is searched for using the normal nmh rules:

  • absolute pathnames are accessed directly
  • tilde expansion is done on usernames
  • files are searched for in the user's Mail directory as specified in their profile
  • if not found there, the directory /etc/nmh is checked

mhical defaults to using a format file named mhical.24hour, and will use the one installed in the /etc/nmh directory if not found elsewhere. so she always has a fit to wear. πŸ’…

the following format components are supported:

method
organizer
summary
description
location
dtstart
dtend
attendees

those format names are case-sensitive, bestie β€” Summary is not summary, she's not gonna forgive that. each corresponds to the iCalendar property of the same name as defined in RFC 5545, with the exception of attendees. that one is a comma-delimited list of the common name (CN), if available, or the email address of Attendee properties. a maximum of 20 will be displayed β€” so if you invited the whole group chat, only the first 20 get to shine. 😭

πŸ•°οΈ Timezone

mhical will display the event with times converted to the timezone specified by the TZ environment variable, if it is set β€” see tzset(3). if it's not set, its behavior is implementation defined, but it may use the user's local timezone. so like... she might know where you are, she might not. vibe check. 🌍

πŸ’Œ Reply

the -reply switch generates a reply from the event request. the required action parameter must be one of accept, decline, or tentative. delegation is not supported β€” sorry babe, you cannot hand this off to someone else. πŸ™ˆ

if one of your mailboxes matches more than one attendee in the request, the -attendee switch must be used to select the one to use in the reply. the -attendee switch can also be used to specify the attendee address if no attendees match any of your mailboxes. basically: if there's ambiguity, you gotta tell her who you are. main character selection energy. πŸ‘‘

🚫 Cancel

the -cancel switch generates an iCalendar event that can be used to cancel the event request. ghosting, but politely and in a machine-readable format. πŸ’€

πŸ“₯πŸ“€ Input/Output

by default, mhical reads from standard input and writes to standard output. the -infile and -outfile switches, respectively, can be used to override these defaults. so you can pipe her around like the icon she is. 🫢

πŸŽ€ Miscellaneous Switches

  • -contenttype β€” instructs mhical to insert a Content-Type header at the beginning of its output, for use by mhbuild. it can only be used with -reply and -cancel. no solo runs. πŸ’…
  • -unfold β€” echoes the event request, but with all lines unfolded. everything laid out flat, nothing hidden. ✨
  • -debug β€” reveals minute details of the parse process. she will literally narrate her own thoughts to you. it's giving behind-the-scenes commentary. πŸ¦‹

πŸ“ FILES πŸ“

mhical looks for format files in multiple locations:

  • absolute pathnames are accessed directly
  • tilde expansion is done on usernames
  • files are searched for in the user's Mail directory as specified in their profile
  • if not found there, the directory /etc/nmh is checked

then the actual files:

  • /etc/nmh/mhical.24hour β€” the default display template
  • /etc/nmh/mhical.12hour β€” display template that uses 12-hour clock

two templates, two moods. pick your clock, bestie. ⏰


πŸ‘€ SEE ALSO πŸ‘€

mhbuild(1), mh-format(5), mh-profile(5), tzset(3), repl(1)

the whole friend group. go say hi. 🫢


🌟 DEFAULTS 🌟

  • -form defaults to mhical.24hour
  • -infile defaults to standard input
  • -outfile defaults to standard output

she comes with presets, she's low maintenance. πŸ’–


πŸ’€ BUGS πŸ’€

mhical supports only a very limited subset of RRULE formats. specifically, only a frequency of YEARLY and an interval of 1 are supported. so don't come at her with your wild recurring-event fantasies, she cannot. 😭

mhical produces output with just newlines instead of carriage return-newline combinations. this is intentional, to fit with typical nmh convention. it's not a bug, it's a choice. periodt. πŸ’…


and that's the whole page, bestie!! this gorgeous specimen comes to you from nmh-1.8, dated 2015-01-04. iconic, timeless, still slaying. mwah. πŸ’–βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from