zenityで進捗状況の可視化が手軽にできる。

zenityというコマンドを知りました><

zenity?

これとrubyを組み合わせると計算の進捗状況を可視化することができるかもしれません

rubyと組み合わせる

1から100までの和を計算するコードです。

class VisibleObject
  include Enumerable
  def initialize a
    @content = a if generate? a
    @io = IO.popen("zenity --progress --auto-close","r+")
  end

  def generate? a
    if a.respond_to? :each
      a
    else
      raise "this Object doesn't have `each` method"
    end
  end

  def each
    @size = @content.size
    @content.each_with_index do |e,i|
      n = 100 * i / @size
      @io.write("#{n}\n")
      yield(e)
    end
  end
end

class Range
  alias :size :last
end

class Object
  def to_visiable
    VisibleObject.new(self)
  end
end
raise "zenity is not found" unless system("zenity --help")
(1..100).to_visiable.inject{ |s,n| sleep 0.1; s+n}