iTerm 2 のカラースキームをファイル書出し/読込みをする

 English

連休で暇なので、Boxen の代わりに dotfiles を使って Git リポジトリで諸々環境設定を管理する方法を検証しています。

iTerm 2 のカラースキームも puppet-iterm2 というモジュールを使って管理していて、とても便利でした。

dotfiles に以降するために、iTerm 2 のカラースキームをファイル書出し/読込みをする、以下のスクリプトを作りました。

書出し:

iTerm 2 に設定されているカラースキームを書出します。

mkdir -p ~/Desktop/iterm2-color-schemes
cd ~/Desktop/iterm2-color-schemes
rm -f *
/usr/libexec/PlistBuddy -c "print :'Custom Color Presets'" \
  ~/Library/Preferences/com.googlecode.iterm2.plist | grep '^    \w' | \
  ruby -e 'puts STDIN.read.gsub(/\s=\sDict\s{/,"").gsub(/^\s+/,"")' > list.txt
while read THEME; do
  echo "exporting ${THEME}"
  /usr/libexec/PlistBuddy -c "print :'Custom Color Presets':'$THEME'" \
    ~/Library/Preferences/com.googlecode.iterm2.plist | \
    ruby -e "puts STDIN.read.strip.gsub(/Dict {/, '{')
      .gsub(/([A-Z][a-z0-9\\s]+)\\s=\\s/i, %Q{'\\\\1' = })
      .gsub(/(\\d(?:\.\\d+)?)$/, %Q{'\\\\1';})
      .gsub(/}\\n/, %Q(};\n))" > "$THEME"
done < list.txt
rm list.txt
cd -

読込み:

cd ~/Desktop/iterm2-color-schemes
for f in *; do
  THEME=$(basename "$f")
  defaults write -app iTerm 'Custom Color Presets' -dict-add "$THEME" "$(cat "$f")"
done
cd -
comments powered by Disqus