From f481d9f59cfa4cab4cbd081e6c64e492d72becce Mon Sep 17 00:00:00 2001 From: Steve Forget Date: Sun, 22 Sep 2019 16:58:51 +0200 Subject: [PATCH] Added font detection for ConEmu --- neofetch | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/neofetch b/neofetch index a2bbc2a0..66968b21 100755 --- a/neofetch +++ b/neofetch @@ -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 }