diff options
Diffstat (limited to 'debug')
-rwxr-xr-x | debug/iterm.zsh | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/debug/iterm.zsh b/debug/iterm.zsh new file mode 100755 index 00000000..bc3e72b4 --- /dev/null +++ b/debug/iterm.zsh @@ -0,0 +1,80 @@ +#!/usr/bin/env zsh +#vim:ft=zsh ts=2 sw=2 sts=2 et fenc=utf-8 + +if [[ "$TERM_PROGRAM" != "iTerm.app" ]]; then + print "Your Terminal Emulator does not appear to be iTerm2!" + exit 1 +fi + +local normalFont +local type +local command +local ambiguousDoubleWidth +local minimumContrast +local useDifferentFont + +# Unfortunately the profile name is not unique, but it seems to be the only thing +# that identifies an active profile. There is the "id of current session of current window" +# thou, but that does not match to a guid in the plist. +# So, be warned! Collisions may occur! +# See: https://groups.google.com/forum/#!topic/iterm2-discuss/0tO3xZ4Zlwg +local currentProfileName=$(osascript -e 'tell application "iTerm2" to profile name of current session of current window') + +# Warning: Dynamic profiles are not taken into account here! +# https://www.iterm2.com/documentation-dynamic-profiles.html + +# Count Guids in "New Bookmarks"; they should be unique +local profilesCount=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:" ~/Library/Preferences/com.googlecode.iterm2.plist 2>/dev/null | grep -c "Guid") +for idx in $(seq 0 "${profilesCount}"); do + local profileName=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Name:" ~/Library/Preferences/com.googlecode.iterm2.plist 2>/dev/null) + if [[ "${profileName}" == "${currentProfileName}" ]]; then + # "Normal Font" + normalFont=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Normal\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist) + type=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Terminal\ Type:" ~/Library/Preferences/com.googlecode.iterm2.plist) + command=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Command:" ~/Library/Preferences/com.googlecode.iterm2.plist) + ambiguousDoubleWidth=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Ambiguous\ Double\ Width:" ~/Library/Preferences/com.googlecode.iterm2.plist) + minimumContrast=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Minimum\ Contrast:" ~/Library/Preferences/com.googlecode.iterm2.plist) + + # Font for non-ascii characters + # Only check for a different non-ascii font, if the user checked + # the "use a different font for non-ascii text" switch. + useDifferentFont=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Use\ Non-ASCII\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist) + if [[ "$useDifferentFont" == "true" ]]; then + nonAsciiFont=$(/usr/libexec/PlistBuddy -c "Print :New\ Bookmarks:${idx}:Non\ Ascii\ Font:" ~/Library/Preferences/com.googlecode.iterm2.plist) + if [[ "$normalFont" != "$nonAsciiFont" ]]; then + normalFont="$normalFont (normal) / $nonAsciiFont (non-ascii)" + fi + fi + break + fi +done + +print -P "You use %F{blue}iTerm2%f with the following settings:" +print -P " Font: ${normalFont}" +print -P " Terminal-Type: ${type}" +print -P " Command: ${command}" + +############################# +# Analyse possible problems # +############################# +local problemsFound +if [[ "${ambiguousDoubleWidth}" == "true" ]]; then + problemsFound="${problemsFound}\n * Please uncheck 'Treat ambiguous characters as double-width'." +fi +if (( minimumContrast > 0 )); then + problemsFound="${problemsFound}\n * Please set minimum contrast to zero." +fi +if [[ $(echo "${normalFont}" | grep -c -E "Powerline|Awesome|Nerd") -eq 0 ]]; then + problemsFound="${problemsFound}\n * It does not seem like you use an Powerline-enabled or Awesome Terminal Font!" +fi + +############################# +# Output problems # +############################# +if [[ -n "${problemsFound}" ]]; then + print -P "\n" + print -P "%F{yellow}Possible Problems found:%f" + print -P "${problemsFound}" +else + print -P "%F{green}No Problems found%f. Yay!" +fi
\ No newline at end of file |