ShellScriptでドヤりたいGWアドベントカレンダー3日目いくで。
適当な画像が必要なときって結構あると思う。
そんな時一々Googleで画像検索するのが億劫になったのでコマンド一発で作れるようにした。
デモ
こんな感じで好きな文字列の画像を生成する。
方法
function create_bg_img() { local size=1280x760 local backgroundColor="#000000" local fillColor="#ff8ad8" # 文字色 # フォントによっては日本語対応しておらず「?」になってしまうので注意 local fontPath=/System/Library/Fonts/ヒラギノ明朝\ ProN.ttc local default_caption='(・∀・)' local caption=${1:-$default_caption} local imgPath=~/output.png convert \ -size $size \ -background $backgroundColor\ -fill $fillColor \ -font $fontPath \ caption:$caption \ $imgPath }
convert
コマンドを使用するので、imageMagick
が必要。
Macだったらbrew install imagemagick
でインストールできるかな。
実行
$ create_bg_img hoge
実行結果
サイズを選択して生成したい
「1024px以下の画像のみ対応」とかあるので、ある程度サイズ指定して生成したい。
fzfでサイズを選択して生成の流れが一番楽。
function create_bg_img() { local sizes=(100x100 320x240 360x480 500x500 640x480 720x480 1024x768 1280x960) local size=$(echo ${sizes} | tr ' ' '\n' | fzf) local backgroundColor="#000000" local fillColor="#ff8ad8" # 文字色 # フォントによっては日本語対応しておらず「?」になってしまうので注意 local fontPath=/System/Library/Fonts/ヒラギノ明朝\ ProN.ttc local default_caption='(・∀・)' local caption=${1:-$default_caption} local imgPath=~/output.png convert \ -size $size \ -background $backgroundColor\ -fill $fillColor \ -font $fontPath \ caption:$caption \ $imgPath }
サイズ一覧はWikipediaから適当に取ってきた。
実行結果
iTermの背景画像を差し替える
AppleScriptと組み合わせればこんなこともできる。
SSHしたときにホスト名の文字列画像を生成して、AppleScriptでiTermの背景画像に設定しています。
iTermの背景画像を設定するAppleScript
iterm_change_bg_img.sh
#!/usr/bin/osascript on run argv tell application "iTerm" activate set _current_session to current session of current window tell _current_session set image_path to (item 1 of argv) set background image to image_path end tell end tell end run
sshする時にitermの画像を設定する
.zshrc
function create_bg_img() { local size=1280x960 local backgroundColor="#000000" local fillColor="#ff8ad8" # 文字色 local fontPath=/System/Library/Fonts/ヒラギノ明朝\ ProN.ttc local default_caption='(・∀・)' local caption=${1:-$default_caption} local imgPath=~/output.png convert \ -size $size \ -background $backgroundColor\ -fill $fillColor \ -font $fontPath \ caption:$caption \ $imgPath } function ssh_local() { local ssh_config=~/.ssh/config local server=$(cat $ssh_config | grep "Host " | sed "s/Host //g" | fzf) if [ -z "$server" ]; then return fi # 画像生成 create_bg_img $server # itermに画像を設定 osascript ~/iterm_change_bg_img.sh ~/output.png ssh $server }
終わり
shellの良いところはすぐ試せるし、いろんなものと絡められるところ。
あと依存は多少あるが、注意すれば割とどこでも動くところがスキ。
SSHしたときに画像を差し替えるってのは実際は使ってない。iTermのバッジでホスト名を表示するほうが美しかったので普段はそっちを使っている。