Browse Source

Initial GitHub commit

master
digital-freak 9 years ago
commit
17502d56ac
  1. 42
      README.md
  2. BIN
      conky-hw-monitor.png
  3. 12
      drivedb.h
  4. 47
      hdd.rc
  5. 69
      hdd.sh
  6. 27
      hwmon.sh
  7. 8
      system.lua
  8. 65
      system.rc
  9. 55
      system.sh
  10. 62
      templates/system.tmpl

42
README.md

@ -0,0 +1,42 @@
conky-hw-monitor
================
<img src="conky-hw-monitor.png">
Conky configs and scripts for FreeBSD desktop that monitors the CPU & RAM
usage and CPU temperature. Also monitors of all connected storages (i.e.
HDD, SSD drives and USB-dongles) with all mounted filesistems. For HDD
drives shows the current temperature (in Celsius).
Requirements
------------
* `sysutils/smartmontools` - for HDD
* `coretemp.ko / amdtemp.ko` - for the on-die digital thermal sensor
* `devel/lua-sysctl` - for reading dev.cpu.X.temperature sysctl's
Usage
-----
First of all, install the `sysutils/smartmontools` and `devel/lua-sysctl`.
For `devel/lua-sysctl` remove the patch from the port, because this patch
for using with Lua 5.2 and Conky won't work correctly.
Load the corresponding kernel module for your CPU:
`kldload coretemp` - for Intel Core CPU's
`kldload amdtemp` - for AMD CPU's
Add it to the loader.conf file:
echo "coretemp_load=YES" >> /boot/loader.conf
or
echo "amdtemp_load=YES" >> /boot/loader.conf
Get the project files to your computer:
git clone https://github.com/digital-freak/conky-hw-monitor.git
And run the `hwmon.sh` sctipt

BIN
conky-hw-monitor.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

12
drivedb.h

@ -0,0 +1,12 @@
/*
* drivedb.h - smartmontools drive database file
*
*/
{ "USB: Samsung M2 Portable; ",
"0x04e8:0x60b3",
"",
"",
"-d usbjmicron"
},

47
hdd.rc

@ -0,0 +1,47 @@
background no
cpu_avg_samples 2
net_avg_samples 2
diskio_avg_samples 2
double_buffer yes
no_buffers yes
text_buffer_size 4096
total_run_times 0
update_interval 1.0
alignment tr
gap_x 212
gap_y 10
border_inner_margin 0
border_outer_margin 0
border_width 0
maximum_width 172
minimum_size 172 12
own_window yes
own_window_class conky_hdd_monitor
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_argb_visual yes
own_window_transparent yes
own_window_type normal
default_color E1E7CD
default_outline_color 281C06
default_shade_color 281C06
default_bar_size 172 4
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
override_utf8_locale yes
use_xft yes
xftalpha 0.8
xftfont DejaVu Sans:size=8
short_units yes
TEXT
${execpi 4 ./hdd.sh}

69
hdd.sh

@ -0,0 +1,69 @@
#!/bin/sh
SMARTCMD="smartctl -B +./drivedb.h"
get_attached_devices() {
# DEVS="`sysctl kern.disks | awk '{$1=""; ;print $0}' | awk 'gsub(" ", "\n")' | grep -v ^$ | sed '/^cd[0-9]/d' | sort`"
DEVS="`sysctl -n kern.disks | tr ' ' '\n' | sed '/^cd[0-9]*/d' | sort`"
echo ${DEVS}
}
get_device_model() {
DEVICE_MODEL="`${SMARTCMD} -i /dev/${1} | grep "Device Model" | awk -F\: '{print $2}' | sed 's/^[ \t]*//'`"
echo ${DEVICE_MODEL}
}
get_device_capacity() {
DEVICE_CAPACITY="`${SMARTCMD} -i /dev/${1} | grep "User Capacity" | awk -F\[ '{print $2}' | sed 's/]//'`"
echo ${DEVICE_CAPACITY}
}
get_device_temperature() {
DEVICE_TEMP="`${SMARTCMD} -A -f brief /dev/${1} | grep "Temperature_Celsius" | awk '{print $8}'`"
echo ${DEVICE_TEMP}
}
get_device_partitions() {
PARTITIONS="`mount | grep /dev/${1} | grep -v none | awk '{print $1}' | sed 's/\/dev\///' | sort`"
echo "${PARTITIONS}"
}
get_mount_point() {
MOUNT_POINT="`mount | grep /dev/${1} | awk '{print $3}'`"
echo ${MOUNT_POINT}
}
for DEV in `get_attached_devices`; do
MODEL="`get_device_model ${DEV}`"
TEMP="`get_device_temperature ${DEV}`"
CAPACITY="`get_device_capacity ${DEV}`"
if [ "${TEMP}" != "" ]; then
TEMP="[ ${TEMP} ℃ ]"
fi
#BEB9A5
printf "\${color 2A403D}\${font Poky:size=16}y\${font}\${color} \${color B53C27}\${hr}\${color}\n"
printf "\${voffset -20}\${alignr}${MODEL} \n\n"
printf "\${voffset -7} ${DEV} (${CAPACITY})\${alignr}${TEMP} \n"
printf "\${voffset -4}\${color B53C27}\${stippled_hr}\${color}\n"
for PARTITION in `get_device_partitions ${DEV}`; do
MP="`get_mount_point ${PARTITION}`"
if [ "${MP}" != "" ]; then
printf "\${goto 30}${MP}\${alignr}${PARTITION} \n"
printf "\${voffset -3}\${goto 30}\${fs_bar 3,140 ${MP}}\n"
printf "\${voffset -3}\${goto 30}\${alignr}\${fs_free ${MP}} / \${fs_size ${MP}} \n"
printf "\${voffset -4}\${goto 30}\${color 7F8484}\${stippled_hr}\${color}\n"
fi
done
done
#printf "\n"
# ${font Poky:size=16}y${font} ${color B53C27}${stippled_hr}${color}
# ${voffset -18}${alignr}WDC WD2500AAKS-00F0A0
#
# ${voffset -4}ada2 (250 GB)${alignr}[ 41 ℃ ]
# ${voffset -4}${color B53C27}${hr}${color}

