Fork of the aerc email client (https://sr.ht/~rjarry/aerc)
Go to file
Reto Brunner 1687e558d3 notmuch/maildir: remove double emit of the dirinfo
There was some bug which could be worked around by double emitting an event.
However that proofed to be brittle:

We send the first message here from the worker goroutine:
https://git.sr.ht/~sircmpwn/aerc/tree/a5553438/item/worker/maildir/worker.g=
o#L306

Then Tick() is waked in the main goroutine and calls ProcessMessage:
https://git.sr.ht/~sircmpwn/aerc/tree/a5553438/item/widgets/account.go#L100

ProcessMessage in the main goroutine reads types.Message state with
msg.getId() and msg.InResponseTo():
https://git.sr.ht/~sircmpwn/aerc/tree/a5553438/item/worker/types/worker.go#=
L74-76

Meanwhile in the worker goroutine we call PostMessage for a second
time with a pointer that points to the *same* previous message that
ProcessMessage is reading:
https://git.sr.ht/~sircmpwn/aerc/tree/a5553438/item/worker/maildir/worker.g=
o#L306

The second PostMessage call makes writes to message while
ProcessMessage in the main goroutine is possibly reading:
https://git.sr.ht/~sircmpwn/aerc/tree/a5553438/item/worker/types/worker.go#=
L59

This led to a data race in the event loop

Reported-By: Wagner Riffel <w@104d.net>
2021-04-28 07:54:16 +02:00
commands add mimeType to OriginalMail struct for both forward and reply 2021-03-07 14:52:42 +01:00
completer Strip trailing newline from address book entries without names 2020-01-09 14:32:22 -05:00
config load config: do not overwrite the config upon error 2021-04-17 18:57:19 +02:00
contrib Add contrib/_incr_version 2020-05-19 12:12:18 -04:00
doc add mimeType to OriginalMail struct for both forward and reply 2021-03-07 14:52:42 +01:00
filters Strip carriage returns (^M) when filtering emails 2019-08-20 16:05:20 +09:00
lib FindFirstNonMultipart: return the proper path 2021-03-07 14:52:42 +01:00
models models: add RFC822 headers to OriginalMail 2020-11-14 15:40:13 +01:00
templates fix typo in quoted reply template 2021-03-07 23:25:04 +01:00
widgets widgets/terminal: Only call vterm.ScreenCell.Attrs once in styleFromCell 2021-04-13 01:32:45 +02:00
worker notmuch/maildir: remove double emit of the dirinfo 2021-04-28 07:54:16 +02:00
.build.yml Update .build.yml 2020-07-29 15:27:51 -04:00
.gitignore Subsitute prefix in aerc.conf for install 2019-05-26 10:27:22 -04:00
LICENSE Add README.md, update license (MIT -2019) 2019-01-13 20:09:07 -05:00
Makefile Makefile: use git version string if we can 2021-02-07 19:25:06 +01:00
README.md Freshen up readme with binary packages 2020-12-27 10:02:47 +01:00
aerc.go aerc: try to recover from a panic 2021-02-11 21:02:46 +01:00
go.mod update tcell to v2 and enable TrueColor support 2020-12-18 07:23:22 +01:00
go.sum update tcell to v2 and enable TrueColor support 2020-12-18 07:23:22 +01:00

README.md

aerc

aerc is an email client for your terminal.

A short demonstration can be found on https://aerc-mail.org/

Join the IRC channel: #aerc on irc.freenode.net for end-user support, and #aerc-dev for development.

Usage

On its first run, aerc will copy the default config files to ~/.config/aerc on Linux or ~/Library/Preferences/aerc on MacOS (or $XDG_CONFIG_HOME/aerc if set) and show the account configuration wizard.

If you redirect stdout to a file, logging output will be written to that file:

$ aerc > log

For instructions and documentation: see man aerc and further specific man pages on there.

Note that the example HTML filter (off by default), additionally needs w3m and dante to be installed.

Installation

Binary Packages

Recent versions of aerc are available on:

And likely other platforms.

From Source

Install the dependencies:

Then compile aerc:

$ make

aerc optionally supports notmuch. To enable it, you need to have a recent version of notmuch, including the header files (notmuch.h). Then compile aerc with the necessary build tags:

$ GOFLAGS=-tags=notmuch make

To install aerc locally:

# make install

Resources

Send patches and questions to ~sircmpwn/aerc@lists.sr.ht

Instructions for preparing a patch are available at git-send-email.io

Subscribe to release announcements on ~sircmpwn/aerc-announce

Bugs & todo here: ~sircmpwn/aerc2