---
name: "mhical"
section: "1mh"
platform: "linux"
package: "nmh"
version: "1.8-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mhical"
---

# mhical(1mh)

nmh's manipulator of iCalendar event requests

## NAME

mhical - nmh's manipulator of iCalendar event requests

## SYNOPSIS

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

## DESCRIPTION

**mhical** manipulates an iCalendar (.ics) event request, to display it, generate a reply to it, or cancel it.  iCalendar event requests and replies are defined by RFC 5545.

The default operation is to display the iCalendar event request in a human-readable format.

For the display operation, the **-format** *string* and **-form** *formatfile* switches may be used to specify a format string or a format file to read. If given a format string, it must be specified as a single argument to the **-format** switch.  If given 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, and 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.

The following format components are supported:

```
^method~^
^organizer~^
^summary~^
^description~^
^location~^
^dtstart~^
^dtend~^
^attendees~^
```

Those format names are case-sensitive.  Each corresponds to the iCalendar property of the same name as defined in RFC 5545, with the exception of **attendees**. That is a comma-delimited list of the common name (CN), if available, or email address of Attendee properties.  A maximum of 20 will be displayed.

### 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)](/tzset/3.md).  If not set, its behavior is implementation defined, but may use the user's local timezone.

### 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.

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.

### Cancel

The **-cancel** switch generates an iCalendar event that can be used to cancel the event request.

### Input/Output

By default, **mhical** reads from standard input and writes to standard output.  The **-infile** and **-outfile**, respectively, switches can be used to override these defaults.

### Miscellaneous Switches

The **-contenttype** switch 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**.

The **-unfold** switch echoes the event request, but with all lines unfolded.

The **-debug** switch reveals minute details of the parse process.

## FILES

**mhical** looks for format files in multiple locations:  absolute pathnames are accessed directly, tilde expansion is done on usernames, and 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.

```
^/etc/nmh/mhical.24hour~^The default display template
^/etc/nmh/mhical.12hour~^Display template that uses 12-hour clock
```

## SEE ALSO

[*mhbuild*(1)](/mhbuild/1.md), [*mh-format*(5)](/mh-format/5.md), [*mh-profile*(5)](/mh-profile/5.md), [*tzset*(3)](/tzset/3.md), [*repl*(1)](/repl/1.md)

## DEFAULTS

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

## BUGS

**mhical** supports only a very limited subset of RRULE formats.  Specifically, only a frequency of YEARLY and an interval of 1 are supported.

**mhical** produces output with just newlines instead of carriage return-newline combinations.  This is intentional, to fit with typical **nmh** convention.
