diff options
author | Robin Jarry <robin@jarry.cc> | 2022-09-30 14:12:07 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-10-01 15:47:25 +0200 |
commit | 45bff8851509432f6b5a21360ce67a7b2ca55eb5 (patch) | |
tree | 9290e56c3483a60b04d321837ac609c404a38768 /commands/msgview | |
parent | 92ba132d70fe1d9afabe3cf4f23376025ccff897 (diff) | |
download | aerc-45bff8851509432f6b5a21360ce67a7b2ca55eb5.tar.gz |
open: allow overriding default program
Instead of xdg-open (or open on MacOS), allow forcing a program to open
a message part. The program is determined in that order of priority:
1) If :open has arguments, they will be used as command to open the
attachment. If the arguments contain the {} placeholder, the
temporary file will be substituted, otherwise the file path is added
at the end of the arguments.
2) If a command is specified in the [openers] section of aerc.conf for
the part MIME type, then it is used with the same rules of {}
substitution.
3) Finally, fallback to xdg-open/open with the file path as argument.
Update the docs and default config accordingly with examples.
Fixes: https://todo.sr.ht/~rjarry/aerc/64
Co-authored-by: Jason Stewart <support@eggplantsd.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Moritz Poldrack <moritz@poldrack.dev>
Diffstat (limited to 'commands/msgview')
-rw-r--r-- | commands/msgview/open.go | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/commands/msgview/open.go b/commands/msgview/open.go index 82c1accb..bb22026a 100644 --- a/commands/msgview/open.go +++ b/commands/msgview/open.go @@ -48,10 +48,11 @@ func (Open) Execute(aerc *widgets.Aerc, args []string) error { mv.MessageView().FetchBodyPart(p.Index, func(reader io.Reader) { extension := "" + mimeType := "" + // try to determine the correct extension based on mimetype if part, err := mv.MessageView().BodyStructure().PartAtIndex(p.Index); err == nil { - mimeType := fmt.Sprintf("%s/%s", part.MIMEType, part.MIMESubType) - + mimeType = fmt.Sprintf("%s/%s", part.MIMEType, part.MIMESubType) if exts, _ := mime.ExtensionsByType(mimeType); len(exts) > 0 { extension = exts[0] } @@ -71,7 +72,8 @@ func (Open) Execute(aerc *widgets.Aerc, args []string) error { } go func() { - err = lib.XDGOpen(tmpFile.Name()) + openers := aerc.Config().Openers + err = lib.XDGOpenMime(tmpFile.Name(), mimeType, openers, args[1:]) if err != nil { aerc.PushError("open: " + err.Error()) } |