diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/aerc.conf | 14 | ||||
-rw-r--r-- | config/config.go | 15 |
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) |