I have a fairly small screen on my ca. 1997 Pentium II laptop -- 1024x768 is all she'll do on the built-in screen. As a result, I need to keep things a little simple, but I also needed a monitor to warn if the battery is getting low and shut the system down before an unclean shutdown causes potential data corruption. A nice CPU monitor is pretty useful, too, since some software bugs seem to manifest as CPU usage going to 100% -- and, with only a little over 12 GiB available for root and /home (16 GB total storage, but most of 4 GB taken up by Windows 98), I need to also keep an eye on storage space. Here's what I wound up with...
Code: Select all
us# set to yes if you want Conky to be forked in the background
background yes
short_units yes
cpu_avg_samples 2
net_avg_samples 2
out_to_console no
# X font when Xft is disabled, you can pick one with program xfontsel
#font 7x12
#font 6x10
#font 7x13
font 8x12
#font 7x12
#font *mintsmild.se*
#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*
#font -artwiz-snap-normal-r-normal-*-*-100-*-*-p-*-iso8859-1
# Use Xft?
use_xft yes
# Xft font when Xft is enabled
xftfont gentium:size=10
# Create own window instead of using desktop (required in nautilus, pcmanfm and rox desktops)
own_window yes
own_window_transparent yes
own_window_hints undecorated,sticky,skip_taskbar
# Text alpha when using Xft
xftalpha 0.8
#on_bottom no
# mail spool
mail_spool $MAIL
# Update interval in seconds
update_interval 1
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
# Minimum size of text area
minimum_size 5 5
maximum_width 350
# Draw shades?
draw_shades no
# Draw outlines?
draw_outline no
# Draw borders around text
draw_borders no
# Stippled borders?
stippled_borders 0
# border margins
#border_margin 10
# border width
border_width 2
# Default colors and also border colors
default_color white
default_shade_color white
default_outline_color white
color3 cyan
# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right
# Gap between borders of screen and text
gap_x 20
gap_y 10
# Add spaces to keep things from moving about? This only affects certain objects.
use_spacer right
# Subtract file system buffers from used memory?
no_buffers yes
# set to yes if you want all text to be in uppercase
uppercase no
# boinc (seti) dir
# seti_dir /opt/seti
# Possible variables to be used:
#
# Variable Arguments Description
# acpiacadapter ACPI ac adapter state.
# acpifan ACPI fan state
# acpitemp ACPI temperature.
# adt746xcpu CPU temperature from therm_adt746x
# adt746xfan Fan speed from therm_adt746x
# battery (num) Remaining capasity in ACPI or APM
# battery. ACPI battery number can be
# given as argument (default is BAT0).
# buffers Amount of memory buffered
# cached Amount of memory cached
# color (color) Change drawing color to color
# cpu CPU usage in percents
# cpubar (height) Bar that shows CPU usage, height is
# bar's height in pixels
# downspeed net Download speed in kilobytes
# downspeedf net Download speed in kilobytes with one
# decimal
# exec shell command Executes a shell command and displays
# the output in torsmo. warning: this
# takes a lot more resources than other
# variables. I'd recommend coding wanted
# behaviour in C and posting a patch :-).
# execi interval, shell Same as exec but with specific interval.
# command Interval can't be less than
# update_interval in configuration.
# fs_bar (height), (fs) Bar that shows how much space is used on
# a file system. height is the height in
# pixels. fs is any file on that file
# system.
# fs_free (fs) Free space on a file system available
# for users.
# fs_free_perc (fs) Free percentage of space on a file
# system available for users.
# fs_size (fs) File system size
# fs_used (fs) File system used space
# hr (height) Horizontal line, height is the height in
# pixels
# i2c (dev), type, n I2C sensor from sysfs (Linux 2.6). dev
# may be omitted if you have only one I2C
# device. type is either in (or vol)
# meaning voltage, fan meaning fan or temp
# meaning temperature. n is number of the
# sensor. See /sys/bus/i2c/devices/ on
# your local computer.
# kernel Kernel version
# loadavg (1), (2), (3) System load average, 1 is for past 1
# minute, 2 for past 5 minutes and 3 for
# past 15 minutes.
# machine Machine, i686 for example
# mails Mail count in mail spool. You can use
# program like fetchmail to get mails from
# some server using your favourite
# protocol. See also new_mails.
# mem Amount of memory in use
# membar (height) Bar that shows amount of memory in use
# memmax Total amount of memory
# memperc Percentage of memory in use
# new_mails Unread mail count in mail spool.
# nodename Hostname
# outlinecolor (color) Change outline color
# pre_exec shell command Executes a shell command one time before
# torsmo displays anything and puts output
# as text.
# processes Total processes (sleeping and running)
# running_processes Running processes (not sleeping),
# requires Linux 2.6
# shadecolor (color) Change shading color
# stippled_hr (space), Stippled (dashed) horizontal line
# (height)
# swapbar (height) Bar that shows amount of swap in use
# swap Amount of swap in use
# swapmax Total amount of swap
# swapperc Percentage of swap in use
# sysname System name, Linux for example
# time (format) Local time, see man strftime to get more
# information about format
# totaldown net Total download, overflows at 4 GB on
# Linux with 32-bit arch and there doesn't
# seem to be a way to know how many times
# it has already done that before torsmo
# has started.
# totalup net Total upload, this one too, may overflow
# updates Number of updates (for debugging)
# upspeed net Upload speed in kilobytes
# upspeedf net Upload speed in kilobytes with one
# decimal
# uptime Uptime
# uptime_short Uptime in a shorter format
#
# seti_prog Seti@home current progress
# seti_progbar (height) Seti@home current progress bar
# seti_credit Seti@hoome total user credit
## antiX additives examples. Add below Text##
##Battery examples##
##${color}battery: ${color}$acpiacadapter, ${battery_percent BAT1}%
##${color}battery:${color} ${battery}
####Wireless example##
#${color}Wireless:
#${color}essid: ${wireless_essid wlan0}
#${color}IP:${color} ${addr wlan0}
#${color}speed: ${color} ${wireless_bitrate wlan0}
#${color}link strength: ${color} ${wireless_link_bar 7,50 wlan0}
# stuff after 'TEXT' will be formatted on screen
TEXT
${color}$nodename
${color}Desktop: ${color}${exec cat ~/.antix-session/desktop-code$DISPLAY}
${color}$sysname $kernel
${color}Uptime: $uptime
${color}${time %c}
${color}CPU: ${color}${cpu}${color}%
${color}${cpugraph 12,180}
${color}RAM :$mem${color}/$memmax
${color}${membar 4}
${color}Swap: $swap${color}/$swapmax
${color}${swapbar 4}
${color}Processes: ${color}$processes ${color}Running: ${color}$running_processes
${color}Power: ${color}$acpiacadapter ${color}Battery: ${battery_percent CMB1}%${if_existing /sys/class/power_supply/AC/online 0}${if_match ${battery_percent CMB1} <= 50}${if_match ${battery_percent CMB1} <= 25}${if_match ${battery_percent CMB1} <= 10}${if_match ${battery_percent CMB1} <= 3}${if_match ${battery_percent CMB1} <= 1}${exec /usr/local/bin/hardshutdown.sh}$else${exec /usr/local/bin/shutdown.sh}$endif$else${color red}${texeci 60 /usr/local/bin/verylowbat.sh}$endif$else${color orange}${texeci 120 /usr/local/bin/lowbat.sh}$endif$else${color yellow}$endif$else${color green}$endif$else${color green}$endif
${battery_bar 4,180 CMB1}
${color}Root Space:${color} ${fs_free /}/${fs_size /} ${color}= ${fs_free_perc /}%
${color}Home Space:${color} ${fs_free /home}/${fs_size /home} ${color}= ${fs_free_perc /home}%
${color3}${execi 10 persist-enabled}
The battery safeguard depends on four scripts, three of which use yad for an interactive notification, while the fourth produces a hard shutdown, without further warning at 1% battery life remaining (which is just barely more than it takes to actually run through an orderly shutdown).
First, appearing at 25% battery, is lowbat.sh:
Code: Select all
#!/bin/bash
yad --image="info" --text="The battery is low. Connect to power or shut down soon." --button="gtk-ok:0"
ans="$?"
case $ans in
0)
# exit
exit;
;;
esac
Second, invoked at 10% energy remaining, is verylowbat.sh:
Code: Select all
#!/bin/bash
yad --image="info" --text="The battery is VERY low. Connect to power or shut down ASAP." --button="gtk-ok:0"
ans="$?"
case $ans in
0)
# exit
exit;
;;
esac
At 3% battery (about two minutes of full operation) we'll meet shutdown.sh:
Code: Select all
#!/bin/bash
yad --image="info" --text="The battery is critically low! Connect to power and press cancel or save your work (quickly!) and press OK to shutdown." --button="gtk-ok:0" --button="gtk-cancel:1"
ans="$?"
case $ans in
0)
# shutdown
sudo -S < ~/.passwordfile &> ~/dumpfile shutdown -hP 1"Shutting down due to critical low battery!"
;;
1)
#exit
exit;
;;
esac
Finally, if the user doesn't initiate a shutdown or connect external power by the time battery capcity reaches 1%, we'll invoke hardshutdown.sh:
Code: Select all
sudo -S /home/dqualls/.passwordfile &> /home/dqualls/.dumpfile shutdown -hP now"Shutting down: Battery empty!"
Edit: there's still a minor bug in the battery monitor code; the low battery warning keeps coming up (for a long time) after reconnecting power. Working on it...