On Sat, Oct 08, 2022 at 12:06:52PM +0200, Jan Eden via Mutt-users wrote: > On 2022-10-08 09:34, Chris Green wrote: > > On Sat, Oct 08, 2022 at 10:25:29AM +0200, Jan Eden via Mutt-users wrote: > > > Hi, > > > > > > I recently configured mutt on a Linux system, and cannot display HTML > > > messages in the default browser. mailcap contains the following lines: > > > > > > text/html; open %s; > > > text/html; w3m -I %{charset} -T text/html; copiousoutput > > > application/pdf; open %s; copiousoutput > > > > > > w3m is used automatically (auto_view text/html), and PDF documents are > > > opened correctly in evince. > > > > > > But when I try to open an HTML message manually, Firefox displays either > > > a permission denied error (with AppArmor enabled), or a file not found > > > error – both pointing to the message's filename. > > > > > > How can I allow Firefox to access and display the message? > > > > > I no longer use Firefox on my xubuntu system (I've moved to Vivaldi) > > but I seem to remember that Firefox's security paranoia means that you > > now have to explicitly configure to allow access to files on the local > > system. > > With AppArmor disabled, Firefox tries to display the message, but cannot > find the message file in /var/tmp/ – %s seems to point to that > directory. > > In Firefox' settings, I did not find any parameter to keep the browser > from accessing local files. > > > By 'manually' I presume you mean v[iew] the message parts and then > > m[view-mailcap] the html. > > Yes. > When I view an HTML message like this the address is like:-
file:///srv/mutt/mutt-esprimo-1000-151542-10027422769961820949.html I use a script (called via mailcap) to store the HTML message in that directory. So, in mailcap I have:- text/html; /home/chris/bin/muttview %s html ... and muttview is:- !/bin/bash # # # muttview: script called by mutt via mailcap to view attachments # and HTML e-mail (where lynx isn't good enough). # # The temporary file to be viewed is copied to directory # /srv/mutt on esprimo if running locally or to the same place on the # remote system if running via ssh. The copy to the remote system is # done using rsync to an rsync daemon on t470 via a reverse tunnel # set up when the ssh connection is made. # dir=/srv/mutt fn=$1 if [ "$2" == "html" ] then mv $fn $fn.html fn=$fn.html fi # # # if there's no DISPLAY variable then the viewer can't run, so skip the whole thing # if [ -n "$DISPLAY" ] then if [ -n "$SSH_CLIENT" ]; then # # # view on t470, files dropped into /srv/mutt there are automatically displayed # export RSYNC_PASSWORD=brzmi rsync $fn rsync://chris@localhost:50873/tv/$(basename $fn) else # # # running locally, copy to /srv/mutt and then select viewer on file type # dest=$dir/$(basename $fn) cp $fn $dest shopt -s nocasematch case $fn in *.html) $BROWSER file://$dest ;; *.pdf) atril $dest & ;; *) nomacs $dest >/dev/null 2>&1 & ;; esac fi fi # # # Clear out any old files left on esprimo by this script, doing it here # saves adding a special crontab task (but a crontab task is needed on t470) # find $dir -mtime +7 -exec rm {} \; You don't need the bit for remote viewing from my laptop, just the "running locally" bit. -- Chris Green