about summary refs log tree commit diff stats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* pgp: PGP/MIME encryption for outgoing emailsKoni Marti2022-01-071-0/+10
| | | | | | | | | | | | | | | | | | | | | implements PGP/MIME encryption with go-pgpmail. The Encrypt() function of go-pgpmail requires a list of public keys which are taken from the keystore. The keystore is searched for the email addresses of all recipients (to, cc, and bcc). If you want to be able to read the encrypted email afterwards, add yourself as a recipient in either to, cc, or bcc as well. Public keys can be exported from gpg into aerc as follows: $ gpg --export >> ~/.local/share/aerc/keyring.asc When composing a message, the encryption is enabled with the ":encrypt" command. This sets a bool flag in the Composer struct. A reapted application of this command will toggle the flag. The encrypted message can also be signed by using the ":sign" command before or after ":encrypt". References: https://todo.sr.ht/~rjarry/aerc/6 Signed-off-by: Koni Marti <koni.marti@gmail.com>
* pgp: PGP/MIME signing for outgoing emailsKoni Marti2022-01-071-0/+14
| | | | | | | | | | | | | | | | | implements PGP/MIME signing with go-pgpmail. The Sign() function of go-pgpmail requires a private (signing) key. The signing key which matches the senders email address (from field in email header) is looked up in aerc's copy of the keyring. Private keys can be exported from gpg into aerc as follows: $ gpg --export-secret-keys >> ~/.local/share/aerc/keyring.asc A message is signed with the ":sign" command. The sign command sets a bool flag in the Composer struct. Using the command repeatedly will toggle the flag. References: https://todo.sr.ht/~rjarry/aerc/6 Signed-off-by: Koni Marti <koni.marti@gmail.com>
* pgp: update openpgp packages (go-crypto and go-pgpmail)Koni Marti2022-01-072-3/+3
| | | | | | | Replaces golang.org/x/crypto with github.com/ProtonMail/go-crypto consistently and updates go-pgpmail to v0.2.0 Signed-off-by: Koni Marti <koni.marti@gmail.com>
* format: reformat code with go 1.17Robin Jarry2021-12-112-2/+4
| | | | | | | | There was a change in how build tags are formatted. Use this as new reference. Link: https://go.dev/doc/go1.17#gofmt Signed-off-by: Robin Jarry <robin@jarry.cc>
* imap: fix build on macosRobin Jarry2021-12-112-0/+28
| | | | | | | | | | | | Fix the following build error on mac os: worker/imap/worker.go:368:29: undefined: syscall.TCP_KEEPCNT worker/imap/worker.go:376:29: undefined: syscall.TCP_KEEPINTVL These symbols are not defined on darwin. Fixes: 5dfeff75f368 ("imap: add tcp connection options") Signed-off-by: Robin Jarry <robin@jarry.cc>
* style: customize vertical and horizontal border charactersDian M Fay2021-11-301-4/+7
| | | | | | | | | New border-char-horizontal and border-char-vertical config settings in aerc.conf allow users to modify border appearance from the default 1-wide/tall blank space. In stylesets, border.fg now affects the foreground color when custom characters are defined. Signed-off-by: Robin Jarry <robin@jarry.cc>
* messages: allow displaying email threadsy0ast2021-11-132-6/+61
| | | | | | | | | | | | | Display threads in the message list. For now, only supported by the notmuch backend and on IMAP when the server supports the THREAD extension. Setting threading-enable=true is global and will cause the message list to be empty with maildir:// accounts. Co-authored-by: Kevin Kuehler <keur@xcf.berkeley.edu> Co-authored-by: Reto Brunner <reto@labrat.space> Signed-off-by: Robin Jarry <robin@jarry.cc>
* index: add this-week-time-formatRobin Jarry2021-11-061-7/+16
| | | | | | | Also allow specific time format for messages received within the last 7 days. Signed-off-by: Robin Jarry <robin@jarry.cc>
* go.mod: change base git urlRobin Jarry2021-11-0510-14/+14
| | | | | | | I'm not sure what are the implications but it seems required. Link: https://github.com/golang/go/issues/20883 Signed-off-by: Robin Jarry <robin@jarry.cc>
* view,list: fix crash when viewing incomplete imap messagesRobin Jarry2021-10-282-48/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | With IMAP, due to an unidentified reason, some messages to not have any body accessible. When viewing them, aerc crashes: git.sr.ht/~sircmpwn/aerc/lib.usePGP lib/messageview.go:37 git.sr.ht/~sircmpwn/aerc/lib.NewMessageStoreView lib/messageview.go:67 git.sr.ht/~sircmpwn/aerc/commands/account.ViewMessage.Execute commands/account/view.go:45 git.sr.ht/~sircmpwn/aerc/commands.(*Commands).ExecuteCommand commands/commands.go:66 main.execCommand aerc.go:61 main.main.func2 aerc.go:160 aerc crashed: runtime error: invalid memory address or nil pointer dereference Check the pointer before dereferencing. Also, add a global check in ParseMessageFormat where a similar issue may occur. Signed-off-by: Robin Jarry <robin@jarry.cc>
* view,compose: use border color to separate headers from bodyRobin Jarry2021-10-281-4/+7
| | | | | | | | | | When composing a message, there is an empty fill line between the headers and the text editor. The line is printed with the default style which may cause users to assume it is part of the editor. Display the fill lines with the border color to avoid confusion. Signed-off-by: Robin Jarry <robin@jarry.cc>
* index: allow dynamic formatting of message datesRobin Jarry2021-10-281-5/+18
| | | | | | | | | | | | | | | | | | | | | When a message has been sent today (or this year) allow formatting the date differently. For example, with: [ui] index-format=%-25.25n %-25.25D %s timestamp-format=2006 Jan 02, 15:04 GMT-0700 this-day-time-format=Today at 15:04 this-year-time-format=Jan 02 The message list would look like this (spaces collapsed): Robin Jarry Today at 16:30 [PATCH 1/2] bindings: prepare for more modifers bugzilla@dpdk.org Oct 26 [dpdk-dev] [Bug 839] pdump: any subsequent runs of pdump_autotest fail Holger Levsen 2020 Mar 15, 13:44 GMT+01 +1 (Re: FTP Team -- call for volunteers) Signed-off-by: Robin Jarry <robin@jarry.cc>
* lib/ui/textinput: Optimize ensureScrollAdnan Maolood2021-08-301-5/+5
|
* FindFirstNonMultipart: return the proper pathReto Brunner2021-03-071-1/+1
| | | | There was a bug that lead to the wrong path being returned by the function.
* Fix linter warningsReto Brunner2021-02-261-1/+1
| | | | | | * Remove redundant return (code was never reached) * Remove redundant type information * Rename unused function parameters to "_"
* Refactor lib/open to accept user provided argumentsReto Brunner2021-01-302-33/+51
| | | | | | | | | | | | * Get rid of open_darwin It just lead to code duplication for a simple one string change. Instead we query it during initialization * Accept user provided arguments "open" on MacOS accepts things like -A to use a specific application Pass trough arguments the user provided in order to facilitate this * Refactor the function to a struct This makes it more convenient for the caller and avoids signatures like lib.OpenFile(nil, u.String(), nil) which are fairly unreadable
* update tcell to v2 and enable TrueColor supporty0ast2020-12-1811-12/+12
| | | | | | | | | Also update to the tcell v2 PaletteColor api, which should keep the chosen theme of the user intact. Note, that if $TRUECOLOR is defined and a truecolor given, aerc will now stop clipping the value to one of the theme colors. Generally this is desired behaviour though.
* format: remove parse methods, use the one from go-messageReto Brunner2020-11-141-32/+1
|
* compose: use a proper header instead of a string mapReto Brunner2020-11-142-33/+50
| | | | | | | | | | | | | Prior to this commit, the composer was based on a map[string]string. While this approach was very versatile, it lead to a constant encoding / decoding of addresses and other headers. This commit switches to a different model, where the composer is based on a header. Commands which want to interact with it can simply set some defaults they would like to have. Users can overwrite them however they like. In order to get access to the functions generating / getting the msgid go-message was upgraded.
* templates: Remove ParseTemplate as it's unusedReto Brunner2020-11-141-14/+0
|
* remove models.Address in favor of go-message AddressReto Brunner2020-11-141-9/+30
| | | | | | | We made a new type out of go-message/mail.Address without any real reason. This suddenly made it necessary to convert from one to the other without actually having any benefit whatsoever. This commit gets rid of the additional type
* templates: better error messageReto Brunner2020-11-111-2/+3
|
* refactor ParseMessageFormat to use a ctx objectReto Brunner2020-10-141-54/+60
|
* Remove unused Simulator interfaceReto Brunner2020-09-101-5/+0
|
* fix comment in ParseAddressListReto Brunner2020-09-101 tty->buffer + ((tty->lineCount - 1) * tty->columnCount) * 2; for (int i = 0; i < tty->columnCount * 2; i += 2) { lastLine[i] = 0; lastLine[i + 1] = tty->color; } } void Tty_Clear(Tty* tty) { unsigned char * video = tty->buffer; int i = 0; for (i = 0; i < tty->lineCount * tty->columnCount; ++i) { *video++ = 0; *video++ = tty->color; } tty->currentLine = 0; tty->currentColumn = 0; } void Tty_PutChar(Tty* tty, char c) { unsigned char * video = tty->buffer; if ('\n' == c || '\r' == c) { ++tty->currentLine; tty->currentColumn = 0; if (tty->currentLine >= tty->lineCount - 0) { --tty->currentLine; Tty_ScrollUp(tty); } Tty_MoveCursor(tty, tty->currentLine, tty->currentColumn); return; } else if ('\b' == c) { if (tty->currentColumn > 0) { --tty->currentColumn; c = '\0'; video = tty->buffer + (tty->currentLine * tty->columnCount + tty->currentColumn) * 2; video[0] = c; video[1] = tty->color; Tty_MoveCursor(tty, tty->currentLine, tty->currentColumn); return; } else if (tty->currentColumn == 0) { if (tty->currentLine > 0) { --tty->currentLine; tty->currentColumn = tty->columnCount - 1; c = '\0'; video = tty->buffer + (tty->currentLine * tty->columnCount + tty->currentColumn) * 2; video[0] = c; video[1] = tty->color; Tty_MoveCursor(tty, tty->currentLine, tty->currentColumn); return; } } } if (tty->currentColumn >= tty->columnCount) { ++tty->currentLine; tty->currentColumn = 0; } if (tty->currentLine >= tty->lineCount - 0) { --tty->currentLine; Tty_ScrollUp(tty); } video += (tty->currentLine * tty->columnCount + tty->currentColumn) * 2; video[0] = c; video[1] = tty->color; ++tty->currentColumn; Tty_MoveCursor(tty, tty->currentLine, tty->currentColumn); } void Tty_PutText(Tty* tty, const char* text) { const char* c = text; while (*c) { Tty_PutChar(tty, *c); ++c; } } void Tty_MoveCursor(Tty* tty, uint16 line, uint16 column) { tty->currentLine = line; tty->currentColumn = column; } lib/messageview: mark messages as readReto Brunner2020-05-061-0/+1
| | | | | | | | | Currently at least the notmuch and maildir worker only set messages as read if a body part is fetched. The gpg abstraction however fetches the full message. We can simply set the readstate when we create the messageview, avoiding the issue. Once this is merged, we can cleanup both workers.
* libui: don't require beeper for main contentDrew DeVault2020-05-051-2/+4
|