Conky

From Ever changing code
Jump to navigation Jump to search

It displays the rich system info embedded into your desktop background.

Install
sudo apt-get install conky
Temperature probes

For older Dell laptops module i8k must be loaded and Conky use ${i8k_cpu_temp} to recall CPU temperature.

sudo apt-get install i8kutils

For modern laptops lm-sensors, then use ${acpitemp}°C to display the ambient system temperature.

sudo apt-get install lm-sensors
Configuration

User based config file is located in ~/.conkyrc file. The rich features that can be displayed on the background are limitless. Below is the config based on Lenovo.

Conky
# UBUNTU-CONKY
# A comprehensive conky script, configured for use on
# Ubuntu / Debian Gnome, without the need for any external scripts.
#
# Based on conky-jc and the default .conkyrc.
# INCLUDES:
# - tail of /var/log/messages
# - netstat shows number of connections from your computer and application/PID making it. Kill spyware!
# - for Dell laptops module i8k must be loaded from package: i8kutils then cpu_temp can be read using i8k_cpu_temp 
#
# ${if_existing /proc/net/route  - it checks if default GW exists, it is helpful with external IP determination
#
# Connction monitor
# 
#  Connections in:${color #606060} ${tcp_portmon 1 32767 count}$color Connections    out:${color #606060} ${tcp_portmon 32768 61000 count}$color  Total:${color #606060}    ${tcp_portmon 1 65535 count}
# 
# $color Inbound Connection ${alignr} Local Service/Port
# ${color #606060} ${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767    lservice 0}
#  ${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1}
#  ${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2}
#  ${tcp_portmon 1 32767 rhost 3} ${alignr} ${tcp_portmon 1 32767 lservice 3}
#  ${tcp_portmon 1 32767 rhost 4} ${alignr} ${tcp_portmon 1 32767 lservice 4}
#  ${tcp_portmon 1 32767 rhost 5} ${alignr} ${tcp_portmon 1 32767 lservice 5}
# 
# $color Outbound Connection ${alignr} Remote Service/Port$color
# ${color #606060} ${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon    32768 61000 rservice 0}
#  ${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice    1}
#  ${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice    2}
#  ${tcp_portmon 32768 61000 rhost 3} ${alignr} ${tcp_portmon 32768 61000 rservice    3}
#  ${tcp_portmon 32768 61000 rhost 4} ${alignr} ${tcp_portmon 32768 61000 rservice    4}
#  ${tcp_portmon 32768 61000 rhost 5} ${alignr} ${tcp_portmon 32768 61000 rservice    5}
#  

# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
 
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
 
# fiddle with window
use_spacer right 

# Use Xft?
use_xft yes
xftfont DejaVu Sans:size=8
xftalpha 0.8
text_buffer_size 1536
 
# Update interval in seconds
update_interval 3.0
 
# Minimum size of text area
# minimum_size 200 5 

# Maximum width
maximum_width 210 

# Draw shades?
draw_shades no
 
# Text stuff
draw_outline no # amplifies text if yes
draw_borders no
uppercase no # set to yes if you want all text to be in uppercase
 
# Stippled borders?
stippled_borders 3
 
# border margins
# border_margin 9
 
# border width
border_width 10
 
# Default colors and also border colors, grey90 == #e5e5e5
default_color E8E8E8  

#own_window_argb_visual yes
#own_window_argb_value 0
 
own_window_colour brown
own_window_transparent yes
 
# Text alignment, other possible values are commented
#alignment top_left
alignment bottom_right
#alignment bottom_left
#alignment bottom_right
 
# Gap between borders of screen and text
gap_x 30
gap_y 30
 
# stuff after 'TEXT' will be formatted on screen
 
TEXT
$color
${color orange}SYSTEM ${hr 2}$color
$nodename $sysname $kernel on $machine
uptime: ${uptime} 

#causing overheating as of 27/07/2012
#external ip: ${execi 65535 wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'}
 
