Class: Ramaze::Logger::Xosd

Inherits:
Xosd
  • Object
show all
Includes:
Ramaze::Logging
Defined in:
lib/ramaze/log/xosd.rb

Overview

Informer for the XOSD notification system for X11.

You can install the ruby-bindings with:

gem install xosd.

Constant Summary collapse

DEFAULT =
{
  :font_size       => 20,
  :font            => "-*-*-*-*-*-*-%d-*-*-*-*-*-*-*",
  :align           => 'center',
  :color           => '#FFFFFF',
  :lines           => 3,
  :valign          => 'top',
  :timeout         => 3,
  :outline_color   => "#000000",
  :outline_width   => 1,
  :vertical_offset => 20,
  :colors => {
  :error => "#FF0000",
  :info => "#00FF00",
  :warn => "#EAA61E",
  :debug => "#FFFF00"
  },
}
IGNORE =

keys to ignore when setting the options to the instance.

[:colors, :font_size, :lines]
QUEUE =

Here new messages are pushed to eventually displaying them.

Queue.new

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Ramaze::Logging

#debug, #debug?, #dev, #error, #info, #shutdown, #tag_log, #warn

Constructor Details

#initialize(options = {}) ⇒ Xosd

Create a new instance, valid options are in DEFAULT. In the background a new thread will be running that checks the QUEUE and processes all messages that are being sent to it. This is done to make output nicer and readable.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 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

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



17
18
19
# File 'lib/ramaze/log/xosd.rb', line 17

def options
  @options
end

Instance Method Details

#log(tag, *messages) ⇒ Object

pushes all messages it gets on the QUEUE for further processing.



84
85
86
87
88
# File 'lib/ramaze/log/xosd.rb', line 84

def log(tag, *messages)
  messages.each do |message|
    QUEUE << [tag, message]
  end
end