Added font detection for ConEmu

This commit is contained in:
Steve Forget 2019-09-22 16:58:51 +02:00
parent 2b70a8b983
commit f481d9f59c
No known key found for this signature in database
GPG Key ID: 0377B7267CA511E6
1 changed files with 43 additions and 0 deletions

View File

@ -3202,6 +3202,49 @@ END
# Default fallback font hardcoded in terminal-preferences.c
[[ -z "$term_font" ]] && term_font="Monospace 12"
;;
"conemu-"*)
local ce_arg_list
local ce_arg_idx
local ce_conf
# Could have used `eval set -- "$ConEmuArgs"` instead for arg parsing but eval is evil...
readarray -t ce_arg_list < <(xargs -n1 printf "%s\n" <<< "${ConEmuArgs-}")
for ce_arg_idx in "${!ce_arg_list[@]}"; do
# Search for "-LoadCfgFile" arg
[[ "${ce_arg_list[$ce_arg_idx]}" != -LoadCfgFile ]] && continue
# Conf path is the next arg
((++ce_arg_idx))
ce_conf="${ce_arg_list[$ce_arg_idx]}"
break
done
# https://conemu.github.io/en/ConEmuXml.html#search-sequence
local ce_seq=(
"$ce_conf"
"$ConEmuDir\ConEmu.xml"
"$ConEmuDir\.ConEmu.xml"
"$ConEmuBaseDir\ConEmu.xml"
"$ConEmuBaseDir\.ConEmu.xml"
"$APPDATA\ConEmu.xml"
"$APPDATA\.ConEmu.xml"
)
for ce_conf in "${ce_seq[@]}"; do
# Search for first conf file available
[[ ! -f "$ce_conf" ]] && continue
# Very basic XML parsing
term_font="$(awk '/name="FontName"/ && match($0, /data="([^"]*)"/) {print substr($0, RSTART+6, RLENGTH-7)}' "$ce_conf")"
break
done
# Null-terminated contents in /proc/registry files triggers a Bash warning. Use read instead
[[ -z "$term_font" ]] && \
read -r term_font < /proc/registry/HKEY_CURRENT_USER/Software/ConEmu/.Vanilla/FontName
;;
esac
}