${color orange}CPU        Processes: $processes Run: $running_processes ${hr 2}$color
${freq}MHz   Load: ${loadavg}   Temp: ${acpitemp}°C #${i8k_cpu_temp} - Dell temp probe 

${cpugraph 000000 ffffff}
NAME $alignr   PID       CPU%    MEM%
${top name 1} $alignr ${top pid 1}   ${top cpu 1}    ${top mem 1}
${top name 2} $alignr ${top pid 2}   ${top cpu 2}    ${top mem 2}
${top name 3} $alignr ${top pid 3}   ${top cpu 3}    ${top mem 3}
${top name 4} $alignr ${top pid 4}   ${top cpu 4}    ${top mem 4}
 
${color orange}MEMORY used $mem of $memmax $color
${memgraph 000000 ffffff} 

${color orange}HDD USAGE $color
root:    ${fs_used /} of ${fs_size /}   ${fs_bar 6 /}$color 
#sda1:  ${if_existing /windows} ${fs_free /windows} of ${fs_size /windows}   ${fs_bar 6 /windows}$color $endif
#sda5:  ${if_existing /dane} ${fs_free /dane} of ${fs_size /dane}   ${fs_bar 6 /dane}$color $endif 
Swap:  $swapperc%   ${swapbar 6}$color

#eth0 - LAN card interface, replace if different
${color orange}NETWORK WIRED $alignr ip:${addr eth0}
Down: $color${downspeed eth0} k/s ${alignr}Up: ${upspeed eth0} k/s
${downspeedgraph eth0 25,100 000000 ff0000} ${alignr}${upspeedgraph eth0 
25,100 000000 00ff00}$color
Total: ${totaldown eth0} ${alignr}Total: ${totalup eth0} 

#wlan0 - wireless interface, replace everywhere if different 
${color orange}WIRELESS $alignr ip:${addr wlan0}    
Down: $color${downspeed wlan0} k/s ${alignr}Up: ${upspeed wlan0} k/s
${downspeedgraph wlan0 25,100 000000 ff0000} ${alignr}${upspeedgraph wlan0 
25,100 000000 00ff00}$color
Total: ${totaldown wlan0} ${alignr}Total: ${totalup wlan0}

${color orange}NETSTAT ${hr 2}$color
no connections / PID / application
${execi 30 netstat -ept | grep ESTAB | awk '{print $9}' | cut -d: -f1 | sort | uniq -c | sort -nr} 

${color orange}LOGGING AUTH.LOG ${hr 2}$color
${execi 30 tail -n5 /var/log/auth.log | awk '{print " ",$5,$6,$7,$8,$9,$10}' | fold -w40} 

Conky for VM

It contains a lot of unnecessary info but you can easly scrap it if you do not need it.

Conky simple config for VM
use_xft yes
xftfont Terminus:size=8
xftalpha 0.8
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
own_window_argb_visual yes
own_window_type normal
own_window_class conky-semi
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
background no
double_buffer yes
minimum_size 300 200
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
default_shade_color black
default_outline_color white
default_bar_size 150 5
default_gauge_size 20 20
imlib_cache_size 0
draw_shades no
alignment top_right
gap_x 5
gap_y 35
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale no
default_color ECEAE4
color1 9f907d
color2 01C400


TEXT
${font AvantGardeLTMedium:bold:size=10}${color Tan1}Info ${color slate grey}${hr 2}${font}
${color1}Date               ${alignr}${color slate grey}${time %a,}${color}${time %e %B %G}
${color1}Time               ${alignr}${color}${time %T}

${font AvantGardeLTMedium:bold:size=10}${color Tan1}System ${color slate grey}${hr 2}${font}
${color1}Hostname           ${alignr}${color}${nodename}
${color1}${sysname}         ${alignr}${color}${kernel}-${machine}
${color1}CPU                ${alignr}${color}${freq_g}GHz
${color1}Loadaverage        ${alignr}${color}${loadavg 1} ${loadavg 2} ${loadavg 3}
${color1}Uptime             ${alignr}${color}${uptime}
${color1}Battery Status     ${alignr}${color}${battery_short BAT1}
${color1}Cpu Temperature    ${alignr}${color}${acpitemp}C
${color1}Hdd Temperature    ${alignr}${color}${hddtemp /dev/sda}C

