rainbarf - CPU/RAM/battery stats chart bar for tmux (and GNU
screen)
rainbarf --tmux --width 40 --no-battery
Fancy resource usage charts to put into the tmux
<http://tmux.sourceforge.net/> status line. The CPU utilization
history chart is tinted with the following colors to reflect the system
memory allocation:
- green: free memory;
- yellow: active memory;
- blue: inactive memory;
- red: wired memory on Mac OS X / FreeBSD;
"unaccounted" memory on Linux;
- cyan: cached memory on Linux, buf on FreeBSD.
- magenta: used swap memory.
If available, battery charge is displayed on the right.
Just go to <https://github.com/creaktive/rainbarf> to see
some screenshots.
Add the following line to your ~/.tmux.conf file:
set-option -g status-utf8 on
set -g status-right '#(rainbarf)'
Or, under GNOME Terminal:
set-option -g status-utf8 on
set -g status-right '#(rainbarf --rgb)'
Reload the tmux config by running "tmux
source-file ~/.tmux.conf".
"~/.rainbarf.conf" can be used
to persistently store "OPTIONS":
# example configuration file
width=20 # widget width
bolt # fancy charging character
remaining # display remaining battery
rgb # 256-colored palette
"OPTIONS" specified via command line override that
values. Configuration file can be specified via
"RAINBARF" environment variable:
RAINBARF=~/.rainbarf.conf rainbarf
- "--help"
- This.
- "--[no]battery"
- Display the battery charge indicator. Enabled by default.
- "--[no]remaining"
- Display the time remaining until the battery is fully charged/empty. See
"CAVEAT". Disabled by default.
- "--[no]bolt"
- Display even fancier battery indicator. Disabled by default.
- "--[no]bright"
- Tricky one. Disabled by default. See "CAVEAT".
- "--[no]rgb"
- Use the RGB palette instead of the system colors. Also disabled by
default, for the same reasons as above.
- "--fg COLOR_NAME"
- Force chart foreground color.
- "--bg COLOR_NAME"
- Force chart background color.
- "--[no]loadavg"
- Use load average <https://en.wikipedia.org/wiki/Load_(computing)>
metric instead of CPU utilization. You might want to set the
"--max" threshold since this is an
absolute value and has varying ranges on different systems. Disabled by
default.
- "--[no]swap"
- Display the swap usage. Used swap amount is added to the total amount, but
the free swap amount is not! Disabled by default.
- "--max NUMBER"
- Maximum "loadavg" you expect before
rescaling the chart. Default is 1.
- "--order INDEXES"
- Specify the memory usage bar order. The default is
"fwaic" ( free, wired,
active, inactive & cached ).
- "--[no]tmux"
- Force "tmux" colors mode. By default,
rainbarf detects automatically if it is being called from
"tmux" or from the interactive
shell.
- "--screen"
- screen(1)
<http://manpages.ubuntu.com/manpages/hardy/man1/screen.1.html>
colors mode. Experimental. See "CAVEAT".
- "--width NUMBER"
- Chart width. Default is 38, so both the chart and the battery indicator
fit the "tmux" status line. Higher
values may require disabling the battery indicator or raising the
"status-right-length" value in
~/.tmux.conf.
- "--datfile FILENAME"
- Specify the file to log CPU stats to. Default:
$HOME/.rainbarf.dat
- "--skip NUMBER"
- Do not write CPU stats if file already exists and is newer than this many
seconds. Useful if you refresh "tmux"
status quite frequently.
If the "--remaining" option is
present but you do not see the time in your status bar, you may need to
increase the value of
"status-right-length" to 48.
If you only see the memory usage bars but no CPU utilization
chart, that's because your terminal's color scheme need an explicit
distinction between foreground and background colors. For instance,
"red on red background" will be displayed as a red block on such
terminals. Thus, you may need the ANSI bright attribute for greater
contrast, or maybe consider switching to the 256-color palette. There are
some issues with that, though:
- 1.
- Other color schemes (notably, solarized
<http://ethanschoonover.com/solarized>) have different meaning for
the ANSI bright attribute. So using it will result in a quite
psychedelic appearance. 256-color pallette, activated by the
"--rgb" flag, is unaffected by
that.
- 2.
- The older versions of Term::ANSIColor dependency do not recognize
bright/RGB settings, falling back to the default behavior (plain 16
colors). However, the whole Term::ANSIColor is optional, it is only
required to preview the effects of the "OPTIONS" via command
line before actually editing the ~/.tmux.conf. That is,
"rainbarf --bright --tmux" is
guaranteed to work despite the outdated Term::ANSIColor!
Another option is skipping the system colors altogether and use
the RGB palette ("rainbarf --rgb").
This fixes the issue 1, but doesn't affect the issue 2. It
still looks better, though.
CPU utilization stats are persistently stored in the
~/.rainbarf.dat file. Every rainbarf execution will update and rotate
that file. Since "tmux" calls rainbarf
periodically (every 15 seconds, by default), the chart will display CPU
utilization for the last ~9.5 minutes (15 * 38). Thus, several
"tmux" instances running simultaneously
for the same user will result in a faster chart scrolling.
Stable "screen" version
unfortunately has a broken UTF-8 handling specifically for the status bar.
Thus, I have only tested the rainbarf with the variant from
<git://git.savannah.gnu.org/screen.git>. My ~/.screenrc
contents:
backtick 1 15 15 rainbarf --bright --screen
hardstatus string "%1`"
hardstatus lastline
- top(1)
<http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/top.1.html>
is used to get the CPU/RAM stats if no /proc filesystem is
available.
- ioreg(8)
<http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/ioreg.8.html>
is used to get the battery status on Mac OS X.
- ACPI <http://www.tldp.org/howto/acpi-howto/usingacpi.html> is used
to get the battery status on Linux.
- Battery <https://github.com/Goles/Battery> was a source of
inspiration.
- Spark <http://zachholman.com/spark/> was another source of
inspiration.
Stanislaw Pusep <stas@sysd.org>
- Chris Knadler <https://github.com/cknadler>
- cinaeco <https://github.com/cinaeco>
- Clemens Hammacher <https://github.com/hammacher>
- H.Merijn Brand <https://github.com/Tux>
- Henrik Hodne <https://github.com/henrikhodne>
- Joe Hassick <https://github.com/jh3>
- Josh Matthews <https://github.com/jmatth>
- Lars Engels <https://github.com/larsengels>
- Sergey Romanov <https://github.com/sergeyromanov>
- Tom Cammann <https://github.com/takac>
- Tuomas Jormola <https://github.com/tjormola>
This software is copyright (c) 2016 by Stanislaw Pusep
<stas@sysd.org>.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.