LoginSignup
15
6

More than 3 years have passed since last update.

手を洗えない方のToilet紹介

Last updated at Posted at 2018-11-07

...いや手を洗えないtoiletって色々あるとは思うのですが

今回は、文字列をASCII ARTに変換するfigletの派生プロジェクト、toiletの紹介を軽くしようと思います。
とか言って結構自分用メモ書きなところあるのでそれはご了承を...


1. Toiletとは

toiletは、 文字列をASCII ARTに変換してくれる ツールです。
AAに変換してくれると言っても、 'cat'と与えたら猫のAAが出てくるとかそういう夢のようなツールではありません。
単純に文字列を変換してくれます。

$ toilet "hello"

 #             ""#    ""#
 # mm    mmm     #      #     mmm
 #"  #  #"  #    #      #    #" "#
 #   #  #""""    #      #    #   #
 #   #  "#mm"    "mm    "mm  "#m#"

Figletとの違い

同じようなツールとして、figletがあります。
結論から言ってしまうと、Toiletfigletからの派生ツールにあたります。
どうやらfigletでは日本語が使えないのに対し、toiletは(平仮名/片仮名だけ)対応しているようです。

[TIPS] 他のbanner系ツール

他の有名なbanner系ツールといえば、そのままbannerコマンドがあります。
しかし、これは与えられた文字列を縦向きに出力する為、toiletfigletとはかなり違ったものになります
ちなみに、man bannerには以下の記述があります:

出力は、適切な幅の紙に、ページ割りなしでプリントされる必要があります

The output should be printed on paper of the appropriate width, with no
breaks between the pages.

...まあ、昔の印刷用のコマンドだったようですね。

2. インストール

今回自分はmacユーザーなので、homebrewで仕入れました

  $ brew install toilet

その他については調べてないし現状調べる気がありません(情報提供いただけるとありがたかったりします)

3. 使い方

一番シンプルな使い方としては、文字列を渡すだけです

  $ toilet 'Qiita!!'

    mmmm    "      "      m             m      m
   m"  "m mmm    mmm    mm#mm   mmm     #      #
   #    #   #      #      #    "   #    #      #
   #    #   #      #      #    m"""#    "      "
    #mm#" mm#mm  mm#mm    "mm  "mm"#    #      #
       #

ただし、ここからがtoiletの真骨頂的なものです

フォントを変える

toiletには複数のフォントが同梱されています。
フォントを指定するには、-fオプションを使います。

  $ toilet -f pagga 'Qiita!!'
  ░▄▀▄░▀█▀░▀█▀░▀█▀░█▀█░█░█
  ░█\█░░█░░░█░░░█░░█▀█░▀░▀
  ░░▀\░▀▀▀░▀▀▀░░▀░░▀░▀░▀░▀

面白いねっ!!

...じゃなくって他のフォントについて気になりません?

フォントの場所について

toilet用のフォントたちは、標準でいくつかインストールされています。

フォントは.flfファイルとして/usr/share/figletディレクトリに格納されています。

Fonts are located in the same /usr/share/figlet directory as .flf files

[source]: https://delightlylinux.wordpress.com/2015/11/13/colored-text-with-toilet/

どうやら/usr/share/figletにあるようですが、 homebrew勢の場合は/usr/local/Celler/toilet/<version>/share/figlet/以下になるので注意が必要です。
そこにあるファイルの拡張子を抜いた名前を入力してやれば使えます。
フォントの見た目を全部載せようかとも思ったけど誰かやってくれてた気がするし、こういうのって探すのが楽しかったりするので載せないでおきます。
お気に入りのフォントを見つけてね...

と思ったけど一応載せておきます、観たい方はどうぞ

現状、初期状態でインストールされるフォントは以下の通りです
ascii12 bigascii9 circle future mono9 smascii9 smmono12 ascii9 bigmono12 emboss letter pagga smblock smmono9 bigascii12 bigmono9 emboss2 mono12 smascii12 smbraille wideterm

全フォント試してみたければ、以下のスニペットをお使いください。

read -p "string?: " test_string
for font in ascii12 bigascii9 circle future mono9 smascii9 smmono12 ascii9 bigmono12 emboss letter pagga smblock smmono9 bigascii12 bigmono9 emboss2 mono12 smascii12 smbraille  wideterm;do
echo "$f"
toilet -w $(tput cols) -f $font "$test_string"
done
unset test_string