${font AvantGardeLTMedium:bold:size=10}${color Tan1}Processors ${color slate grey}${hr 2}${font}
${color1}Core 1             ${alignr}${color}${cpu cpu1}%  ${cpubar cpu1}
${color1}Core 2             ${alignr}${color}${cpu cpu2}%  ${cpubar cpu2}

${font AvantGardeLTMedium:bold:size=10}${color Tan1}Memory ${color slate grey}${hr 2}${font}
${color1}Memory             ${color}${alignr}${memeasyfree} / ${memmax}
${color1}Currently          ${color}${alignr}${memperc}%   ${membar}

${font AvantGardeLTMedium:bold:size=10}${color Tan1}Filesystem ${color slate grey}${hr 2}${font}
${color1}/                  ${color}${alignc}${fs_used /} / ${fs_size /} ${color}${alignr}${fs_free_perc /} %
${color}${fs_bar 5,300 /}

${font AvantGardeLTMedium:bold:size=10}${color Tan1}Networking ${color slate grey}${hr 2}${font}
${if_existing /proc/net/route wlan0}${color1}Ip     ${color}${alignr}${addr wlan0}
${color1}AP                 ${color}${alignr}${wireless_essid wlan0}
${color1}Signal             ${color}${alignr}${wireless_link_qual_perc wlan0}${wireless_link_bar 10,100 wlan0}
${color1}Download           ${alignr}${color}${downspeed wlan0}${downspeedgraph wlan0 10,100}
${color1}Upload             ${alignr}${color}${upspeed wlan0}${upspeedgraph wlan0 10,100}
${color1}Total Down/Up      ${alignr}${color}${totaldown wlan0}${color1}/${color}${totalup wlan0}
${else}${if_existing /proc/net/route eth0}${color1}Ip       ${color}${alignr}${addr eth0}
${color1}Download           ${alignr}${color}${downspeed eth0}${downspeedgraph eth0 10,100}
${color1}Upload             ${alignr}${color}${upspeed eth0}${upspeedgraph eth0 10,100}
${color1}Total Down/Up      ${alignr}${color}${totaldown eth0}${color1}/${color}${totalup eth0}${endif}${endif}

${font AvantGardeLTMedium:bold:size=10}${color Tan1}Top Processes ${color slate grey}${hr 2}${font}
${color1}${top name 1}  ${alignr}${color}${top cpu 1} ${top mem 1}
${color1}${top name 2}  ${alignr}${color}${top cpu 2} ${top mem 2}
${color1}${top name 3}  ${alignr}${color}${top cpu 3} ${top mem 3}
${color1}${top name 4}  ${alignr}${color}${top cpu 4} ${top mem 4}
${color1}${top name 5}  ${alignr}${color}${top cpu 5} ${top mem 5}

Conky On and Off script

This is some times annoying to enable or disable conky on your dektop. The following scrip comes with help.

piotr@d600:~$ cat conky_on_off.sh 
#!/bin/sh

# click to start, click to stop

if pidof conky | grep [0-9] > /dev/null
then
 exec killall conky
else
 exec conky
fi

Start Conky on boot in Debian

Debian uses conbination of /etc/init.d scripts and symbolic links in /etc/rc?.d. Each symbolic link starting with S will run and starting with K does not at the given runlevel.

On Debian and Ubuntu, runlevels 2, 3, 4 and 5 are multi-users runlevels.
Runlevel 0 is Halt.
Runlevel 1 is single user mode
Runlevel 6 is reboot

Having the conky_on_off.sh script copied into /etc/init.d and using update-rc.d to create default symbolic links will boot conky at the start.

sudo cp ~/conky_on_off.sh /etc/init.d/
sudo update-rc.d conky_on_off.sh defaults

Remove from auto-boot

sudo update-rc.d -f conky_on_off.sh remove

References

Conky variables