elm
Start and manage email messages
TLDR
Initialize an Elm project, generates an elm.json file
Start interactive Elm shell
Compile an Elm file, output the result to an index.html file
Compile an Elm file, output the result to a JavaScript file
Start local web server that compiles Elm files on page load
Install Elm package from
SYNOPSIS
elm [options...] [folder]
PARAMETERS
-a
Toggle ALL flag on startup
-A
Read ALL folders
-c
Create new folders
-d level
Set debug level
-D name[=value]
Define macro
-f folder
Select initial folder/mailbox
-F format
Set From: header format
-h
Display help summary
-H headers
Headers to display
-i file
Initial keystrokes file
-I index-spec
Initial index format
-k
Keep empty folders
-l
List folder summary
-L logspec
Set logging
-m
Enable MIME support
-n
No folder locking
-N num
Start at message number
-o
Simple menu mode
-p program
Set pager program
-q
Quit immediately
-r | -R
Set Reply-To or From header
-s subject
Set initial Subject
-S format
Sort index format
-t
Toggle threading
-T type
Terminal type
-u user
Remote user for POP/IMAP
-v
Verbose mode
-V var=value
Set variable
-w
Watch for new mail
-x
Expert mode (no prompts)
--help
Show full help
DESCRIPTION
Elm is a lightweight, full-screen email user agent (MUA) for Unix-like systems, designed for efficient terminal-based email management. It offers an intuitive menu-driven interface with keyboard navigation for reading, replying, forwarding, and deleting messages. Key features include folder support for organizing mail, alias files for address books, automatic sorting rules, MIME attachment handling, and basic search capabilities. Users can compose messages with a built-in editor, supporting headers like Subject and Cc. Elm reads from local mailboxes (Maildir, mbox formats) and supports POP/IMAP in compiled variants.
Unlike command-line tools like mailx, Elm provides visual threading, message indexing, and status lines for headers, making it suitable for power users preferring keyboard efficiency over graphical clients. It's highly configurable via ~/.elm/elm.rc, allowing custom key bindings, display formats, and filters. Though dated, it remains functional on modern systems with minimal dependencies.
CAVEATS
Elm is legacy software with limited maintenance; lacks full UTF-8, modern crypto (PGP/S/MIME optional), and HTML rendering. May require terminfo tweaks for some terminals. Not recommended for primary use over mutt or Thunderbird.
CONFIGURATION
Main config: ~/.elm/elm.rc. Sets variables like folder-default, editor, alias-file. Sample in /etc/elm/elm.rc or /usr/share/elm.
KEY BINDINGS
Arrow keys navigate; h/l previous/next; r reply; f forward; d delete; s save; ? help. Customizable in elm.rc.
FOLDERS
Uses ~/.elm/Mail/ for folders. Commands: c change, + new, copy move messages.
HISTORY
Developed by Dave Taylor in 1986 at U.C. Berkeley; first release 1987. Evolved through versions 1.x to 2.4 ML (1998), adding MIME, IMAP. Maintained sporadically by Michael Elkins and elm-dev group until early 2000s. Still packaged in many distros as 'heirloom-mailx' or standalone.


