As 'grep -B' is a GNU extension, a more portable solution is preferable. The most direct and simple solution would be using 'awk':
awk '/^font.name$/{print a}{a=$0}'
But a sed solution could also be applied:
sed -n '/^font\.name$/{g;1!p;};h'
Support for terminology font name detection is based on the terminology config file. This file is always located here: `~/.config/terminology/config/standard/base.cfg` (https://github.com/billiob/terminology/blob/30cb65625bfa3b9030b80308d76ec2f30b62bd02/src/bin/config.c#L216) and is in a data/binary format. The only way I found (beside coding a dedicated extractor) is to use `strings`. The font name seems to be placed right before the `font.name` string.
strings ~/.config/terminology/config/standard/base.cfg | grep -B1 font.name | head -1
Here are results that could be output:
$ strings ~/.config/terminology/config/standard/base.cfg | grep -B1 font.name | head -1
6x13.pcf
--> (for a bitmap font) and with another font selected
$ strings ~/.config/terminology/config/standard/base.cfg | grep -B1 font.name | head -1
Inconsolata:style=Regular
These results are easily "parseable" in order to extract the font name for display.
When no image is set and there is no background image (or a `.xml` is detected) and the image option is set to `wall` (default), neofetch does not fallback on ascii mode.
The issue comes from the line 2310:
if [ ! -f "$img" ] || [ ${#term_size} -le 5 ] && [ "$image_backend" != "tycat" ]; then
as `||` and `&&` have the same priority, bash does not evaluate `[ ${#term_size} -le 5 ] && [ "$image_backend" != "tycat" ]` first.
Solution is simply this
if [ ! -f "$img" ] || ([ ${#term_size} -le 5 ] && [ "$image_backend" != "tycat" ]); then