まめ畑

ゆるゆると書いていきます

presentをUbuntuで使う時のメモ

id:limitususから質問されて知った、Rubyで書かれたターミナルでプレゼンをするツール「present」をUbuntuで使う時のメモ。
presentについてはターミナル用プレゼンツールをリリースいたしました - Hello, world! - s21gが公式ページです。


presentをインストールする方法は

gem install present

が簡単。


しかし、いざ実行をしようとすると

present.rb:72:in `write': Broken pipe (Errno::EPIPE)

が発生してしまう。
これが聞かれたこと。
でも、検証するためのPCが死んでいたので実際に動作して確かめることが出来ないという罠・・・。


そこで、ソースの該当箇所を見たら

  def figlet(font, cols, text)
    font = 'term' if mb?(text)
    cmd = Escape.shell_command(['figlet', '-f', "#{font}.flf", '-w', cols.to_s])
    IO.popen(cmd, 'r+') do |io|
      io.write text
      io.close_write
      io.read
    end
  end

となっていました。
figletを実行して、そこにテキストを書き込もうとしてPIPEのエラーになっている模様なので、単純にfigletが入っていないだけでは?と思い伝えたところ、そうでした。

Ubuntuでfigletを入れるのは簡単

sudo apt-get install figlet

ただこれだけ。

presentで使うライブラリはgemで依存関係まとめてインストールされます。
自分の環境では

ncurses-0.9.1
Text-1.1.2
escape-0.0.4
redgreen-1.2.2

がインストールされました。

使い方は、Readmeに書かれていますが。
プレゼンの内容が書かれた(もちろんフォーマットにしたがって)ファイルを用意して

present fileName

簡単ですね。
オプションで開始ページも指定できます。


しかし、Windowsではこれを動かすのは少し面倒。
なぜなら、ncursesが依存関係でインストールされるため。
ncursesとは、CUIでスクリーンやキー入力、カーソルなどを管理するためのライブラリです。
Windowsで使う方法を探していたら、windows で curses を使うにはを見つけました。
Cygwinがいるみたいですね。


やっぱり、自作プレゼンツールはいいですね。
自分も作ってみたくなりました。


少し落ち着いたら作ってみよう。