summaryrefslogtreecommitdiff
path: root/debug
diff options
context:
space:
mode:
authorDominik Ritter <dritter03@googlemail.com>2017-03-17 11:06:48 +0300
committerDominik Ritter <dritter03@googlemail.com>2017-03-17 11:06:48 +0300
commitaa26c73521ed13aa62d7a751678648c6be3a138c (patch)
treee55e22f016b0740a4486e49ea3a443a219913bde /debug
parentb9ad552649a8a1c5a62e9358523ee88ff2a572ac (diff)
Add iTerm2 debugging script
Diffstat (limited to 'debug')
-rwxr-xr-xdebug/iterm.zsh80
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