Karel Balej 2bc1bd9b68 app: prevent spinning the CPU while failing to reconnect
Commit d1854702d4 slightly modified the way a reconnection backoff was
calculated replacing an issue where aerc would stop trying after a while
with one where it will eventually start to issue reconnection attempts
with no delay in between, causing a high CPU usage.

This is because the backoff would eventually reach a value that cannot
be represented by time.Duration leading to negative and eventually zero
wait time.

Put a hard limit on the backoff so that it can be safely represented by
time.Duration. While at it, also simplify the code.

Link: https://lists.sr.ht/~rjarry/aerc-devel/patches/66028
Fixes: d1854702d4 ("account: move reconnection backoff logic to UI layer")
Changelog-fixed: Repeated reconnection failures will no longer cause
 aerc to start spinning the CPU.
Changelog-changed: A hard maximum of one day is now enforced for
 reconnection attempt delay, setting reconnect-maxwait to a higher value
 thus has no effect.
Signed-off-by: Karel Balej <balejk@matfyz.cz>
Acked-by: Simon Martin <simon@nasilyan.com>
2026-09-27 13:25:44 +02:00
2026-07-20 18:52:45 +02:00
2025-12-20 18:06:30 +01:00
2025-08-28 09:28:16 +02:00
2025-03-06 17:26:25 +01:00
2025-11-02 18:01:13 +01:00
2024-09-04 15:02:43 +02:00
2026-07-28 18:38:48 +02:00
2026-07-28 17:42:39 +02:00
2026-07-28 17:42:39 +02:00
2022-02-06 16:04:15 +01:00
2026-07-18 15:21:14 +02:00
2026-09-17 09:08:17 +02:00

aerc

logo

builds.sr.ht status GitHub macOS CI status

aerc is an email client for your terminal.

This is a fork of the original aerc by Drew DeVault.

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

Join the IRC channel: #aerc on irc.libera.chat for end-user support, and 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

Note that the default HTML filter additionally needs w3m to be installed along with optional unshare (from util-linux) or socksify (from dante-utils).

Documentation

Also available as man pages:

User contributions and integration with external tools:

Installation

Binary Packages

Recent versions of aerc are available on:

And likely other platforms.

From Source

Install the dependencies:

  • go (>=1.25) (Go versions are supported until their end-of-life; support for older versions may be dropped at any time due to incompatibilities or newer required language features.)
  • scdoc
  • GNU make

Then compile aerc:

$ gmake

aerc optionally supports notmuch. To enable it, you need to have a recent version of notmuch, including the header files (notmuch.h). The notmuch build tag should be automatically added. To check if it is, run the following command:

$ ./aerc -v
aerc 0.14.0-108-g31e1cd9af565 +notmuch (go1.19.6 amd64 linux)
                              ^^^^^^^^

If it is not, you can force it before building:

$ gmake GOFLAGS=-tags=notmuch

If you have notmuch headers available but do not want to build notmuch support in aerc, force GOFLAGS to an empty value:

$ gmake GOFLAGS=

To install aerc locally (no need to be root):

$ gmake install PREFIX=~/.local
$ mandb -q ~/.local/share/man

By default, aerc will install config files to directories under /usr/local/aerc, and will search for templates and stylesets in these locations in order:

  • ${XDG_CONFIG_HOME:-~/.config}/aerc
  • ${XDG_DATA_HOME:-~/.local/share}/aerc
  • /usr/local/share/aerc
  • /usr/share/aerc

At build time it is possible to add an extra location to this list and to use that location as the default install location for config files by setting the PREFIX option like so:

# gmake PREFIX=/custom/location
# gmake install PREFIX=/custom/location
# mandb -q /custom/location/share/man

This will install templates and other config files to /custom/location/share/aerc, and man pages to /custom/location/share/man. This extra location will have lower priority than the XDG locations but higher than the fixed paths.

Contributing

Anyone can contribute to aerc. Please refer to the contribution guidelines

Resources

Ask for support or follow general discussions on ~rjarry/aerc-discuss@lists.sr.ht.

Send patches and development related questions to ~rjarry/aerc-devel@lists.sr.ht.

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

Subscribe to release announcements on ~rjarry/aerc-announce@lists.sr.ht

Submit confirmed bug reports and confirmed feature requests on https://todo.sr.ht/~rjarry/aerc.

Send security vulnerability reports via emails to ~rjarry/aerc-security@lists.sr.ht encrypted with the GPG key located at contrib/signing-key.asc (fingerprint DC07 18E3 22E2 C760 5EBD C831 4695 7EC0 8FD0 FE90).

License.

Change log.

S
Description
No description provided
Readme MIT
8.2 MiB
Languages
Go 92.5%
Python 3.1%
C 2.4%
Shell 1.1%
Awk 0.5%
Other 0.4%