    # File lib/ramaze/log/xosd.rb, line 51
          def initialize(options = {})
            @options = DEFAULT.merge(options)

            super(@options[:lines])

            @options.each do |key, value|
              next if IGNORE.include?(key)
              value %= @options[:font_size] if key == :font
              send("#{key}=", value)
            end

            Thread.new(self) do |xosd|
              loop do
                items = []
                lines = xosd.options[:lines]
                items << QUEUE.shift until QUEUE.empty? or items.size >= lines

                unless items.empty?
                  # pad up with empty lines to avoid dragging around old messages.
                  items << [:info, ' '] until items.size >= lines

                  items.each_with_index do |(tag, message), i|
                  xosd.color = xosd.options[:colors][tag.to_sym]
                  xosd.display(message, i)
                  end
                end
                sleep xosd.options[:timeout]
              end
            end
          end