🐱

iTerm2にマタタビを置いたら、猫が無限に遊びにくるようになった

に公開

はじめに

エンジニアのishi2kiです。

みなさん、猫、好きですよね?プログラミングをやっているときに、すぐ近くに猫がいたらバグのイライラも消えるのではないでしょうか。
というわけで、タイトルの通り、猫をたくさん呼んで癒やしの環境を作ろうと思います!

癒やしの環境の定義

今回は、猫の呼びやすさや眺めやすさなどから、iTerm2 を癒やしの場とします。
また、呼び方は以下の 2 種類とします。

  1. 特定の呼びかけで猫を呼ぶ

    • (iTerm2 の背景を猫の画像に変える関数を作成する)
  2. 既存の行動で猫を呼ぶようにする

    • (既存のコマンドに 1 の機能を追加する)

マタタビの作り方

iTerm2 を癒やしの場にするために、マタタビ (matatabi.sh) を作っていきます。

猫の画像のダウンロードする

画像の取得には、https://cataas.com/catという、ランダムな猫の画像を返してくれる素敵な API を使わせてもらいます。
実行するたびに違う猫が来てくれます!

# 猫の画像をダウンロード
download_cat_image() {
    local output_file="$1"
    curl -s "https://cataas.com/cat" -o "$output_file"
}

背景画像の変更

AppScript を使用して iTerm2 の操作を行います。

# iTerm2の背景画像を設定
set_iterm2_background() {
    local image_path="$1"
    osascript <<EOF
tell application "iTerm2"
    tell current session of current window
        set background image to "$image_path"
    end tell
end tell
EOF
}

猫への呼びかけ

猫画像のダウンロードと背景画像の変更を組み合わせて、猫への呼びかけ関数 (nya) を作ります。
大量の猫が来てパンクすることを防ぐため、一時ファイルを使い、来た猫にはちゃんと帰ってもらうことにします。

# 猫に呼びかける
nya() {
    # 一時ファイルのディレクトリを作成
    TEMP_DIR=$(mktemp -d)

    # 一時ファイルパスを生成
    CAT_IMAGE="${TEMP_DIR}/cat_$(date +%s).jpg"

    # 猫の画像をダウンロード
    if download_cat_image "$CAT_IMAGE"; then
        set_iterm2_background "$CAT_IMAGE"
    else
        echo "猫は来てくれなかった..."
    fi

    # スクリプト終了時に一時ファイルをクリーンアップ
    trap 'rm -rf "$TEMP_DIR"' EXIT
}

既存コマンドに呼びかけを追加する

今回はcdコマンドに呼びかけを追加します。
呼びかけには多少時間がかかるので、呼びかけはバックグラウンドで実行することにします。

# cdコマンドに呼びかけを追加する
cd() {
    builtin cd "$@"
    call_cat >/dev/null 2>&1 &
    disown
}

以上を、matatabi.shという名前のファイルにまとめます。

matatabi.sh
#!/bin/bash

# 猫の画像をダウンロード
download_cat_image() {
    local output_file="$1"
    curl -s "https://cataas.com/cat" -o "$output_file"
}

# iTerm2の背景画像を設定
set_iterm2_background() {
    local image_path="$1"
    osascript <<EOF
tell application "iTerm2"
    tell current session of current window
        set background image to "$image_path"
    end tell
end tell
EOF
}

# 猫に呼びかける
nya() {
    # 一時ファイルのディレクトリを作成
    TEMP_DIR=$(mktemp -d)

    # 一時ファイルパスを生成
    CAT_IMAGE="${TEMP_DIR}/cat_$(date +%s).jpg"

    # 猫の画像をダウンロード
    if download_cat_image "$CAT_IMAGE"; then
        set_iterm2_background "$CAT_IMAGE"
    else
        echo "猫は来てくれなかった..."
    fi

    # スクリプト終了時に一時ファイルをクリーンアップ
    trap 'rm -rf "$TEMP_DIR"' EXIT
}

# cdコマンドに呼びかけを追加する
cd() {
    builtin cd "$@"
    call_cat >/dev/null 2>&1 &
    disown
}

.zshrc (.bashrc) でのファイルロード

以下の行を.zshrc もしくは.bashrc に追加して保存します。
これで、新しくタブを開いたとき、自動でmatatabi.shが読み込まれてnyaでの背景変更や、cdで移動する際の背景変更ができるようになります。

source your_path/matatabi.sh

iTerm2 の設定変更

呼んだ猫を見やすくするために、iTerm2 の設定を変更しましょう。

重要なのは、Scaling modeBlendingです。
Blendingは、自分の好みの値に設定してください。文字なんて見えなくなっていいから猫が見たいという方は 100%に近づけ、逆に文字ははっきりと見たいかな、という方は 0%に近づけてください。

猫を呼んでみる

以上で設定は終了です。実際に猫を呼んでみましょう!

  1. 初期画面

  1. nyaでの呼びかけ

  1. cdでの呼びかけ

呼びかけに応えて猫たちが来てくれました!

まとめ

iTerm2 に、matatabi.shを設置し、いつでも猫が遊びに来る環境を作成しました。
今回はcdに呼びかけを追加しましたが、もちろん他のコマンドに変えることも可能です。
pythonなどのコード実行時の呼ぶようにすれば、もしバグがあって処理に失敗しても、癒やされながら対応できるようになるかもしれません。

また、猫の可愛さを引き立てるために、iTerm2 の配色もこだわりました。
https://github.com/kuroneko2828/dotfiles/tree/main/iterm_colors に公開しているので気になる方はお使いください (例で使った配色は、aliceblue です)。
Starship の利用もおすすめです!

Discussion