Help us understand the problem. What is going on with this article?

コマンドを間違えるたびに美少女に罵られたい!

コマンドを間違えるたびに美少女に罵られたい!

コマンドを間違えるたびに美少女に罵られてみたい、と誰しも思ったことはありませんか?
そんな長年の夢を叶えましょう!!!

結果

k.png

罵ってくれました。

方法

jp2aを導入する

任意のJPEG画像をアスキーアートにして表示してくれるパッケージです。
たぶん以下でインストールできます。

$ sudo apt install jp2a # for Debian,Ubuntu
$ brew install jp2a     # for MacOSX,Linuxbrew

画像を用意する

可愛い女の子の画像を用意しましょう。また、グレースケールにしておくと表示が綺麗になります。

シェルにフックを登録する

コマンドを間違えたときに呼ばれる関数があるので、それを使いましょう。
jp2aを使い画像を表示し、その後にメッセージを表示します。

Bashの場合

bashrc
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の場合

zshrc
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 # 白黒反転で表示

これで一通りの手順は完了です。

k.png

もっと高解像度で罵られたい。というかもう動画がいい。

そう思った方、とても良い考え方だと思います。同士です。
次は、アスキーアートだけではなく、本当の画像やgifアニメを表示させたいと思います。

iTerm2.appの場合

コメント欄にて、@kuzukuzu1gou さんがiTerm2でimgcatを使う方法を教えてくれました。

k.png

jp2aの部分を、そのままimgcatというコマンドに置き換えれば表示できます。

$ imgcat hoge.jpg

xterm mltermの場合

img2sixelというパッケージを使えば、画像の表示や、gitアニメの再生ができます。

$ img2sixel hoge.jpg
$ img2sixel hoge.gif -l disable # -l disableを付けないとアニメがループしてプロンプトが帰ってこない

また、任意のyoutubeや動画ファイルをgitアニメにするには以下を参考にしてください。
Linuxで、コマンドだけでyoutubeから動画をダウンロードして任意の時間を切り出してgitアニ化する

k.png

demo.gif

ゾクゾクしちゃいますね。
これで楽しいシェルライフを送りましょう!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away