27
hwmon.sh

@ -0,0 +1,27 @@
#!/bin/sh
##############################################################################
# Get the real directory, where is located executable file
case `uname` in
"FreeBSD" )
if [ $( readlink ${0} ) ]; then
RUNDIR=$( realpath $( dirname $( readlink ${0} ) ) )
else
RUNDIR=$( realpath $( dirname ${0} ) )
fi
;;
"Linux" )
RUNDIR=$( dirname $( readlink -f ${0} ) )
;;
esac
##############################################################################
INTERVAL=${1:-20}
cd ${RUNDIR}
sleep ${INTERVAL}
./system.sh
conky -c hdd.rc &
exit 0

8
system.lua

@ -0,0 +1,8 @@
require ('sysctl')
function conky_cpu_temperature(core)
temperature = sysctl.IK2celsius(sysctl.get('dev.cpu.' .. core .. '.temperature')) .. ''
return (temperature)
end

65
system.rc

@ -0,0 +1,65 @@
background no
cpu_avg_samples 2
net_avg_samples 2
diskio_avg_samples 2
double_buffer yes
no_buffers yes
text_buffer_size 2048
total_run_times 0
update_interval 1.0
alignment tr
gap_x 20
gap_y 10
border_inner_margin 0
border_outer_margin 0
border_width 0
maximum_width 172
minimum_size 172 12
own_window yes
own_window_class conky_system_monitor
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_argb_visual yes
own_window_transparent yes
own_window_type normal
default_color E1E7CD
default_outline_color 281C06
default_shade_color 281C06
default_bar_size 172 4
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
override_utf8_locale yes
use_xft yes
xftalpha 0.8
xftfont DejaVu Sans:size=8
short_units yes
lua_load system.lua
TEXT
${color 2A403D}${font Poky:size=16}P${font} ${color B53C27}${hr}${color}
${voffset -20}${alignr}${offset -3}Intel Core i3 CPU 550
${voffset 5}${alignr}${offset -3}3.20GHz
${voffset -3}${alignr}${offset -120}${font Open Sans Condensed Light:size=14}${cpu cpu0}%${font}
${voffset -22}${alignr}${offset -3}${cpugraph cpu0 16,110}
${goto 30}${lua cpu_temperature 0}${alignr}${offset -3}${lua cpu_temperature 1}
${voffset -4}${goto 30}${cpubar cpu1 3,60}${alignr}${offset -3}${cpubar cpu2 3,60}
${goto 30}${lua cpu_temperature 2}${alignr}${offset -3}${lua cpu_temperature 3}
${voffset -4}${goto 30}${cpubar cpu3 3,60}${alignr}${offset -3}${cpubar cpu4 3,60}
${voffset -4}${goto 30}${color 7F8484}${stippled_hr}${color}
${color 2A403D}${font Poky:size=16}M${font} ${color B53C27}${hr}${color}
${voffset -20}${alignr}${offset -3}⛂ ${mem} │ ⛀ ${memfree}
${voffset 5}${alignr}${offset -3}⛃ ${memmax}
${goto 30}RAM:${alignr}${offset -15}${memperc}%${offset -172}${alignr}${offset -3}${membar 3,60}
${goto 30}SWAP:${alignr}${offset -15}${swapperc}%${offset -172}${alignr}${offset -3}${swapbar 3,60}
${voffset -4}${goto 30}${color 7F8484}${stippled_hr}${color}

