MELI(7)

πŸ’Œ meli(7) β€” the manual page bestie, come get your mail client tutorial ✨

Miscellaneous Information Manual Β· meli(7)


🌸 NAME 🌸

meli β€” the tutorial for the meli terminal e-mail client, and yes it's a whole vibe, iykyk πŸ’…


✨ SYNOPSIS ✨

meli [...]

πŸ¦‹ DESCRIPTION πŸ¦‹

meli is a terminal mail client that is aiming for extensive and user-friendly configurability. like, it really wants you to be able to make it yours, no cap.

                              ^^      .-=-=-=-.  ^^
                          ^^        (`-=-=-=-=-`)         ^^
                                  (`-=-=-=-=-=-=-`)  ^^         ^^
                            ^^   (`-=-=-=-=-=-=-=-`)   ^^
                                ( `-=-=-=-(@)-=-=-` )      ^^
                                (`-=-=-=-=-=-=-=-=-`)  ^^
                                (`-=-=-=-=-=-=-=-=-`)          ^^
                                (`-=-=-=-=-=-=-=-=-`)
                         ^^     (`-=-=-=-=-=-=-=-=-`)  ^^
                            ^^   (`-=-=-=-=-=-=-=-`)          ^^
                                  (`-=-=-=-=-=-=-`)  ^^
                           ^^       (`-=-=-=-=-`)
                                     `-=-=-=-=-`          ^^

πŸŽ€ INTRODUCTION πŸŽ€

To quit meli, press ⟨q⟩ (shortcuts.general.quit) β€” literally at any time. like, whenever. bestie, you're never trapped in there. 🫢

When you launch it for the very first time, meli goes looking for its configuration directory: $XDG_CONFIG_HOME/meli/. If that doesn't exist yet, it's gonna ask you if you wanna create one, and it'll hand you a sample configuration file ($XDG_CONFIG_HOME/meli/config.toml) that already has the basic settings you need for setting up accounts, so you can just copy and edit right away. iconic behavior tbh. πŸ’–

See meli.conf(5) for all the available configuration options. πŸ‘‘

At any time you can press ⟨?⟩ (shortcuts.general.toggle_help) and get a searchable list of every available action and shortcut, plus every possible setting and command that your version supports. it's giving built-in documentation, we love to see it ✨

Every time a shortcut shows up in this document, there's a parenthesis right next to it with the name of the shortcut setting and its section in the config settings, so you can modify it if you want. so thoughtful of it fr fr.

For example, to set the toggle_help shortcut mentioned in the paragraph above, add this to your configuration:

[shortcuts]
general.toggle_help = 'F1'

Or alternatively:

[shortcuts.general]
toggle_help = 'F1'

To go to the next tab on the right, press ⟨T⟩ (shortcuts.general.next_tab). πŸŽ€


πŸ’… INTERACTING WITH meli πŸ’…

You will be interacting with meli in four primary ways:

  1. keyboard shortcuts in NORMAL mode.
  2. commands with arguments in COMMAND mode.
  3. regular text input in text input widgets in INSERT mode.
  4. any kind of input that gets passed directly into an embedded terminal in EMBED mode.

🌈 MODES 🌈

meli is a modal application, just like vi(1). This means that pressing the same keys in different modes would yield different results. The way that it lets you separate how the input is interpreted without needing to focus your input with a mouse? obsessed. 😌

  • NORMAL β€” This is the default mode of meli. All keyboard shortcuts work in this mode. main character mode, honestly. πŸ‘‘
  • COMMAND β€” Commands are issued in COMMAND mode, by default started with ⟨:⟩ (shortcuts.general.enter_command_mode) and exited with the ⟨Esc⟩ key.
  • EMBED β€” This is the mode of the embed terminal emulator. To exit an embedded application, issue ⟨Ctrl-C⟩ to kill it, or ⟨Ctrl-Z⟩ to stop the program and then follow the instructions on meli to exit.
  • INSERT β€” This mode is entered when pressing ⟨Enter⟩ on a cursor-selected text input field, and it captures all input as text input. It is exited with the ⟨Esc⟩ key.

⭐ ACTIVE SHORTCUTS POPUP ⭐

By pressing ⟨?⟩ (shortcuts.general.toggle_help) at any time, the shortcuts popup display status gets toggled. You can find all valid shortcuts for the current UI state you are in. πŸ”₯

