コマンドを間違えるたびに美少女に罵られたい!
コマンドを間違えるたびに美少女に罵られてみたい、と誰しも思ったことはありませんか?
そんな長年の夢を叶えましょう!!!
結果
罵ってくれました。
方法
jp2aを導入する
任意のJPEG画像をアスキーアートにして表示してくれるパッケージです。
たぶん以下でインストールできます。
$ sudo apt install jp2a # for Debian,Ubuntu
$ brew install jp2a # for MacOSX,Linuxbrew
画像を用意する
可愛い女の子の画像を用意しましょう。また、グレースケールにしておくと表示が綺麗になります。
シェルにフックを登録する
コマンドを間違えたときに呼ばれる関数があるので、それを使いましょう。
jp2aを使い画像を表示し、その後にメッセージを表示します。
Bashの場合
function command_not_found_handle(){
if [ -e /usr/bin/jp2a ];then
if [ -e ~/kirino.jpg ];then
jp2a ~/kirino.jpg -i
fi
fi
echo "ハァ…?$1とか何言ってんの?\nコマンドもろくに覚えられないなんて、アンタどうしようもないクズね。"
}
ZSHの場合
function command_not_found_handler(){
if [ -e /usr/bin/jp2a ];then
if [ -e ~/kirino.jpg ];then
jp2a ~/kirino.jpg -i
fi
fi
echo "ハァ…?$1とか何言ってんの?\nコマンドもろくに覚えられないなんて、アンタどうしようもないクズね。"
}
fishの場合
@QUANON さんから、以下のようなコメントを頂きました!ありがとうございます!!
僕は fish を使っているのですが、このシェルでも次の function を定義することで実現できました。
function command_not_found_handler --on-event fish_command_not_found
if type -q jp2a; and test -e ~/kirino.jpg
jp2a ~/kirino.jpg -i
end
echo ハァ…?$argv[1]とか何言ってんの?
echo コマンドもろくに覚えられないなんて、アンタどうしようもないクズね。
end
bashとzshで'handle'と'handler'の違いがあるので注意です。また画像のパスは適宜変更してください。
また、jp2a自体のオプションを弄ることで、表示するときの行や列を指定することができます。
デフォルトでは、白に近い部分を表示させますが、ぼくの場合白黒にしてほとんど白となってしまい、見づらかったので、あえて黒の部分を表示させるために-i
を付けています。
$ jp2a hoge.jpg --width=100 # 横幅を100列固定で表示
$ jp2a hoge.jpg --height=100 # 横幅を100列固定で表示
$ jp2a hoge.jpg -i # 白黒反転で表示
これで一通りの手順は完了です。
もっと高解像度で罵られたい。というかもう動画がいい。
そう思った方、とても良い考え方だと思います。同士です。
次は、アスキーアートだけではなく、本当の画像やgifアニメを表示させたいと思います。
iTerm2.appの場合
コメント欄にて、@kuzukuzu1gou さんがiTerm2でimgcatを使う方法を教えてくれました。
jp2aの部分を、そのままimgcat
というコマンドに置き換えれば表示できます。
$ imgcat hoge.jpg
xterm mltermの場合
img2sixelというパッケージを使えば、画像の表示や、gitアニメの再生ができます。
$ img2sixel hoge.jpg
$ img2sixel hoge.gif -l disable # -l disableを付けないとアニメがループしてプロンプトが帰ってこない
また、任意のyoutubeや動画ファイルをgitアニメにするには以下を参考にしてください。
Linuxで、コマンドだけでyoutubeから動画をダウンロードして任意の時間を切り出してgitアニ化する
ゾクゾクしちゃいますね。
これで楽しいシェルライフを送りましょう!