digital-freak
10 years ago
commit
17502d56ac
10 changed files with 387 additions and 0 deletions
@ -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 |
|||
|
After Width: | Height: | Size: 24 KiB |
@ -0,0 +1,12 @@ |
|||
/*
|
|||
* drivedb.h - smartmontools drive database file |
|||
* |
|||
*/ |
|||
|
|||
{ "USB: Samsung M2 Portable; ", |
|||
"0x04e8:0x60b3", |
|||
"", |
|||
"", |
|||
"-d usbjmicron" |
|||
}, |
|||
|
@ -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} |
|||
|
@ -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} |
|||
|
@ -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 |
@ -0,0 +1,8 @@ |
|||
require ('sysctl') |
|||
|
|||
function conky_cpu_temperature(core) |
|||
temperature = sysctl.IK2celsius(sysctl.get('dev.cpu.' .. core .. '.temperature')) .. ' ℃' |
|||
|
|||
return (temperature) |
|||
end |
|||
|
@ -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} |
@ -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 |
@ -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…
Reference in new issue