Okay, this is where I got to. Here as a kind of... I don't know, road sign on the path to Conky perfection I supposed? (I have much journeying to do still.)
.conkyrc
Code:
#-----Run in Background
background yes
#-----Use XFT for Fonts
use_xft yes
xftfont DiamondFantasy:size=16
xftalpha 0.5
#-----How often to run, in seconds
update_interval 1.0
#-----Window Controls, Has it's own, Normal, Transparent Window...
own_window yes
own_window_type normal
own_window_transparent yes
#-----...Undecorated, Sticky Window without putting it in the Taskbar or Pager, all Below everything else.
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#-----Text Buffer, how big a script can be when called.
text_buffer_size 2048
#-----Window Size and Width
minimum_size 350 50
maximum_width 600
#-----Stops the Blinking!
double_buffer yes
#-----Don't draw any shadows, shades, or outlines for the window or text.
draw_shades no
draw_outline no
draw_borders no
#-----DO draw borders around the graphs
draw_graph_borders yes
#-----Put the whole thing, top right.
alignment top_right
#-----Gap of 40 pixels between the Conky, and the edge of the screen, No gap at the top or bottom.
gap_x 50
gap_y 0
#-----Disables file system buffers from used memory
no_buffers yes
#-----How many samples to average for measuring CPU activity.
cpu_avg_samples 2
#---Dunno exactly, required for Weather section to work properly.
override_utf8_locale yes
#-----Helps keep certain things aligned.
use_spacer right
#-----Lua Script To Load(When It's Ready, Currently In Development)
lua_load ~/Conky/Scripts/BandwidthTotal.lua
lua_draw_hook_pre ring_stats
#-----Code shortcut for colours.
default_color 808080 #Grey
color0 FF0000 #Red
color1 FFFF00 #Yellow
color2 FFFFFF #White
color3 808080 #Grey
color4 00FF00 #Green
color5 C0C0C0 #Silver
color6 FFD700 #Gold
TEXT#-----System Header, Conky Version(Only When Needed), and Xubuntu Graphic
${font}${color1}Xubuntu 10.10 (Maverick Meerkat)
$sysname $kernel on $machine
${color2}Uptime:${goto 100}$uptime
#${conky_version}
${image /home/dorian/Conky/Icons/XubuntuLogoForConky.png -p 250,0 -s 80x80 -n}
${color2}WEATHER: ${execi 3600 conkyForecast -l CAXX0342 -d CN}${color0}${hr 1}${color2}
Now${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d DW -w -s 1}${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d DW -w -s 2}${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d DW -w -s 3}${goto 255}Tomorrow:
#-----High Temp:/Sunrise Title
H:${execi 3600 conkyForecast -l CAXX0342 -d HT -u -x}${font TransponderAOE}°${font}C${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d HT -u -x -s 2}${font TransponderAOE}°${font}C${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d HT -u -x -s 3}${font TransponderAOE}°${font}C${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d HT -u -x -s 4}${font TransponderAOE}°${font}C${goto 255}${goto 255}Sunrise:
#-----Low Temp:/Sunrise
${voffset -15}L:${execi 3600 conkyForecast -l CAXX0342 -d LT -u -x}${font TransponderAOE}°${font}C${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d LT -u -x -s 2}${font TransponderAOE}°${font}C${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d LT -u -x -s 3}${font TransponderAOE}°${font}C${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d LT -u -x -s 4}${font TransponderAOE}°${font}C${goto 255}${execi 3600 conkyForecast -l CAXX0342 -d SR -s 2}
#-----Weather Conditions:/Sunset
${color1}${font conkyWeather:size=30}${execi 3600 conkyForecast -l CAXX0342 -d WF}${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d WF -s 2}${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d WF -s 3}${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d WF -s 4}${color2}${font}${voffset -25}${goto 255}Sunset:
${goto 255}${execi 3600 conkyForecast -l CAXX0342 -d SS -s 2}
#-----Moon Phase Title
${goto 255}Moon
${goto 255}Phase:
#-----Wind Direction:/Moon Font
${font ConkyWindNESW:size=40}${voffset -25}${execi 3600 conkyForecast -l CAXX0342 -d BF}${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d BF -s 2}${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d BF -s 3}${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d BF -s 4}${goto 310}${font MoonPhases:size=30}${execi 3600 conkyForecast -l CAXX0342 -d MF}${font}
#-----Wind Speed(With spacing edit by VinDSL):/Moon Phase
${execi 3600 conkyForecast -l CAXX0342 -d WS | sed -e 's/calm'/' Calm/g' -e 's/kph'/' kph/g'}${goto 75}${execi 3600 conkyForecast -l CAXX0342 -d WS -s 2 | sed -e 's/calm'/' Calm/g' -e 's/kph'/' kph/g'}${goto 135}${execi 3600 conkyForecast -l CAXX0342 -d WS -s 3 | sed -e 's/calm'/' Calm/g' -e 's/kph'/' kph/g'}${goto 195}${execi 3600 conkyForecast -l CAXX0342 -d WS -s 4 | sed -e 's/calm'/' Calm/g' -e 's/kph'/' kph/g'}${goto 255}${execi 3600 conkyForecast -l CAXX0342 -d MP}
#-----System/Drive Info
${voffset 5}${font}${color2}SYSTEM ${color0}${hr 1}${color2}
CPU1:${goto 55}${freq_g 1}Ghz${goto 120}${color1}${cpubar cpu1 5,120}:${cpu cpu1}%${goto 290}Used
${color2}CPU2:${goto 55}${freq_g 2}Ghz${goto 120}${color1}${cpubar cpu2 5,120}:${cpu cpu2}%${goto 290}Used
${color2}RAM:${goto 55}${memmax}${goto 120}${color5}${membar 8,120}:${memperc}%${goto 290}Used${color2}
${color2}SWAP:${goto 55}${swapmax}${goto 120}${color5}${swapbar 8,120}:${swapperc}%${goto 290}Used${color2}
#-----Main Drives
${color2}SYSTEM DRIVES ${color0}${hr 1}${color2}
${color2}Root:${goto 50}${fs_size /}${goto 110}${fs_used_perc /}%${goto 150}Used${goto 190}${color0}${fs_bar 5,120 /}
${color2}Home:${goto 50}${fs_size /home}${goto 110}${fs_used_perc /home}%${goto 150}Used${goto 190}${color1}${fs_bar 5,120 /home}
${color2}Test1:${goto 50}${fs_size /media/Test1}${goto 110}${fs_used_perc /media/Test1}%${goto 150}Used${goto 190}${color5}${fs_bar 5,120 /media/Test1}
${color2}Test2:${goto 50}${fs_size /media/Test2}${goto 110}${fs_used_perc /media/Test2}%${goto 150}Used${goto 190}${color5}${fs_bar 5,120 /media/Test2}
${color2}120:${goto 50}${fs_size /media/120}${goto 110}${fs_used_perc /media/120}%${goto 150}Used${goto 190}${color5}${fs_bar 5,120 /media/120}
#-----USB Drives (Special because it checks to see if they're plugged in first.)
${color2}CONNECTED DRIVES ${color0}${hr 1}${color2}
${if_existing /media/7GBACKUP}${color2}7GBACKUP:${goto 100}${fs_size /media/7GBACKUP}${goto 160}${fs_used_perc /media/7GBACKUP}%${goto 200}Used${goto 240}${color1}${fs_bar 5,120 /media/7GBACKUP}${else}${color2}7GBACKUP: N/A${endif}
${if_existing /media/7GBACKUP2}${color2}7GBACKUP2:${goto 100}${fs_size /media/7GBACKUP2}${goto 160}${fs_used_perc /media/7GBACKUP2}%${goto 200}Used${goto 240}${color1}${fs_bar 5,120 /media/7GBACKUP2}${else}${color2}7GBACKUP2: N/A${endif}
${if_existing /media/7GBACKUP3}${color2}7GBACKUP3:${goto 100}${fs_size /media/7GBACKUP3}${goto 160}${fs_used_perc /media/7GBACKUP3}%${goto 200}Used${goto 240}${color1}${fs_bar 5,120 /media/7GBACKUP3}${else}${color2}7GBACKUP3: N/A${endif}
#-----Network Info
${color2}NETWORK ${color0}${hr 1}${color2}
${color2}Hostname${goto 95}$nodename${goto 145}|${goto 165}Inbound${goto 235}|${goto 245}Outbound
INet:
${addr eth1}${goto 145}|${goto 165}${color4}${downspeed eth1}${goto 220}/s${goto 235}${color2}|${goto 245}${color1}${upspeed eth1}${goto 305}/s${image ~/Conky/Icons/Globe.png -p 330,625 -s 20x20}
${color2}Private
${addr eth0}${goto 145}|${goto 165}${color4}${downspeed eth0}${goto 220}/s${goto 235}${color2}|${goto 245}${color1}${upspeed eth0}${goto 305}/s${image ~/Conky/Icons/Private.png -p 330,665 -s 20x20}
${color2}Bluetooth
${addr pan1}${goto 145}|${goto 165}${color4}${downspeed pan1}${goto 220}/s${goto 235}${color2}|${goto 245}${color1}${upspeed pan1}${goto 305}/s${image ~/Conky/Icons/bluetooth.png -p 330,700 -s 20x20}
#-----Monthly/Daily Bandwidth Usage
${color2}NETWORK DATA USE${color0}${hr 1}${color2}
${goto 25}${color2}Today${goto 125}Monthly
${color2}U:${goto 25}${color1}${execi 30 vnstat | grep "today" | awk '{print $5}'}${goto 75}${execi 30 vnstat | grep "today" | awk '{print $6}'}${goto 125}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $6}'}${goto 175}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $7}'}${goto 265}${color2}25
${color2}D:${goto 25}${color4}${execi 30 vnstat | grep "today" | awk '{print $2}'}${goto 75}${execi 30 vnstat | grep "today" | awk '{print $3}'}${goto 125}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $3}'}${goto 175}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $4}'}${goto 265}${color2}GB
${color2}T:${goto 25}${color5}${execi 30 vnstat | grep "today" | awk '{print $8}'}${goto 75}${execi 30 vnstat | grep "today" | awk '{print $9}'}${goto 125}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $9}'}${goto 175}${execi 30 vnstat -m | grep "`date +"%b '%y"`" | awk '{print $10}'}${goto 220}${color2}Total Allowance${font}
#-----Calendar by VinDSL
${color2}CALENDAR:${goto 100}${execpi 60 date +'%B${offset 6}%Y'}${color0}${hr 1}${color2}
${voffset 3}${font TransponderAOE:bold:size=15}${execpi 60 cal | sed '1d' | sed s/^/"\$\{offset 37"\}/ | sed '/^ *$/d' | sed 's/\<'"$(date +%-d)"'\>/${color1}&${color2}/'}
.conkyrc.clock... NOW WITH PROPER HILIGHTING!
Code:
#-----Run in Background
background yes
#-----Use XFT for Fonts
use_xft yes
xftfont TransponderAOE:size=32
xftalpha 0.5
#-----How often to run, in seconds
update_interval 1.0
#-----Window Controls, Has it's own, Normal, Transparent Window...
own_window yes
own_window_type normal
own_window_transparent yes
#-----...Undecorated, Sticky Window without putting it in the Taskbar or Pager, all Below everything else.
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#-----Text Buffer, how big a script can be when called.
text_buffer_size 2048
#-----Window Size and Width
minimum_size 350 10
maximum_width 400
#-----Stops the Blinking!
double_buffer yes
#-----Don't draw any shadows, shades, or outlines for the window or text.
draw_shades no
draw_outline no
draw_borders no
#-----DO draw borders around the graphs
draw_graph_borders yes
#-----Put the whole thing, top right.
alignment top_right
#-----Gap of 40 pixels between the Conky, and the edge of the screen, No gap at the top or bottom.
gap_x 450
gap_y 110
#-----Disables file system buffers from used memory
no_buffers yes
#-----How many samples to average for measuring CPU activity.
cpu_avg_samples 2
#---Dunno exactly, required for Weather section to work properly.
override_utf8_locale yes
#-----Helps keep certain things aligned.
use_spacer right
#-----Code shortcut for colours.
default_color 000000 #Grey
color0 FF0000 #Red
color1 FFFF00 #Yellow
color2 FFFFFF #White
color3 808080 #Grey
color4 00FF00 #Green
color5 C0C0C0 #Silver
color6 FFD700 #Gold
TEXT
#-----This Entire Conky Script Is For a Clock. Yes. I Have Wasted an Entire Conky for this drivel.
${font DiamondFantasy:size=16}${color6}${hr 2}${goto 150}${color2}Time ${color6}${hr 2}${color2}
#-----This is how to do a proper shadow hilight.
${font TransponderAOE:size=60}${color1}${offset -13}${time %l:%M:%S %p}
${voffset -100}${font TransponderAOE:size=60}${color2}${offset -15}${time %l:%M:%S %p}
${voffset -50}${color6}${hr 2}
BandwidthTotal.lua... The New Baby of the Family (The Lua Script)
Code:
--[[
Ring Meters by londonali1010 (2009)
This script draws percentage meters as rings. It is fully customisable; all options are described in the script.
IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
lua_load ~/scripts/rings-v1.2.1.lua
lua_draw_hook_pre ring_stats
Changelog:
+ v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009)
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]
settings_table = {
{
-- Edit this table to customise your rings.
-- You can create more rings simply by adding more elements to settings_table.
-- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
name='totalbw',
-- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
arg='totalbw',
-- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
max=25,
-- "bg_colour" is the colour of the base ring.
bg_colour=0xffff00,
-- "bg_alpha" is the alpha value of the base ring.
bg_alpha=1.0,
-- "fg_colour" is the colour of the indicator part of the ring.
fg_colour=0xff0000,
-- "fg_alpha" is the alpha value of the indicator part of the ring.
fg_alpha=0.5,
-- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
x=275, y=780,
-- "radius" is the radius of the ring.
radius=30,
-- "thickness" is the thickness of the ring, centred around the radius.
thickness=15,
-- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
start_angle=-135,
-- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.
end_angle=135
},
}
require 'cairo'
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function draw_ring(cr,t,pt)
local w,h=conky_window.width,conky_window.height
local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
local angle_0=sa*(2*math.pi/360)-math.pi/2
local angle_f=ea*(2*math.pi/360)-math.pi/2
local t_arc=t*(angle_f-angle_0)
-- Draw background ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
cairo_set_line_width(cr,ring_w)
cairo_stroke(cr)
-- Draw indicator ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
end
function conky_ring_stats()
local function setup_rings(cr,pt)
local str=''
local value=0
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
if conky_window==nil then return end
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
And a screenshot of the whole thing in action.
Next Two Projects: Connection icons for my three network interfaces (Globe for Internet, House for Private, Bluetooth Rune for... Bluetooth), and of course actually making the new lua gauge read the results of vnstat.
As always, colour issues being pointed out are welcomed.
*EDIT* Scratch the icons off the list. Done and done. I like 'em. Organized my Conky section a bit on my drive too. Screenshots, scripts, and icons all separated properly. Code fixed in the message to reflect it. Before AND after screenshots.
Bookmarks