以下は、hello worldで試してみた例です


   mm    mm            mmmm      mmmm                                                        mmmm            mm
   ##    ##            ""##      ""##                                                        ""##            ##
   ##    ##   m####m     ##        ##       m####m            ##      ##  m####m    ##m####    ##       m###m##
   ########  ##mmmm##    ##        ##      ##"  "##           "#  ##  #" ##"  "##   ##"        ##      ##"  "##
   ##    ##  ##""""""    ##        ##      ##    ##            ##m##m##  ##    ##   ##         ##      ##    ##
   ##    ##  "##mmmm#    ##mmm     ##mmm   "##mm##"            "##  ##"  "##mm##"   ##         ##mmm   "##mm###
   ""    ""    """""      """"      """"     """"               ""  ""     """"     ""          """"     """ ""




                 ###    ###                                       ###        #
   #    #          #      #                                         #        #
   #    #          #      #                                         #        #
   #    #  ###     #      #     ###         #.    #  ###    #:##:   #     ## #
   #    #    :#    #      #    #   #         :   :# #   #   ##  #   #    #   #
   ###### #   #    #      #    #   #        .# # #: #   #   #       #    #   #
   #    # #####    #      #    #   #         #:#:#  #   #   #       #    #   #
   #    # #        #      #    #   #         #####  #   #   #       #    #   #
   #    #     #    #.     #.   #   #         :#:#:  #   #   #       #.   #   #
   #    #  ###:    :##    :##   ###           # #    ###    #       :##   ## #



  Ⓗⓔⓛⓛⓞ ⓦⓞⓡⓛⓓ
  ╻ ╻┏━╸╻  ╻  ┏━┓   ╻ ╻┏━┓┏━┓╻  ╺┳┓
  ┣━┫┣╸ ┃  ┃  ┃ ┃   ┃╻┃┃ ┃┣┳┛┃   ┃┃
  ╹ ╹┗━╸┗━╸┗━╸┗━┛   ┗┻┛┗━┛╹┗╸┗━╸╺┻┛

   ▄    ▄        ▀▀█    ▀▀█                                       ▀▀█        █
   █    █  ▄▄▄     █      █     ▄▄▄         ▄     ▄  ▄▄▄    ▄ ▄▄    █     ▄▄▄█
   █▄▄▄▄█ █▀  █    █      █    █▀ ▀█        ▀▄ ▄ ▄▀ █▀ ▀█   █▀  ▀   █    █▀ ▀█
   █    █ █▀▀▀▀    █      █    █   █         █▄█▄█  █   █   █       █    █   █
   █    █ ▀█▄▄▀    ▀▄▄    ▀▄▄  ▀█▄█▀          █ █   ▀█▄█▀   █       ▀▄▄  ▀█▄██



  .  ,    'T  'T                      'T    ]
  ]  [ m,  ]   ]   m,     ,  , m,  ,m  ]   md
  ]mm[]`]  ]   ]  ]`T     \..`]`T  P ` ]  ]`T
  ]  []""  ]   ]  ] ]     ]dd ] ]  [   ]  ] ]
  ]  ['b/  'm  'm 'bP      [[ 'bP  [   'm 'bW



  ▗▖ ▗▖     ▗▄▖  ▗▄▖                           ▗▄▖     ▗▖
  ▐▌ ▐▌     ▝▜▌  ▝▜▌                           ▝▜▌     ▐▌
  ▐▌ ▐▌ ▟█▙  ▐▌   ▐▌   ▟█▙      █   █ ▟█▙  █▟█▌ ▐▌   ▟█▟▌
  ▐███▌▐▙▄▟▌ ▐▌   ▐▌  ▐▛ ▜▌     ▜ █ ▛▐▛ ▜▌ █▘   ▐▌  ▐▛ ▜▌
  ▐▌ ▐▌▐▛▀▀▘ ▐▌   ▐▌  ▐▌ ▐▌     ▐▙█▟▌▐▌ ▐▌ █    ▐▌  ▐▌ ▐▌
  ▐▌ ▐▌▝█▄▄▌ ▐▙▄  ▐▙▄ ▝█▄█▘     ▝█ █▘▝█▄█▘ █    ▐▙▄ ▝█▄█▌
  ▝▘ ▝▘ ▝▀▀   ▀▀   ▀▀  ▝▀▘       ▀ ▀  ▝▀▘  ▀     ▀▀  ▝▀▝▘



   m    m        ""#    ""#                                       ""#        #
   #    #  mmm     #      #     mmm         m     m  mmm    m mm    #     mmm#
   #mmmm# #"  #    #      #    #" "#        "m m m" #" "#   #"  "   #    #" "#
   #    # #""""    #      #    #   #         #m#m#  #   #   #       #    #   #
   #    # "#mm"    "mm    "mm  "#m#"          # #   "#m#"   #       "mm  "#m##





   ██    ██            ████      ████                                                        ████            ██
   ██    ██            ████      ████                                                        ████            ██
   ██    ██              ██        ██                                                          ██            ██
   ██    ██   ░████▒     ██        ██       ░████░            ██      ██  ░████░    ██░████    ██       ▒███░██
   ██    ██  ░██████▒    ██        ██      ░██████░           ██░    ░██ ░██████░   ███████    ██      ▒███████
   ████████  ██▒  ▒██    ██        ██      ███  ███           ▓█▒ ██ ▒█▓ ███  ███   ███░       ██      ███  ███
   ████████  ████████    ██        ██      ██░  ░██           ▒█▒░██░▒█▒ ██░  ░██   ██         ██      ██░  ░██
   ██    ██  ████████    ██        ██      ██    ██            █▓▒██▒██  ██    ██   ██         ██      ██    ██
   ██    ██  ██          ██        ██      ██░  ░██            ██▓██▓██  ██░  ░██   ██         ██      ██░  ░██
   ██    ██  ███░  ▒█    ██▒       ██▒     ███  ███            ███▒▒██▓  ███  ███   ██         ██▒     ███  ███
   ██    ██  ░███████    █████     █████   ░██████░            ▒██░░██▒  ░██████░   ██         █████   ▒███████
   ██    ██   ░█████▒    ░████     ░████    ░████░             ░██  ██    ░████░    ██         ░████    ▒███░██




  ┃ ┃┏━┛┃  ┃  ┏━┃  ┃┃┃┏━┃┏━┃┃  ┏━
  ┏━┃┏━┛┃  ┃  ┃ ┃  ┃┃┃┃ ┃┏┏┛┃  ┃ ┃
  ┛ ┛━━┛━━┛━━┛━━┛  ━━┛━━┛┛ ┛━━┛━━
  H   H EEEEE L     L      OOO        W   W  OOO  RRRR  L     DDDD
  H   H E     L     L     O   O       W   W O   O R   R L     D   D
  HHHHH EEEE  L     L     O   O       W W W O   O RRRR  L     D   D
  H   H E     L     L     O   O       W W W O   O R  R  L     D   D
  H   H EEEEE LLLLL LLLLL  OOO         W W   OOO  R   R LLLLL DDDD

  ░█░█░█▀▀░█░░░█░░░█▀█░░░█░█░█▀█░█▀▄░█░░░█▀▄
  ░█▀█░█▀▀░█░░░█░░░█░█░░░█▄█░█░█░█▀▄░█░░░█░█
  ░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀░▀░▀▀▀░▀▀░
  ▌ ▌   ▜▜               ▜   ▌
  ▙▄▌▞▀▖▐▐ ▞▀▖ ▌  ▌▞▀▖▙▀▖▐ ▞▀▌
  ▌ ▌▛▀ ▐▐ ▌ ▌ ▐▐▐ ▌ ▌▌  ▐ ▌ ▌
  ▘ ▘▝▀▘ ▘▘▝▀   ▘▘ ▝▀ ▘   ▘▝▀▘

  ▗  ▖    ▝▜  ▝▜                      ▝▜    ▐
  ▐  ▌ ▄▖  ▐   ▐   ▄▖     ▖  ▖ ▄▖  ▖▄  ▐   ▄▟
  ▐▄▄▌▐▘▐  ▐   ▐  ▐▘▜     ▚▗▗▘▐▘▜  ▛ ▘ ▐  ▐▘▜
  ▐  ▌▐▀▀  ▐   ▐  ▐ ▐     ▐▟▟ ▐ ▐  ▌   ▐  ▐ ▐
  ▐  ▌▝▙▞  ▝▄  ▝▄ ▝▙▛      ▌▌ ▝▙▛  ▌   ▝▄ ▝▙█





   ##    ##            ####      ####                                                        ####            ##
   ##    ##            ####      ####                                                        ####            ##
   ##    ##              ##        ##                                                          ##            ##
   ##    ##   .####:     ##        ##       .####.            ##      ##  .####.    ##.####    ##       :###.##
   ##    ##  .######:    ##        ##      .######.           ##.    .## .######.   #######    ##      :#######
   ########  ##:  :##    ##        ##      ###  ###            #: ## :#  ###  ###   ###.       ##      ###  ###
   ########  ########    ##        ##      ##.  .##           :#:.##.:#: ##.  .##   ##         ##      ##.  .##
   ##    ##  ########    ##        ##      ##    ##            # :##:##  ##    ##   ##         ##      ##    ##
   ##    ##  ##          ##        ##      ##.  .##            ## ## ##  ##.  .##   ##         ##      ##.  .##
   ##    ##  ###.  :#    ##:       ##:     ###  ###            ###::##   ###  ###   ##         ##:     ###  ###
   ##    ##  .#######    #####     #####   .######.            :##..##:  .######.   ##         #####   :#######
   ##    ##   .#####:    .####     .####    .####.             .##  ##    .####.    ##         .####    :###.##






                 ███    ███                                       ███        █
   █    █          █      █                                         █        █
   █    █          █      █                                         █        █
   █    █  ███     █      █     ███         █░    █  ███    █▒██▒   █     ██▓█
   █    █ ▓▓ ▒█    █      █    █▓ ▓█        ▓▒   ▒█ █▓ ▓█   ██  █   █    █▓ ▓█
   ██████ █   █    █      █    █   █        ░█ █ █▒ █   █   █       █    █   █
   █    █ █████    █      █    █   █         █▒█▒█  █   █   █       █    █   █
   █    █ █        █      █    █   █         █████  █   █   █       █    █   █
   █    █ ▓▓  █    █░     █░   █▓ ▓█         ▒█▒█▒  █▓ ▓█   █       █░   █▓ ▓█
   █    █  ███▒    ▒██    ▒██   ███           █ █    ███    █       ▒██   ██▓█



  ║ ║╔═╝║  ║  ╔═║  ║║║╔═║╔═║║  ╔═
  ╔═║╔═╝║  ║  ║ ║  ║║║║ ║╔╔╝║  ║ ║
  ╝ ╝══╝══╝══╝══╝  ══╝══╝╝ ╝══╝══

   ▄▄    ▄▄            ▄▄▄▄      ▄▄▄▄                                                        ▄▄▄▄            ▄▄
   ██    ██            ▀▀██      ▀▀██                                                        ▀▀██            ██
   ██    ██   ▄████▄     ██        ██       ▄████▄            ██      ██  ▄████▄    ██▄████    ██       ▄███▄██
   ████████  ██▄▄▄▄██    ██        ██      ██▀  ▀██           ▀█  ██  █▀ ██▀  ▀██   ██▀        ██      ██▀  ▀██
   ██    ██  ██▀▀▀▀▀▀    ██        ██      ██    ██            ██▄██▄██  ██    ██   ██         ██      ██    ██
   ██    ██  ▀██▄▄▄▄█    ██▄▄▄     ██▄▄▄   ▀██▄▄██▀            ▀██  ██▀  ▀██▄▄██▀   ██         ██▄▄▄   ▀██▄▄███
   ▀▀    ▀▀    ▀▀▀▀▀      ▀▀▀▀      ▀▀▀▀     ▀▀▀▀               ▀▀  ▀▀     ▀▀▀▀     ▀▀          ▀▀▀▀     ▀▀▀ ▀▀



  ., .,     .m,  .m,                           .m,     .,
  ][ ][     'T[  'T[                           'T[     ][
  ][ ][ dWb  ][   ][   dWb      W   W dWb  WdW[ ][   dWd[
  ]WWW[]bmd[ ][   ][  ]P T[     T W P]P T[ W`   ][  ]P T[
  ][ ][]P""` ][   ][  ][ ][     ]bWd[][ ][ W    ][  ][ ][
  ][ ]['Wmm[ ]bm  ]bm 'WmW`     'W W`'WmW` W    ]bm 'WmW[
  '` '` '""   ""   ""  '"`       " "  '"`  "     ""  '"'`


   ⣇⣸ ⢀⡀ ⡇ ⡇ ⢀⡀   ⡀ ⢀ ⢀⡀ ⡀⣀ ⡇ ⢀⣸
   ⠇⠸ ⠣⠭ ⠣ ⠣ ⠣⠜   ⠱⠱⠃ ⠣⠜ ⠏  ⠣ ⠣⠼
  Hello  world

フィルターをかける

toiletでは複数のフィルターをかけることができます。
その一覧はtoilet --filter listで見ることができます。

フィルター 説明
crop crop unused blanks (わからなかった)
gay 出力を虹色にします。
metal メタルっぽい色のエフェクトを追加します。
flip 横向きに反転します。
flop 縦向きに反転します。
180 180度回転します。
left 反時計回りに90度回転します。
right 時計回りに90度回転します。
border 太線で文字の周りを囲います。

文字列の幅を指定する

(ほんの少しだけ)長いテキストを変換させようとすると、微妙なところで折り返されてしまいます。
これは、デフォルトでは80文字で折り返すように設定されているかららしいです。
-wオプションを使用することで、文字列の幅を指定できます。

画面いっぱいの幅を使いたい場合:

  $ toilet -w $(tput cols) "text"

$(tput cols)は現在の端末の横幅を返します。


面白そうじゃないですか??
時間的都合もあるのでここまでにしておきますが、 画像に出力したりHTMLに出力したりもできるようです。
ここ読むと色々書いてあって楽しいので英語わかる人は是非。
いつか翻訳しておきたい。

15
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6