Add swap fields to Memory widget
[amazing.git] / lib / amazing / widgets / memory.rb
blobb0975c124e4a370879bca803de279eadf999aa97
1 # Copyright (C) 2008 Dag Odenhall <dag.odenhall@gmail.com>
2 # Licensed under the Academic Free License version 3.0
4 require 'amazing/widget'
5 require 'amazing/proc_file'
7 module Amazing
8   module Widgets
9     class Memory < Widget
10       description "Various memory related data"
11       field :total, "Total kilobytes of memory"
12       field :free, "Free kilobytes of memory"
13       field :buffers, "Buffered kilobytes of memory"
14       field :cached, "Cached kilobytes of memory"
15       field :usage, "Percentage of used memory"
16       field :swap_total, "Total kilobytes of swap"
17       field :swap_free, "Free kilobytes of swap"
18       field :swap_cached, "Cached kilobytes of swap"
19       field :swap_usage, "Percentage of used swap"
20       default "@usage"
22       init do
23         meminfo = ProcFile.parse_file("meminfo")[0]
24         @total = meminfo["MemTotal"].to_i
25         @free = meminfo["MemFree"].to_i
26         @buffers = meminfo["Buffers"].to_i
27         @cached = meminfo["Cached"].to_i
28         @usage = ((@total - @free - @cached - @buffers) * 100) / @total.to_f
29         @swap_total = meminfo["SwapTotal"].to_i
30         @swap_free = meminfo["SwapFree"].to_i
31         @swap_cached = meminfo["SwapCached"].to_i
32         @swap_usage = ((@swap_total - @swap_free - @swap_cached) * 100) / @swap_total.to_f
33       end
34     end
35   end
36 end