55
system.sh

@ -0,0 +1,55 @@
#!/bin/sh
CPU_NAME="`sysctl -n hw.model | \
sed 's/(R)//;s/(TM)//' | \
sed -E 's/[[:space:]]+/ /g' | \
awk -F\@ '{print $1}' | \
sed -E 's/[[:space:]]+$//'`"
CPU_SPEED="`sysctl -n hw.model | \
sed 's/(R)//;s/(TM)//' | \
sed -E 's/[[:space:]]+/ /g' | \
awk -F\@ '{print $2}' | \
sed -E 's/^[[:space:]]+//'`"
CPU_CORES="`sysctl -n hw.ncpu`"
CPU_LOAD=""
if [ ${CPU_CORES} -eq 1 ]; then
CPU_LOAD='${goto 30}[cpu_temp]\
${voffset -2}${goto 30}${cpubar cpu0 3,140}'
else
N=0
while [ ${N} != ${CPU_CORES} ]; do
POS=$((${N} % 2))
if [ ${POS} -eq 0 ]; then
CORE_TEMP='${goto 30}${lua cpu_temperature '${N}'}'
CORE_LOAD='${voffset -4}${goto 30}${cpubar cpu'$((N+1))' 3,60}'
else
CORE_TEMP=${CORE_TEMP}'${alignr}${offset -3}${lua cpu_temperature '${N}'}'
CORE_LOAD=${CORE_LOAD}'${alignr}${offset -3}${cpubar cpu'$((N+1))' 3,60}'
if [ ${N} -gt 1 ]; then
CPU_LOAD=${CPU_LOAD}'\
'${CORE_TEMP}'\
'${CORE_LOAD}
else
CPU_LOAD=${CORE_TEMP}'\
'${CORE_LOAD}
fi
CORE_TEMP=""
CORE_LOAD=""
fi
N=$((N + 1))
done
fi
rm -f system.rc
cat templates/system.tmpl | \
sed -E "s/\[cpu_name\]/${CPU_NAME}/;
s/\[cpu_speed\]/${CPU_SPEED}/;
s/\[cpu_load\]/${CPU_LOAD}/" >> ./system.rc
conky -c system.rc &
exit 0

62
templates/system.tmpl

@ -0,0 +1,62 @@
background no
cpu_avg_samples 2
net_avg_samples 2
diskio_avg_samples 2
double_buffer yes
no_buffers yes
text_buffer_size 2048
total_run_times 0
update_interval 1.0
alignment tr
gap_x 20
gap_y 10
border_inner_margin 0
border_outer_margin 0
border_width 0
maximum_width 172
minimum_size 172 12
own_window yes
own_window_class conky_system_monitor
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_argb_visual yes
own_window_transparent yes
own_window_type normal
default_color E1E7CD
default_outline_color 281C06
default_shade_color 281C06
default_bar_size 172 4
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
override_utf8_locale yes
use_xft yes
xftalpha 0.8
xftfont DejaVu Sans:size=8
short_units yes
lua_load system.lua
TEXT
${color 2A403D}${font Poky:size=16}P${font} ${color B53C27}${hr}${color}
${voffset -20}${alignr}${offset -3}[cpu_name]
${voffset 5}${alignr}${offset -3}[cpu_speed]
${voffset -3}${alignr}${offset -120}${font Open Sans Condensed Light:size=14}${cpu cpu0}%${font}
${voffset -22}${alignr}${offset -3}${cpugraph cpu0 16,110}
[cpu_load]
${voffset -4}${goto 30}${color 7F8484}${stippled_hr}${color}
${color 2A403D}${font Poky:size=16}M${font} ${color B53C27}${hr}${color}
${voffset -20}${alignr}${offset -3}${mem} │ ⛀ ${memfree}
${voffset 5}${alignr}${offset -3}${memmax}
${goto 30}RAM:${alignr}${offset -15}${memperc}%${offset -172}${alignr}${offset -3}${membar 3,60}
${goto 30}SWAP:${alignr}${offset -15}${swapperc}%${offset -172}${alignr}${offset -3}${swapbar 3,60}
${voffset -4}${goto 30}${color 7F8484}${stippled_hr}${color}
Loading…
Cancel
Save