diff options
author | Robin Jarry <robin@jarry.cc> | 2023-07-28 21:35:35 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-08-04 23:16:29 +0200 |
commit | dee1adce3f6ac9ba889fca89561231408e251aaa (patch) | |
tree | fdcf056eac9cceba3dc244b3c91d53f3501ca0b7 | |
parent | d5210acf092f3c3346c363dbe3ce5ca899fb5a24 (diff) | |
download | aerc-dee1adce3f6ac9ba889fca89561231408e251aaa.tar.gz |
filters: put libexec/filters dirs before default PATH
Some distro packages install binaries in /usr/bin that clash with some
of aerc's builtin filters (for example, colorize and wrap). The issue is
that aerc filters dir (usually /usr/libexec/aerc/filters) is *after*
/usr/bin, making the builtin filters not accessible when these distro
packages are installed.
Since this mostly concerns colorize and wrap, move $LIBEXEC/aerc/filters
at the beginning of the exec PATH when running filter commands. If the
intent is **really** to execute /usr/bin/colorize or /usr/bin/html, then
their absolute paths should be used.
Link: https://archlinux.org/packages/extra/x86_64/talkfilters/
Link: https://tracker.debian.org/pkg/colorize
Signed-off-by: Robin Jarry <robin@jarry.cc>
Reviewed-by: Tristan Partin <tristan@partin.io>
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | config/aerc.conf | 5 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 5 | ||||
-rw-r--r-- | widgets/msgviewer.go | 5 |
4 files changed, 16 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 0af1cb45..3c7c3764 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Names formatted like "Last Name, First Name" are better supported in templates - Composing an email is now aborted if the text editor exits with an error (e.g. with `vim`, abort an email with `:cq`). +- Aerc builtin filters path (usually `/usr/libexec/aerc/filters`) is now + **prepended** to the default system `PATH` to avoid conflicts with installed + distro binaries which have the same name as aerc builtin filters (e.g. + `/usr/bin/colorize`). ## [0.15.2](https://git.sr.ht/~rjarry/aerc/refs/0.15.2) - 2023-05-11 diff --git a/config/aerc.conf b/config/aerc.conf index 79a3936a..3eb30c45 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -469,7 +469,7 @@ # Filters allow you to pipe an email body through a shell command to render # certain emails differently, e.g. highlighting them with ANSI escape codes. # -# The commands are invoked with sh -c. The following folders are appended to +# The commands are invoked with sh -c. The following folders are prepended to # the system $PATH to allow referencing filters from their name only: # # ${XDG_CONFIG_HOME:-~/.config}/aerc/filters @@ -480,6 +480,9 @@ # /usr/libexec/aerc/filters # /usr/share/aerc/filters # +# If you want to run a program in your default $PATH which has the same name +# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path. +# # The following variables are defined in the filter command environment: # # AERC_MIME_TYPE the part MIME type/subtype diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index 0cdad99b..e420d52c 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -664,7 +664,7 @@ _/usr/libexec/aerc/filters_). Note that these may have additional dependencies that aerc does not have alone. The filter commands are invoked with _sh -c command_. The following folders are -appended to the system *$PATH* to allow referencing filters from their name only. +prepended to the system *$PATH* to allow referencing filters from their name only. ``` ${XDG_CONFIG_HOME:-~/.config}/aerc/filters @@ -676,6 +676,9 @@ $PREFIX/share/aerc/filters /usr/share/aerc/filters ``` +If you want to run a program in your default *$PATH* which has the same +name as a builtin filter (e.g. _/usr/bin/colorize_), use its absolute path. + The following variables are defined in the filter command environment: *AERC_MIME_TYPE* diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go index 987d3133..d1bee8c6 100644 --- a/widgets/msgviewer.go +++ b/widgets/msgviewer.go @@ -598,9 +598,12 @@ func NewPartViewer( var noFilter *ui.Grid if filter != nil { path, _ := os.LookupEnv("PATH") + var paths []string for _, dir := range config.SearchDirs { - path += fmt.Sprintf(":%s/filters", dir) + paths = append(paths, dir+"/filters") } + paths = append(paths, path) + path = strings.Join(paths, ":") filter.Env = os.Environ() filter.Env = append(filter.Env, fmt.Sprintf("PATH=%s", path)) filter.Env = append(filter.Env, |