β”Œβ”€shortcuts──Press ? to close────────────────────────────────┐
β”‚                                                           β–€β”‚
β”‚  use COMMAND "search" to find shortcuts                   β–ˆβ”‚
β”‚  Use Up, Down, Left, Right to scroll.                     β–ˆβ”‚
β”‚                                                           β–ˆβ”‚
β”‚  pager                                                    β–ˆβ”‚
β”‚                                                           β–ˆβ”‚
β”‚       PageDown  page_down                                 β–ˆβ”‚
β”‚         PageUp  page_up                                    β”‚
β”‚              j  scroll_down                                β”‚
β”‚              k  scroll_up                                  β”‚
β”‚                                                            β”‚
β”‚  view mail                                                 β”‚
β”‚                                                            β”‚
β”‚              c  add_addresses_to_contacts                  β”‚
β”‚              e  edit                                       β”‚
β”‚              u  toggle_url_mode                            β”‚
β”‚              a  open_attachment                            β”‚
β”‚              m  open_mailcap                               β”‚
β”‚              R  reply                                      β”‚
β”‚            C-r  reply_to_author                            β”‚
β”‚            C-g  reply_to_all                               β”‚
β”‚            C-f  forward                                    β”‚
β”‚            M-r  view_raw_source                            β”‚
β”‚              h  toggle_expand_headers                     β–„β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Shows active shortcuts in order of the widget hierarchy. 🧚


πŸ‘‘ MAIN VIEW πŸ‘‘

                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                          β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
                          β”‚___ β”‚  ___________     β”‚
                          β”‚ _  β”‚ _______________  β”‚
                          β”‚ _  β”‚__________________β”‚
                          β”‚ _  β”‚      ___________ β”‚
                          β”‚    β”‚  _____           β”‚
                          β”‚    β”‚                  β”‚
                          β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The main view's layout. πŸŽ€

This is the view you will spend the most time with in meli.

