about summary refs log tree commit diff stats
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/msg/unsubscribe.go3
-rw-r--r--commands/msgview/open.go24
2 files changed, 17 insertions, 10 deletions
diff --git a/commands/msg/unsubscribe.go b/commands/msg/unsubscribe.go
index 205a255..cf3e4a8 100644
--- a/commands/msg/unsubscribe.go
+++ b/commands/msg/unsubscribe.go
@@ -119,6 +119,5 @@ func unsubscribeMailto(aerc *widgets.Aerc, u *url.URL) error {
 }
 
 func unsubscribeHTTP(u *url.URL) error {
-	lib.OpenFile(u.String(), nil)
-	return nil
+	return lib.NewXDGOpen(u.String()).Start()
 }
diff --git a/commands/msgview/open.go b/commands/msgview/open.go
index 4aa6133..47b4369 100644
--- a/commands/msgview/open.go
+++ b/commands/msgview/open.go
@@ -1,7 +1,6 @@
 package msgview
 
 import (
-	"errors"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -28,10 +27,6 @@ func (Open) Complete(aerc *widgets.Aerc, args []string) []string {
 }
 
 func (Open) Execute(aerc *widgets.Aerc, args []string) error {
-	if len(args) != 1 {
-		return errors.New("Usage: open")
-	}
-
 	mv := aerc.SelectedTab().(*widgets.MessageViewer)
 	p := mv.SelectedMessagePart()
 
@@ -60,9 +55,22 @@ func (Open) Execute(aerc *widgets.Aerc, args []string) error {
 			return
 		}
 
-		lib.OpenFile(tmpFile.Name(), func(err error) {
-			aerc.PushError(" " + err.Error())
-		})
+		xdg := lib.NewXDGOpen(tmpFile.Name())
+		// pass through any arguments the user provided to the underlying handler
+		if len(args) > 1 {
+			xdg.SetArgs(args[1:])
+		}
+		err = xdg.Start()
+		if err != nil {
+			aerc.PushError(err.Error())
+			return
+		}
+		go func() {
+			err := xdg.Wait()
+			if err != nil {
+				aerc.PushError(" " + err.Error())
+			}
+		}()
 
 		aerc.PushStatus("Opened", 10*time.Second)
 	})