| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When adding new style objects it is impossible to give them a default
color nor attributes without modifying each existing user styleset.
Also, if the user has an incomplete styleset, some parts of aerc will
have no style at all. These quirks are not nice from a user experience
point of view.
Before parsing the user styleset, initialize aerc style with basic
defaults. Reuse the exact same content than the actual "default"
styleset provided in /usr/share/aerc/stylesets. Comment all of the
default styleset to make it obvious that these are default values.
This has some implications:
* To reset these defaults, the user styleset must now start with these
two lines:
*.default = true
*.normal = true
If these two lines are not present, the default style will be kept and
only changed if the user styleset explicitly sets them.
* Empty stylesets no longer produce weird results.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Inwit <inwit@sindominio.net>
|
|
|
|
|
|
|
| |
Replace the notmuch library used with our internal bindings.
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change `:recall -f` behavior so it remembers the source folder the
message is taken from and the further `:postpone` call can save it back
to that folder.
Change the `:recall` tab closing behavior, so it no longer asks if the
recalled message needs to be deleted. This is now done automatically.
Add an optional `-t <folder>` parameter to `:postpone`, so the message
can be saved in a different folder.
Change `:postpone` behavior, so it checks if the message was
force-recalled from a different folder, and then it saves the message
there.
The "breaking" change is made to the closing handler of the recalled
message tab. There was a confirmation dialog that asked if the recalled
message needs to be deleted. This is now removed and replaced with a
pretty simple logic: if the recalled message is either sent or
re-postponed - it is safe to delete the original. Otherwise (if the
recalled message editing is discarded, any other reasons?) the message
is left intact, there is no need to ask for deleting it. If the user
don't need that message - they can delete it manually.
Another "breaking" change to the same handler is that it always works
this way regardless of the curently selected folder. There was an `if`
that checked that, but as the recalled messages are now only deleted if
they are re-sent or re-postponed, it seems that there is no need to
check the current folder anymore.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RFC 5322 recommends using a domain name on the right-hand side of the
"@" in Message-Ids.
Since the local host domain name cannot be obtained reliably, use the
sender email domain name by default. Add a new configuration option to
maintain the old behavior.
Link: https://www.rfc-editor.org/rfc/rfc5322.html#section-3.6.4
Signed-off-by: Adnan Maolood <adnan@maolood.com>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
| |
The wizard now supports all protocols. Adapt welcome text accordingly.
Display key bindings in a more consistent manner.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Tristan Partin <tristan@partin.io>
Tested-by: Tim Culverhouse <tim@timculverhouse.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, aerc reads a list of files to be attached to a message from
the file-picker-cmd's standard output. However, this doesn't play nice
with ranger which seems to draw itself by writing there, causing it to
be invisible in the embedded terminal.
In fact, instead of using a pipe, aerc redirects the output of the
command to a temporary file and then reads the list of files from there.
Take advantage of this approach and allow user to directly reference
this temporary file in the file-picker-cmd via the %f placeholder, which
gets expanded to the temporary file's location. If the %f placeholder
isn't present, keep the old behaviour.
So for example, now it is possible to do:
file-picker-cmd=ranger --choosefiles=%f
in aerc.conf.
Signed-off-by: Karel Balej <balejk@matfyz.cz>
Acked-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Tim Culverhouse <tim@timculverhouse.com>
|
|
|
|
|
|
|
|
|
|
| |
Allow a user to change the default style of the message list scrollbar.
There is no easy way to set the default style for an object directly in
code, so I've updated every built-in theme to preserve the existing
style.
Signed-off-by: Konstantin Shelekhin <k.shelekhin@ftml.net>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Being portable between BSD and GNU make is a nightmare. It restricts
features to a very minimal surface and in turn requires a lot of code
duplication and manual updating of file lists.
Worse, aerc's makefile relies on the shell assignment operator (!=)
which has been supported by BSD make 2.2 since 1997 but GNU make 4.0
since 2013. Unfortunately, MacOS runs GNU make 3.8 which does not have
that feature. Reducing the feature set even more.
Stop that nonsense and remove BSD make compatibility. The majority of
aerc's users either run a GNU Linux distribution or MacOS. For those who
run any *BSD variant, it is easy for them to install GNU make (gmake) if
they don't have it installed already.
Use GNU make constructs to generate build and install rules dynamically
based on source files discovery.
GNU make will use "GNUmakefile" in priority over "Makefile" if possible.
Leverage this to display an explicit message when other flavours of make
are used. Leave a "Makefile" with a .DEFAULT: target and rename the
actual file to "GNUmakefile".
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Moritz Poldrack <moritz@poldrack.dev>
|
|
|
|
|
|
|
|
|
|
| |
Change the `:export-mbox` behavior, so if some messages are marked with
`:mark` - only those messages are exported. If nothing is marked - the
whole folder is exported, as usual.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
Tested-by: Koni Marti <koni.marti@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the -r option to :attach so that the attachments can be piped in
from a command. Example:
:attach -r image.jpg read-jpeg-from-clipboard.sh
It takes two parameters: the attachment name (to be used in the email
and to get the MIME type from) and the command to execute and read the
output.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Koni Marti <koni.marti@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some distro packages install binaries in /usr/bin that clash with some
of aerc's builtin filters (for example, colorize and wrap). The issue is
that aerc filters dir (usually /usr/libexec/aerc/filters) is *after*
/usr/bin, making the builtin filters not accessible when these distro
packages are installed.
Since this mostly concerns colorize and wrap, move $LIBEXEC/aerc/filters
at the beginning of the exec PATH when running filter commands. If the
intent is **really** to execute /usr/bin/colorize or /usr/bin/html, then
their absolute paths should be used.
Link: https://archlinux.org/packages/extra/x86_64/talkfilters/
Link: https://tracker.debian.org/pkg/colorize
Signed-off-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Tristan Partin <tristan@partin.io>
|
|
|
|
|
|
|
|
| |
Allow removing headers from the compose window when edit-headers=false
(the default) with :header -d <name>.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Koni Marti <koni.marti@gmail.com>
|
|
|
|
|
|
|
|
|
| |
Add -e|-E flags to all compose commands to allow switching between
edit-headers = true/false without restarting aerc.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Tested-by: Koni Marti <koni.marti@gmail.com>
|
|
|
|
|
|
|
|
|
| |
Implement embedded header mode in the composer widget. To activate it,
use set [compose].edit-headers=true in aerc.conf.
Signed-off-by: Koni Marti <koni.marti@gmail.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
By default `:open` leaves its temporary files in the temp directory. The
patch adds an option `-d` that defers the deletion of the temporary file
when the opener is started.
This works well with "sync" openers that don't exit until the user is
done with the preview, but may not work with "async" openers that pass
the file to their parent process and exit. That's why the automatic
deletion needs to be intentionally enabled by using the option.
Suggested-by: Robin Jarry <robin@jarry.cc>
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Reviewed-by: Moritz Poldrack <moritz@poldrack.dev>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the behavior of `names`, `firstnames` and `initials` functions in
templates so they better process names formatted like this:
"Last Name, First Name"
Basically, if the name contains one (and only one) comma, its parts are
flipped so the first name always goes first.
This helps to do "Hello Name" in templates regardless of the name format
in email address. Also if the template uses a full name it will make it
"Hello FirstName LastName" instead of "Hello LastName, FirstName".
Add tests to cover more complex names in the future.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When opening an attachment with :open command we make a temporary file
and open it then. The file is named randomly, but the extension is
derived from the attachment parameters.
This patch checks if the attachment has a file name assigned and takes
the extension from there. Otherwise it rolls back to the original
mime-based extension generation.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
| |
Document folder-map option in aerc-accounts.
Signed-off-by: Koni Marti <koni.marti@gmail.com>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for JMAP backends. This is on par with IMAP features with
some additions specific to JMAP:
* tagging
* sending emails
This makes use of git.sr.ht/~rockorager/go-jmap for the low level
interaction with the JMAP server. The transport is JSON over HTTPS.
For now, only oauthbearer with token is supported. If this proves
useful, we may need to file for an official three-legged oauth support
at JMAP providers.
I have tested most features and this seems to be reliable. There are
some quirks with the use-labels option. Especially when moving and
deleting messages from the "All mail" virtual folder (see aerc-jmap(5)).
Overall, the user experience is nice and there are a lot less background
updates issues than with IMAP (damn IDLE mode hanging after restoring
from sleep).
I know that not everyone has access to a JMAP provider. For those
interested, there are at least these two commercial offerings:
https://www.fastmail.com/
https://www.topicbox.com/
And, if you host your own mail, you can use a JMAP capable server:
https://stalw.art/jmap/
https://www.cyrusimap.org/imap/download/installation/http/jmap.html
Link: https://www.rfc-editor.org/rfc/rfc8620.html
Link: https://www.rfc-editor.org/rfc/rfc8621.html
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Tim Culverhouse <tim@timculverhouse.com>
|
|
|
|
|
|
|
|
|
| |
When an email has multiple attachments with the same name, aerc
currently only saves one of them. This patch adds a counter to them. the
file has an extension, the counter is added before the extension.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Koni Marti <koni.marti@gmail.com>
|
|
|
|
|
|
|
|
| |
Add `<backspace>` option to bindings, so it can be used to leave the
message view similar to some file managers.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new `-A` option to `:save` that works in the same manner as `-a`,
but saves all the named parts of an email, not just attachments.
The reason is that I have an email with this structure:
multipart/related
multipart/alternative
text/plain
text/html
image/png (image001.png)
image/png (image002.png)
image/png (image003.png)
text/plain (env.txt)
Where the `env.txt` is a "real" attachment, while the images are just a
part of the HTML version of the email. However, in this particular email
it was important to see them which can't be done with text UI and
opening the HTML part with the browser also didn't work. Saving them to
a temorary folder did the job and this can be useful in other scenarios.
So before the patch we could do `:save -ap /some/path` and get just the
`env.txt` saved there.
After the patch we could also do `:save -Ap /some/path` and get all the
images and the text file saved into the folder.
Signed-off-by: Vitaly Ovchinnikov <v@postbox.nz>
Tested-by: Moritz Poldrack <moritz@poldrack.dev>
|
|
|
|
|
|
|
|
|
|
| |
When the editor crashes, or the user forces it to exit with an error
code, it is safe to assume that they can't (if the command failed) or
don't want to (if :cq'd) continue composing a meaningful message.
Suggested-by: tristan957
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
| |
Add a standalone python script to allow querying contacts from a CardDAV
compatible server. The script works with python 3.6+ and has no external
dependencies.
Link: https://sabre.io/dav/building-a-carddav-client/
Link: https://www.rfc-editor.org/rfc/rfc6352
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Tim Culverhouse <tim@timculverhouse.com>
|
|
|
|
|
|
|
|
|
| |
In order to combat potential issues of not knowing ones servers
delimiter when creating directories, the delimiter is automatically
appended to all suggested matches.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since we now have support for using a server's custom delimiter, it's
only right to also make use of this circumstance in the :archive
command.
Use the provided delimiter to join the path elements in the :archive
command.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
| |
To accommodate servers that use a delimiter other than "/" ("." being a
common alternative), the delimiter is fetched from the server when
connecting.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
| |
Ask user whether they want to abort before sending if the subject header
is empty and they have enabled the warn-empty-subject config option.
Signed-off-by: Jason Cox <me@jasoncarloscox.com>
Acked-by: Tim Culverhouse <tim@timculverhouse.com>
|
|
|
|
|
|
|
|
|
| |
It's nice to use a different style for the chunk's function name to make
it clear that the name is not necessarily adjacent to the chunk's actual
lines.
Signed-off-by: Jason Cox <me@jasoncarloscox.com>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
| |
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
| |
Hopefully, this will be the last 0.15 bugfix release.
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
| |
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
| |
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
| |
Signed-off-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A lot of libraries are starting to use generics (introduced in go 1.18).
Restricting aerc on 1.17 prevents us from updating our dependencies.
Since 1.18 is a major milestone, it has a chance to remain supported for
a while.
Update the minimum go version to 1.18. Run go mod tidy -compat=1.18.
Update our CI to run on 1.18.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
| |
These slipped through the cracks.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
| |
Add config options for setting the TERM environment variable used in
tcell-term and for enabling or disabling OSC8 escape sequence output.
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Robin Jarry<robin@jarry.cc>
|
|
|
|
|
|
|
|
|
| |
Handle headers in the search and filter commands, for searching and
filtering based on the Headers specified by the -H parameter, the syntax
for the -H parameter should be `Header: Key`.
Signed-off-by: Julian Marcos <jmjl@tilde.green>
Acked-by: Robin Jarry<robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
| |
Add a hook to run when aerc shuts down. The environment is supplemented
with the duration aerc was alive for.
References: https://todo.sr.ht/~rjarry/aerc/136
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Add a hook to run when aerc starts up. The environment is supplemented
with aerc version and the path to its binary.
References: https://todo.sr.ht/~rjarry/aerc/136
References: https://todo.sr.ht/~rjarry/aerc/139
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Deprecate triggers and replace them with hooks. Now that aerc supports
running arbitrary ex commands over IPC, it is possible to run internal
aerc commands *and* shell commands via external shell scripts. Hooks
only allow running shell commands. Hooks info is passed via environment
variables.
Implements: https://todo.sr.ht/~rjarry/aerc/136
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
| |
We have been wanting to remove this for a while now. The only use case
is styleset and changing the whole styleset based on an email subject
does not make much sense. The same feature can be achieve with dynamic
msglist* styles based on any email header value in the stylesets now.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for dynamic msglist*.$HEADER,$VALUE.$ATTR = $VALUE where
$VALUE can be either a fixed string or a regular expression. This is
intended as a replacement of contextual ui sections based on subject
values.
Implements: https://todo.sr.ht/~rjarry/aerc/18
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
|
| |
Mark URLs with OSC 8 escape sequence to help terminal emulators with
opening multi-line URLs with the mouse and attach the hyperlink to
email addresses, so the users could open them.
Link: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
Signed-off-by: Kirill Chibisov <contact@kchibisov.com>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
| |
Allow wild cards for MIME types like in filters.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
|
| |
Provide a way to configure link openers. Based on the URL mime type:
x-scheme-handler/$scheme.
Signed-off-by: Kirill Chibisov <contact@kchibisov.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
|
|
|
|
|
|
|
|
| |
It would be nicer if aerc behaved the same way most other tools behave
in that no news is good news.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to make automation easier, it's useful to be able to send
commands to aerc via IPC. This can be done by calling the aerc binary
followed by a colon and the command to run. For example:
aerc :read && aerc :remark && aerc :archive month
Security to ensure no malicious commands are run is deferred to the
user. By default the socket is only writable by the user. This is
considered sufficient as the potential harm an attacker gaining
write-access to a user's session can cause is significantly greater than
"can delete some emails".
To ensure users with an according threat model, it is possible to
disable command IPC. mailto-handling is unaffected even though it works
over IPC as it is absolutely non-destructive.
Signed-off-by: Moritz Poldrack <git@moritz.sh>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow custom user-defined styles in a styleset. The styles can take any
name, and must be under the [user] ini section. All attributes apply to
user defined styles.
Example:
[user]
red.fg=red
red.bold=true
Add a .Style function which accepts the name of a user-defined style and
applies it to the string.
{{.Style "red" "foo"}}
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Robin Jarry <robin@jarry.cc>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The dependency to x/tools@v0.6.0 drags x/sys@v0.5.0 which is not
compatible with go 1.16
# golang.org/x/sys/unix
golang.org/x/sys@v0.5.0/unix/syscall.go:83:16: undefined: unsafe.Slice
golang.org/x/sys@v0.5.0/unix/syscall_linux.go:2271:9: undefined: unsafe.Slice
golang.org/x/sys@v0.5.0/unix/syscall_unix.go:118:7: undefined: unsafe.Slice
golang.org/x/sys@v0.5.0/unix/sysvshm_unix.go:33:7: undefined: unsafe.Slice
note: module requires Go 1.17
Since go 1.16 is now EOL, update the minimal go version to 1.17.
Update go.mod and go.sum with the following command:
go mod tidy -compat=1.17
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Moritz Poldrack <moritz@poldrack.dev>
|