aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/aerc.conf14
-rw-r--r--config/config.go15
2 files changed, 29 insertions, 0 deletions
diff --git a/config/aerc.conf b/config/aerc.conf
index 6e5efe7d..0bd96fb5 100644
--- a/config/aerc.conf
+++ b/config/aerc.conf
@@ -308,6 +308,20 @@ text/plain=sed 's/^>\+.*/\x1b[36m&\x1b[0m/'
#text/html=w3m -dump -I UTF-8 -T text/html
#image/*=catimg -w $(tput cols) -
+[openers]
+#
+# Openers allow you to specify the command to use for the :open action on a
+# per-MIME-type basis.
+#
+# {} is expanded as the temporary filename to be opened. If it is not
+# encountered in the command, the temporary filename will be appened to the end
+# of the command.
+#
+# Examples:
+# text/html=surf -dfgms
+# text/plain=gvim {} +125
+# message/rfc822=thunderbird
+
[triggers]
#
# Triggers specify commands to execute when certain events occur.
diff --git a/config/config.go b/config/config.go
index 24a1b507..e31d1a14 100644
--- a/config/config.go
+++ b/config/config.go
@@ -17,6 +17,7 @@ import (
"github.com/gdamore/tcell/v2"
"github.com/go-ini/ini"
+ "github.com/google/shlex"
"github.com/imdario/mergo"
"github.com/kyoh86/xdg"
"github.com/mitchellh/go-homedir"
@@ -257,6 +258,7 @@ type AercConfig struct {
ContextualUis []UIConfigContext
General GeneralConfig
Templates TemplateConfig
+ Openers map[string][]string
}
// Input: TimestampFormat
@@ -484,6 +486,16 @@ func (config *AercConfig) LoadConfig(file *ini.File) error {
config.Filters = append(config.Filters, filter)
}
}
+ if openers, err := file.GetSection("openers"); err == nil {
+ for mimeType, command := range openers.KeysHash() {
+ mimeType = strings.ToLower(mimeType)
+ if args, err := shlex.Split(command); err != nil {
+ return err
+ } else {
+ config.Openers[mimeType] = args
+ }
+ }
+ }
if viewer, err := file.GetSection("viewer"); err == nil {
if err := viewer.MapTo(&config.Viewer); err != nil {
return err
@@ -807,6 +819,8 @@ func LoadConfigFromFile(root *string, accts []string) (*AercConfig, error) {
QuotedReply: "quoted_reply",
Forwards: "forward_as_body",
},
+
+ Openers: make(map[string][]string),
}
// These bindings are not configurable
@@ -835,6 +849,7 @@ func LoadConfigFromFile(root *string, accts []string) (*AercConfig, error) {
logging.Debugf("aerc.conf: [viewer] %#v", config.Viewer)
logging.Debugf("aerc.conf: [compose] %#v", config.Compose)
logging.Debugf("aerc.conf: [filters] %#v", config.Filters)
+ logging.Debugf("aerc.conf: [openers] %#v", config.Openers)
logging.Debugf("aerc.conf: [triggers] %#v", config.Triggers)
logging.Debugf("aerc.conf: [templates] %#v", config.Templates)