Press ⟨⟩</yellow> (shortcuts.listing.toggle_menu_visibility`) to toggle the sidebar's visibility.

Press ⟨Left⟩ (shortcuts.listing.focus_right) to switch focus onto the sidebar menu. Press ⟨Right⟩ (shortcuts.listing.focus_left) to switch focus onto the e-mail list.

On the e-mail list, press ⟨k⟩ (shortcuts.listing.scroll_up) to scroll up, and ⟨j⟩ (shortcuts.listing.scroll_down) to scroll down. Press ⟨Enter⟩ (shortcuts.listing.open_entry) to open an e-mail entry and ⟨i⟩ (shortcuts.listing.exit_entry) to exit it.

🫢 The sidebar 🫢

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‰β”‰β”‰β”‰β”‰βœ‚
β”‚ mail▐  contact liβœ‚
β”‚personal account  βœ‚
β”‚ 0  INBOX         βœ‚
β”‚ 1   ┣━Sent       βœ‚
β”‚ 2   ┣━Lists      βœ‚
β”‚ 3   ┃ ┣━meli-dev βœ‚
β”‚ 4   ┃ ┗━meli     βœ‚
β”‚ 5   ┣━Drafts     βœ‚
β”‚ 6   ┣━Trash      βœ‚
β”‚ 7   ┗━foobar     βœ‚
┇ 8  Trash         βœ‚
 βœ‚ βœ‚ βœ‚ βœ‚ βœ‚ βœ‚ βœ‚ βœ‚ βœ‚ βœ‚

Press ⟨k⟩ (shortcuts.listing.scroll_up) to scroll up, and ⟨j⟩ (shortcuts.listing.scroll_down) to scroll down.

Press ⟨Enter⟩ (shortcuts.listing.open_mailbox) to open an entry (either a mailbox or an account name). Entering an account name will show you a page with details about the account and its network connection, depending on the backend. πŸ¦‹

While focused in the sidebar, you can β€œcollapse” a mailbox tree, if it has children, and you can open it with ⟨Space⟩ (shortcuts.listing.toggle_mailbox_collapse). You can have mailbox trees collapsed on startup by default by setting a mailbox's collapsed setting to true.

See meli.conf(5) section MAILBOXES for details. πŸ‘‘

You can increase the sidebar's width with ⟨Ctrl-p⟩ (shortcuts.listing.increase_sidebar) and decrease it with ⟨Ctrl-o⟩ (shortcuts.listing.decrease_sidebar).

πŸ’– The status bar πŸ’–

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”ˆβ”ˆ
β”‚NORMAL | Mailbox: Inbox, Messages: 25772, New: 3006
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”ˆβ”ˆ

The status bar shows which mode you are in, and the status message of the current view. In the pictured example, it shows the status of a mailbox called β€œInbox” with lots of e-mails. (like, lots lots 😭)

πŸ”’ The number modifier buffer πŸ”’

 β”ˆβ”ˆβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            12 β”‚
 β”ˆβ”ˆβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Some commands may accept a number modifier. For example, scroll down commands can receive a multiplier n to scroll down n entries. Another use of the number buffer is opening URLs inside the pager.

See β€œPAGER” for an explanation of interacting with URLs in e-mails. πŸ”₯

Pressing numbers in NORMAL mode will populate this buffer. To erase it, press the ⟨Esc⟩ key. periodt. πŸ’…

✨ MAIL LIST ✨

okay so bestie, the mail list is where the magic happens and you have four different list styles to vibe with:

  • "plain" which shows one line per e-mail.
  • "threaded" which shows a threaded view with drawn tree structure.
  • "compact" which shows one line per thread which can include multiple e-mails.
  • "conversations" which shows more than one line per thread which can include multiple e-mails with more details about the thread.

🌸 Plain view.

                         β”‚42     Fri, 02 Sep 2022 19:51  xxxxxxxxxxxxx <  [PATCH 3/8] β”‚
                         β”‚43     Fri, 02 Sep 2022 19:51  xxxxxxxxxxxxx <  [PATCH 2/8] β”‚
                         β”‚44     Fri, 02 Sep 2022 19:51  xxxxxxxxxxxxx <  [PATCH 1/8] β”‚
                         |45     Fri, 02 Sep 2022 19:51  xxxxxxxxxxxxx <  [PATCH 0/8] |
                         β”‚46     Fri, 02 Sep 2022 18:18  xxxxxxxx <xxxxx  Re: [PATCH 3β”‚

πŸ¦‹ Threaded view.

                         β”‚12     9 hours ago            xxxxxxxxxxxxxxx    [PATCH v3 0β”‚
                         β”‚13     9 hours ago            xxxxxxxxxxxxxxx     β”œβ”€>[PATCH β”‚
                         β”‚14     9 hours ago            xxxxxxxxxxxxxxx     β”œβ”€>[PATCH β”‚
                         |15     9 hours ago            xxxxxxxxxxxxxxx     β”œβ”€>[PATCH |
                         β”‚16     9 hours ago            xxxxxxxxxxxxxxx     β”œβ”€>[PATCH β”‚
                         β”‚17     9 hours ago            xxxxxxxxxxxxxxx     └─>[PATCH β”‚
                         β”‚18     2022-08-23 01:23:51    xxxxxxxxxxxxxxx    [RFC v4 00/β”‚
                         β”‚19     2022-08-23 01:23:52    xxxxxxxxxxxxxxx     β”œβ”€>[RFC v4β”‚
                         |20     2022-08-30 10:30:16    xxxxxxxxxxxxxxx     β”‚ └─>     |
                         β”‚21     6 days ago             xxxxxxxxxxxxxxx     β”‚   └─>   β”‚
                         β”‚22     2022-08-23 01:23:53    xxxxxxxxxxxxxxx     β”œβ”€>[RFC v4β”‚

πŸ’… Compact view.

                         β”‚18  2022-…:38  xxxxxxxxxxxxxxx  [PATCH v3 3/3] u…_l() (2)   β”‚
                         |19  2022-…:49  xxxxxxxxxxxxxxx  [PATCH v8 0/7] A…e (3)      |
                         β”‚20  2022-…:10  xxxxxxxxxxxxxxx  [PATCH v8 2/7] f…s (2)      β”‚
                         β”‚21  2022-…:38  xxxxxxxxxxxxxxx  [PATCH v8 3/7] b…s (2)      β”‚
                         β”‚22  2022-…:53  xxxxxxxxxxxxxxx  [PATCH v6 00/10] p…g (31)   β”‚

πŸŽ€ Conversations view.

                         β”‚[PATCH v2] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (5)  β”‚
                         |1 day ago▁▁▁▁xxxxxxxxxxxxx <xxxxxxxxxxxxx@xxxxxxxxxx>, xxxxxβ”‚
                         β”‚                                                            |
                         β”‚[PATCH v2 0/8] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxβ”‚
                         β”‚1 day ago▁▁▁▁xxxxxxxxxxxxxxx <xxxxxxxxxx@xxxxxxxxxxxxxx>, xxβ”‚
                         |                                                            β”‚
                         β”‚[PATCH 0/2] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (4)    |
                         β”‚2 days ago▁▁▁▁xxxxxxxxxxxxxxxx <xxxxxxxx@xxxxxxxxxxx>, xxxxxβ”‚
                         β”‚                                                            β”‚
                         β”‚[PATCH 0/8] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (12)  β”‚
                         β”‚2 days ago▁▁▁▁xxxxxxxxxxxxx <xxxxxxxx@xxxxxxxxxx>, xxxxxxxxxβ”‚

🫢 Performing actions on entries and/or selections.

Hit ⟨V⟩ (shortcuts.listing.select_entry) to toggle the selection of a single entry, no cap. And ⟨v⟩ (shortcuts.listing.select_motion) can be prefixed by a number modifier and affixed by a scrolling motion (up or down) to select multiple entries at once β€” it's giving efficiency honestly.

You can also do simple set operations on a selection with these shortcut modifiers:

  • Union modifier: ⟨Ctrl-u⟩ (shortcuts.listing.union_modifier)
  • Difference modifier: ⟨Ctrl-d⟩ (shortcuts.listing.diff_modifier)
  • Intersection modifier: ⟨Ctrl-i⟩ (shortcuts.listing.intersection_modifier)

To set an entry as "read", use the ⟨n⟩ (shortcuts.listing.set_seen) shortcut. To set an entry as "unread", use the command

 set unseen

which also has its complement

 set seen

action. πŸ’–

For e-mail backends that support flags you can use the following commands on entries and selections to modify them:

 flag set FLAG

 flag unset FLAG

For e-mail backends that support tags (like "IMAP" or "notmuch") you can use the following commands on entries and selections to modify them:

 tag add TAG

 tag remove TAG

(see meli.conf(5) TAGS, settings colors and ignore_tags for how to set tag colors and tag visibility) πŸŽ€

You can clear the selection with the ⟨Esc⟩ key. periodt.


✨ PAGER ✨

You can open an e-mail entry by pressing ⟨Enter⟩ (shortcuts.listing.open_entry). This brings up the e-mail view with the e-mail content inside a pager. iconic behavior.

                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚Date: Sat, 21 May 2022 16:16:11 +0300                      β–€β”‚
                         β”‚From: Narrator <narrator@example.com>                      β–ˆβ”‚
                         β”‚To: Stanley <427@example.com>                              β–ˆβ”‚
                         β”‚Subject: The e-mail ending                                 β–ˆβ”‚
                         β”‚Message-ID: <gambheerata@example.com>                      β–ˆβ”‚
                         β”‚                                                           β–ˆβ”‚
                         β”‚The story, and the choices, or what have you, and thereforeβ–ˆβ”‚
                         β”‚by becoming it is! So on and so forth, until inevitably, we β”‚
                         β”‚all until the end of time. At which time, everything all at β”‚
                         β”‚once, so now you see? Blah, blah, blah, rah, rah, rah...    β”‚
                         β”‚We've eaten too much and it can't be just yet. No, no!      β”‚
                         β”‚Until two-hundred and forty-five! But the logic of          β”‚
                         β”‚elimination, working backwards, the deduction therefore     β”‚
                         β”‚becomes impossible to manufacture. It went on for nearly    β”‚
                         β”‚ten thousand years, until just yesterday. Here and there,   β”‚
                         β”‚forward and back, and never a moment before lunchtime. It   β”‚
                         β”‚can't be! It's the only thing there is! How many billions   β”‚
                         β”‚left until so much more than forever ago! Which is why I    β”‚
                         β”‚say:                                                        β”‚
                         β”‚                                                            β”‚
                         β”‚The story, and the choices, or what have you, and therefore β”‚
                         β”‚by becoming it is! So on and so forth, until inevitably, weβ–„β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The pager displaying an e-mail.

The pager is simple to use, bestie. Scroll with the following:

Go to next pager page β€” ⟨PageDown⟩ (shortcuts.pager.page_down)

Go to previous pager page β€” ⟨PageUp⟩ (shortcuts.pager.page_up)

Scroll down pager. β€” ⟨j⟩ (shortcuts.pager.scroll_down)

Scroll up pager. β€” ⟨k⟩ (shortcuts.pager.scroll_up)

All scrolling shortcuts can be prefixed with a number modifier which will act as a multiplier. ✨

The pager can enter a special url mode which will prefix all detected hyperlinks and e-mail addresses with a number inside square brackets ⟨u⟩ (shortcuts.pager.toggle_url_mode). Writing down a chosen number as a number modifier and pressing ⟨g⟩ (shortcuts.envelope_view.go_to_url) will attempt to open the link with the system's default open command (xdg-open(1) in supported OSes, and open(1) on MacOS). To override with a custom launcher, see "pager" configuration setting "url_launcher" (see meli.conf(5) PAGER for more details). πŸ”₯


🌈 MAIL VIEW 🌈

Other things you can do when viewing e-mail, queen:

  • Most importantly, you can exit the mail view with: ⟨i⟩ (shortcuts.listing.exit_entry) β€” yeah you gotta be able to leave, that's self care fr fr.
  • Add addresses from the e-mail headers to contacts: ⟨c⟩ (shortcuts.envelope_view.add_addresses_to_contacts)
  • Open an attachment by entering its index as a number modifier and pressing: ⟨a⟩ (shortcuts.envelope_view.open_attachment)
  • Open an attachment by its mailcap(4) entry by entering its index as a number modifier and pressing: ⟨m⟩ (shortcuts.envelope_view.open_mailcap)
  • Reply to envelope: ⟨R⟩ (shortcuts.envelope_view.reply)
  • Reply to author: ⟨Ctrl-r⟩ (shortcuts.envelope_view.reply_to_author)
  • Reply to all/Reply to list/Follow up: ⟨Ctrl-g⟩ (shortcuts.envelope_view.reply_to_all)
  • Forward e-mail: ⟨Ctrl-f⟩ (shortcuts.envelope_view.forward)
  • Expand extra headers: (References and others) ⟨h⟩ (shortcuts.envelope_view.toggle_expand_headers)
  • View envelope source in a pager: (toggles between raw and decoded source) ⟨M-r⟩ (shortcuts.envelope_view.view_raw_source)
  • Return to envelope_view if viewing raw source or attachment: ⟨r⟩ (shortcuts.envelope_view.return_to_normal_view)

πŸ’–

πŸ’Œ COMPOSING πŸ’Œ

okay bestie, this is the part where you actually write the email, and honestly? it's giving main character energy. ✨

You've got two ways in:

  • Wanna start fresh with a blank draft? smash ⟨m⟩ (shortcuts.listing.new_mail) and a composer view pops open in a brand new tab. fresh start, clean slate, we love that for you. πŸ¦‹
  • Wanna reply to one specific email? hop into envelope view and pick your fighter:
    • Reply to envelope. ⟨R⟩ (shortcuts.envelope_view.reply)
    • Reply to author. ⟨Ctrl-r⟩ (shortcuts.envelope_view.reply_to_author)
    • Reply to all. ⟨Ctrl-g⟩ (shortcuts.envelope_view.reply_to_all)

To launch your editor, press ⟨e⟩ (shortcuts.composing.edit). To send your draft, press ⟨s⟩ (shortcuts.composing.send_mail). And if you wanna save it but NOT send it yet (valid, honestly), enter the command

 close

and then select "save as draft". To get back to it later, go to your "Drafts" mailbox and hit ⟨e⟩ (shortcuts.envelope_view.edit). your draft was literally just chilling there waiting for you, no cap. πŸ’…

                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚ mail▐  contact list  ▐  composing  β–β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚
                         β”‚          COMPOSING MESSAGE                                 β”‚
                         β”‚          Date     Mon, 05 Sep 2022 17:49:19 +0300          β”‚
                         β”‚          From     myself <myself@example.com>β–‘β–‘β–‘β–‘          β”‚
                         β”‚          To       friend <myfriend@example.com>β–‘β–‘          β”‚
                         β”‚          Cc       β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘          β”‚
                         β”‚          Bcc      β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘          β”‚
                         β”‚          Subject  This is my subject!β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘          β”‚
                         β”‚                                                            β”‚
                         β”‚          no attachments                                    β”‚
                         β”‚          ☐ don't sign                                      β”‚
                         β”‚          ☐ don't encrypt                                   β”‚
                         β”‚                                                            β”‚
                         β”‚          Hello friend!β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘         β”‚
                         β”‚          β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘         β”‚
                         β”‚          β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘         β”‚
                         β”‚                                                            β”‚
                         β”‚NORMAL | Mailbox: Inbox, Messages: 25772, New: 3006         β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

See those lightly highlighted cells? those are your text input fields, bestie. type away. βŒ¨οΈπŸ’–

If you enable the embed terminal option, you can launch your terminal editor of choice when you press edit. iconic behaviour honestly:

                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚ mail▐  contact list  ▐  composing  β–β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚
                         β”‚   β•“COMPOSING MESSAGEβ”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β”„β•–   β”‚
                         β”‚   β•‘ p/v/f/h/5/T/m/07f56b6e-ec09-49d9-b8d8-f0c5a81e7826 β•‘   β”‚
                         β”‚   β•‘  7 Date: Mon, 05 Sep 2022 18:43:10 +0300           β•‘   β”‚
                         β”‚   β•‘  6 From: Mister Cardholder <mrholder@example.com>  β•‘   β”‚
                         β”‚   β•‘  5 To:                                             β•‘   β”‚
                         β”‚   β•‘  4 Cc:                                             β•‘   β”‚
                         β”‚   β•‘  3 Bcc:                                            β•‘   β”‚
                         β”‚   β•‘  2 Subject:                                        β•‘   β”‚
                         β”‚   β•‘  1 User-Agent: meli 0.7.2                          β•‘   β”‚
                         β”‚   β•‘8 β–ˆ                                                 β•‘   β”‚
                         β”‚   β•‘~                                                   β•‘   β”‚
                         β”‚   β•‘~                                                   β•‘   β”‚
                         β”‚   β•‘~                                                   β•‘   β”‚
                         β”‚   β•‘~                                                   β•‘   β”‚
                         β”‚   β•‘ N…  <6e-ec09-49d9-b8d8-f0c5a81e7826   100% ㏑:8 β„…:1β•‘   β”‚
                         β”‚   β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•   β”‚
                         β”‚                                                            β”‚
                         β”‚                                                            β”‚
                         β”‚ ☐ don't sign                                               β”‚
                         β”‚ ☐ don't encrypt                                            β”‚
                         β”‚ no attachments                                             β”‚
                         β”‚                                                            β”‚
                         β”‚EMBED | Mailbox: Inbox, Messages: 25772, New: 3006          β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

That's nvim(1) running inside the composing tab, fr fr. 🧚

The double line border annotates the area of the embedded terminal β€” the actual embedding is seamless. (the border is just there to be like "hey, this is the terminal zone", the vibe itself is uninterrupted πŸ’«)

composing mail commands πŸ› οΈ

  • add-attachment PATH β€” in composer, add PATH as an attachment. drag that file into the conversation, queen. πŸ“Ž
  • add-attachment < CMD ARGS β€” in composer, pipe CMD ARGS output into an attachment. command output but make it an attachment. πŸ”₯
  • add-attachment-file-picker β€” Launch command defined in the configuration value file_picker_command in meli.conf(5) TERMINAL. yes, TERMINAL is literally the config section name. iykyk.
  • add-attachment-file-picker < CMD ARGS β€” Launch command CMD ARGS. The command should print file paths in stdout, separated by NUL bytes. Example usage with fzf:
add-attachment-file-picker < fzf --print0

cute, right? πŸŽ€

  • remove-attachment INDEX β€” remove attachment with given INDEX. (just the one at that index, don't come for the others πŸ’€)
  • toggle sign β€” toggle between signing and not signing this message. If the gpg invocation fails then the mail won't be sent. See meli.conf(5) PGP for PGP configuration. no gpg, no send, periodt.
  • save-draft β€” saves a copy of the draft in the Draft folder. it's safe, it's cozy, it's in Draft. 🫢

🎨 THEMES 🎨

See meli-themes(5) for documentation on how to theme meli.

that's it, that's the whole section β€” but the theme docs are where the real glow-up lives, bestie. go make it yours. 🌈


πŸ‘€ SEE ALSO πŸ‘€

meli(1), meli.conf(5), meli-themes(5), xdg-open(1), mailcap(5)


πŸ‘‘ AUTHORS πŸ‘‘

Copyright 2017–2024 Manos Pitsidianakis <manos@pitsidianak.is>

Released under the GPL, version 3 or greater. This software carries no warranty of any kind. (See COPYING for full copyright and warranty notices.)

not me reminding you again: no warranty of any kind. read the COPYING file if you want the full receipts. πŸ“œ

okay that's a wrap on the whole page, bestie!! πŸŽ‰πŸ’– This one came from Debian, dated March 10, 2024, and it's page MELI(7) β€” go forth and compose something iconic. mwah. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from