aboutsummaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2022-09-30 14:12:07 +0200
committerRobin Jarry <robin@jarry.cc>2022-10-01 15:47:25 +0200
commit45bff8851509432f6b5a21360ce67a7b2ca55eb5 (patch)
tree9290e56c3483a60b04d321837ac609c404a38768 /commands
parent92ba132d70fe1d9afabe3cf4f23376025ccff897 (diff)
downloadaerc-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')
-rw-r--r--commands/msgview/open.go8
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())
}