This is the .conkyrc
background yes
use_xft yes
xftfont Sans:bold:size=8
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
own_window_conky
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 290 750
maximum_size 290 760
maximum_width 290
draw_shades yes
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_shade_color black
default_outline_color white
alignment top_left
gap_x 5
gap_y -30
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale no
lua_load /home/{link to your file}/bargraph_small.lua
lua_draw_hook_post main_bars
#
#${image ~/.conky/.images/base.png -p -10,40 -s 383x195}
#
TEXT
${goto
32}${font openlogos:size=80}${color red}v${font}${voffset -65}${goto
170}${font Ubuntu:Bold:size=25}${color red}${pre_exec cat /etc/*release |
grep 'RELEASE' | awk -F'=' '{print $2}'}${color}${font}
${font sans-serif:bold:size=8}${color yellow}SYSTEM ${hr 2}$color
${font OpenLogos:size=12}${color red}t${color white}${font sans-serif:bold:size=8}${sysname} ${kernel}:$alignr$nodename
${font
OpenLogos:size=12}${color red}Z${color white}${font
sans-serif:bold:size=8}4x Intel(R) Core(TM) i5-2410M $alignr${freq_g
cpu0}Ghz
${font StyleBats:size=12}${color red}q${color white}${font sans-serif:bold:size=8}Uptime:$alignr$uptime
${font Poky:size=12}${color red}y${color white}${font sans-serif:bold:size=8}File System: $alignr${fs_type}
#
${font sans-serif:bold:size=8}${color yellow}DATE ${hr 2}
${goto 30}${font RadioSpace:size=28}${time %I:%M:%S}${goto 200}${time %p}${font}
${alignc}${font sans-serif:bold:size=8}${Time %A %m/%d/%Y}$color
#
${font sans-serif:bold:size=8}${color yellow}PROCESSORS ${hr 2}$color
${voffset
2}${font StyleBats:bold:size=9.9}${color red}k${font}${color}${font
sans-serif:bold:size=8} CPU1${goto 57}: ${cpu cpu1}%
${voffset
2}${font StyleBats:bold:size=9.9}${color red}k${font}${color}${font
sans-serif:bold:size=8} CPU2${goto 57}: ${cpu cpu2}%
${voffset
2}${font StyleBats:bold:size=9.9}${color red}k${font}${color}${font
sans-serif:bold:size=8} CPU3${goto 57}: ${cpu cpu3}%
${voffset
2}${font StyleBats:bold:size=9.9}${color red}k${font}${color}${font
sans-serif:bold:size=8} CPU4${goto 57}: ${cpu cpu4}%
${voffset
2}${font StyleBats:size=10}${color red}l${color}${font
sans-serif:bold:size=8} RAM${goto 57}: $memperc% ${goto 190}$mem /
$alignr$memmax
${voffset 2}${font StyleBats:size=9.9}${color
red}x${font}${color}${font sans-serif:bold:size=8} DISK${goto 57}:
${fs_used_perc /}%${goto 190}${fs_used /} / $alignr${fs_size /}
${voffset
2}${font StyleBats:size=9.9}${color red}x${font}${color}${font
sans-serif:bold:size=8} SWAP${goto 57}: ${swapperc}% ${goto 190}${swap}
${goto 240}/ $alignr${swapmax}
#
${voffset 3}${font sans-serif:bold:size=8}${color yellow}TEMPERATURE ${voffset 2}${hr 2}$color
${voffset
0}${goto 8}${font Weather:size=14}${color red}y${font}$color${font
sans-serif:bold:size=8} CORE0${goto 57}: ${hwmon 1 temp 1}${iconv_start
UTF-8 ISO_8859-1}°${iconv_stop}C
${voffset 0}${goto 8}${font
Weather:size=14}${color red}y${font}$color${font sans-serif:bold:size=8}
CORE1${goto 57}: ${hwmon 2 temp 1}${iconv_start UTF-8
ISO_8859-1}°${iconv_stop}C
${voffset 0}${goto 8}${font
Weather:size=14}${color red}y${font}$color${font sans-serif:bold:size=8}
PCI${goto 57}: ${hwmon 1 temp 2}${iconv_start UTF-8
ISO_8859-1}°${iconv_stop}C
${voffset 0}${goto 8}${font
Weather:size=14}${color red}y${font}$color${font sans-serif:bold:size=8}
ACPI${goto 57}: ${acpitemp}${iconv_start UTF-8
ISO_8859-1}°${iconv_stop}C
#
${voffset 3}${font sans-serif:bold:size=8}${color yellow}TOP PROCESSES${goto 154}PID${goto 197}CPU%${goto 255}MEM%$color
${font
StyleBats:size=9.9}${color red}i$color ${font
sans-serif:bold:size=8}${top name 1} ${goto 144} ${top pid 1}${goto
197}${top cpu 1}${goto 250}${top mem 1}
${font
StyleBats:size=9.9}${color red}i$color ${font
sans-serif:bold:size=8}${top name 2} ${goto 144} ${top pid 2}${goto
197}${top cpu 2}${goto 250}${top mem 2}
${font
StyleBats:size=9.9}${color red}i$color ${font
sans-serif:bold:size=8}${top name 3} ${goto 144} ${top pid 3}${goto
197}${top cpu 3}${goto 250}${top mem 3}
${font
StyleBats:size=9.9}${color red}i$color ${font
sans-serif:bold:size=8}${top name 4} ${goto 144} ${top pid 4}${goto
197}${top cpu 4}${goto 250}${top mem 4}
${font
StyleBats:size=9.9}${color red}i$color ${font
sans-serif:bold:size=8}${top name 3} ${goto 144} ${top pid 5}${goto
197}${top cpu 5}${goto 250}${top mem 5}
#
${voffset 3}${font sans-serif:bold:size=8}${color yellow}TOP MEMORIES${goto 154}PID${goto 197}CPU%${goto 255}MEM%$color
${voffset
2}${font StyleBats:size=9.9}${color red}v${font}$color ${top_mem name
1}${goto 144}${top_mem pid 1}${goto 197}${top_mem cpu 1}${goto
250}${top_mem mem 1}
${voffset 2}${font StyleBats:size=9.9}${color
red}v${font}$color ${top_mem name 2}${goto 144}${top_mem pid 2}${goto
197}${top_mem cpu 2}${goto 250}${top_mem mem 2}
${voffset 2}${font
StyleBats:size=9.9}${color red}v${font}$color ${top_mem name 3}${goto
144}${top_mem pid 3}${goto 197}${top_mem cpu 3}${goto 250}${top_mem mem
3}
${voffset 2}${font StyleBats:size=9.9}${color red}v${font}$color
${top_mem name 4}${goto 144}${top_mem pid 4}${goto 197}${top_mem cpu
4}${goto 250}${top_mem mem 4}
${voffset 2}${font
StyleBats:size=9.9}${color red}v${font}$color ${top_mem name 5}${goto
144}${top_mem pid 5}${goto 197}${top_mem cpu 5}${goto 250}${top_mem mem
5}
#
${voffset 3}${font sans-serif:bold:size=8}${color yellow}NETWORK ${hr 2}$color${if_existing /proc/net/route ppp0}
${gw_iface}$alignc ....Berukband....
${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color} Public IP: $alignr ${addr ppp0}
${voffset
2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color} Private
IP:${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e
's/[^[:digit:]\|.]//g'}
${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}T${font}${color} Downloads:${goto 237}${downspeed ppp0}/s
${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}N${font}${color} Uploads:${goto 237}${upspeed ppp0}/s
Total:
Downloads:${goto 118}${color green}${totaldown ppp0}${color}${goto 185}
Uploads:${color red}${goto 243}${totalup ppp0}${color}
#${wireless_link_qual ppp0}%
#
${else}${if_existing /proc/net/route wlan0}$
$alignc ....Wireless....
${voffset
2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}WAN
IP:$alignr${execi 3600 wget -O- http://whatismyip.org/ | tail}
${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}IP address: $alignr ${addr wlan0}
${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}ESSID: $alignr ${wireless_essid wlan0}
${voffset
2}${font PizzaDudeBullets:size=9.5}${color
red}a${font}${color}Connection quality: $alignr
${wireless_link_qual_perc wlan0}%
Downloads:$alignr${downspeed wlan0}/s
${downspeedgraph wlan0 20,290 F57900 FCAF3E}
Total Downloads:$alignr${totaldown wlan0}
Uploads:$alignr${upspeed wlan0}/s
${upspeedgraph wlan0 20,290 F57900 FCAF3E}
Total Uploads:$alignr${totalup wlan0}
#
${else}${if_existing /proc/net/route eth1}
$alignc ....Wireless....
WAN IP:$alignr${execi 3600 wget -O- http://whatismyip.org/ | tail}
IP address: $alignr ${addr eth1}
ESSID: $alignr ${wireless_essid eth1}
Connection quality: $alignr ${wireless_link_qual_perc eth1}%
Downloads:$alignr${downspeed eth1}/s
${downspeedgraph eth1 20,290 F57900 FCAF3E}
Total Downloads:$alignr$${totaldown eth1}
Uploads:$alignr${upspeed eth1}/s
${upspeedgraph eth1 20,290 F57900 FCAF3E}
Total Uploads:$alignr${totalup eth1}
#
${else}${if_existing /proc/net/route eth0}
$alignc ....Cable....
WAN IP:$alignr${execi 3600 wget -O- http://whatismyip.org/ | tail}
IP address: $alignr ${addr eth0}
ESSID: $alignr ${wireless_essid eth0}
Connection quality: $alignr ${wireless_link_qual_perc eth0}%
Downloads:$alignr${downspeed eth0}/s
${downspeedgraph eth1 8,290 F57900 FCAF3E}
Total Downloads:$alignr$${totaldown eth0}
Uploads:$alignr${upspeed eth0}/s
${upspeedgraph eth0 8,290 F57900 FCAF3E}
Total Uploads:$alignr${totalup eth0}
${else}${font sans-serif:bold:size=8}${font}Takdok Internet Pulok Wei${endif}
This is the lua... with the credit to the original sourcei just edit a little.
#
--[[
BARGRAPH WIDGET
v2.1 by wlourf (07 Jan. 2011)
this widget draws a bargraph with different effects
http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
To call the script in a conky, use, before TEXT
lua_load /home/akubuntu/conkyJed/bargraph.lua
lua_draw_hook_pre main_rings
and add one line (blank or not) after TEXT
Parameters are :
3 parameters are mandatory
name - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu"
arg - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0"
arg can be a numerical value if name=""
max - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100
Optional parameters:
x,y - coordinates of the starting point of the bar, default = middle of the conky window
cap - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b"
http://www.cairographics.org/samples/set_line_cap/
angle - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar)
set to 90 for an horizontal bar
skew_x - skew bar around x axis, default = 0
skew_y - skew bar around y axis, default = 0
blocks - number of blocks to display for a bar (values >0) , default= 10
height - height of a block, default=10 pixels
width - width of a block, default=20 pixels
space - space between 2 blocks, default=2 pixels
angle_bar - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0
radius - for cicular bars, internal radius, default=0
with radius, parameter width has no more effect.
Colours below are defined into braces {colour in hexadecimal, alpha}
fg_colour - colour of a block ON, default= {0x00FF00,1}
bg_colour - colour of a block OFF, default = {0x00FF00,0.5}
alarm - threshold, values after this threshold will use alarm_colour colour , default=max
alarm_colour - colour of a block greater than alarm, default=fg_colour
smooth - (true or false), create a gradient from fg_colour to bg_colour, default=false
mid_colour - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha}
for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add
3 colours to gradient created by fg_colour and alarm_colour, default=no mid_colour
led_effect - add LED effects to each block, default=no led_effect
if smooth=true, led_effect is not used
possibles values : "r","a","e" for radial, parallel, perdendicular to the bar (just try!)
led_effect has to be used with theses colours :
fg_led - middle colour of a block ON, default = fg_colour
bg_led - middle colour of a block OFF, default = bg_colour
alarm_led - middle colour of a block > ALARM, default = alarm_colour
reflection parameters, not available for circular bars
reflection_alpha - add a reflection effect (values from 0 to 1) default = 0 = no reflection
other values = starting opacity
reflection_scale - scale of the reflection (default = 1 = height of text)
reflection_length - length of reflection, define where the opacity will be set to zero
values from 0 to 1, default =1
reflection - position of reflection, relative to a vertical bar, default="b"
possibles values are : "b","t","l","r" for bottom, top, left, right
draw_me - if set to false, text is not drawn (default = true or 1)
it can be used with a conky string, if the string returns 1, the text is drawn :
example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",
v1.0 (10 Feb. 2010) original release
v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value
v1.2 (28 Feb. 2010) just renamed the widget to bargraph
v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way
v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables
v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation version 3 (GPLv3)
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-- MA 02110-1301, USA.
]]
require 'cairo'
----------------START OF PARAMETERS ----------
function conky_main_bars()
local bars_settings={
{ --[ Graph for CPU1 ]--
name="cpu",
arg="cpu1",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=242,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for CPU2 ]--
name="cpu",
arg="cpu2",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=258,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for CPU2 ]--
name="cpu",
arg="cpu3",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=273,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for CPU2 ]--
name="cpu",
arg="cpu4",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=289,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for Memory ]--
name="memperc",
arg="",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=305,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for Home ]--
name="fs_used_perc",
arg="/home",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=321,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for Swap ]--
name="swapperc",
arg="",
max=100,
alarm=50,
alarm_colour={0xFF0000,0.72},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=337,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 1 temp 1",
arg="hwmon 1 temp 1",
max=100,
alarm=86,
alarm_colour={0xFF0000,0.60},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=375,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 2 temp 1",
arg="hwmon 2 temp 1",
max=100,
alarm=86,
alarm_colour={0xFF0000,0.60},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=394,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 1 temp 2",
arg="hwmon 1 temp 2",
max=100,
alarm=86,
alarm_colour={0xFF0000,0.60},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=413,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for network ]--
name="downspeedf",
arg="ppp0",
max=250,
alarm=200,
alarm_colour={0xFF0000,0.60},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=690,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
{ --[ Graph for network ]--
name="upspeedf",
arg="ppp0",
max=250,
alarm=200,
alarm_colour={0xFF0000,0.60},
bg_colour={0xFFFFFF,0.13},
fg_colour={0x00FF00,0.55},
mid_colour={{0.45,0xFFFF00,0.70}},
x=96,y=707,
blocks=66,
space=1,
height=2,width=12,
angle=90,
smooth=true
},
}
-----------END OF PARAMETERS--------------
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)
cr = cairo_create(cs)
--prevent segmentation error when reading cpu state
if tonumber(conky_parse('${updates}'))>3 then
for i in pairs(bars_settings) do
draw_multi_bar_graph(bars_settings[i])
end
end
cairo_destroy(cr)
cairo_surface_destroy(cs)
cr=nil
end
function draw_multi_bar_graph(t)
cairo_save(cr)
--check values
if t.draw_me == true then t.draw_me = nil end
if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end
if t.name==nil and t.arg==nil then
print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ")
return
end
if t.max==nil then
print ("No maximum value defined, use 'max'")
return
end
if t.name==nil then t.name="" end
if t.arg==nil then t.arg="" end
--set default values
if t.x == nil then t.x = conky_window.width/2 end
if t.y == nil then t.y = conky_window.height/2 end
if t.blocks == nil then t.blocks=10 end
if t.height == nil then t.height=10 end
if t.angle == nil then t.angle=0 end
t.angle = t.angle*math.pi/180
--line cap style
if t.cap==nil then t.cap = "b" end
local cap="b"
for i,v in ipairs({"s","r","b"}) do
if v==t.cap then cap=v end
end
local delta=0
if t.cap=="r" or t.cap=="s" then delta = t.height end
if cap=="s" then cap = CAIRO_LINE_CAP_SQUARE
elseif cap=="r" then
cap = CAIRO_LINE_CAP_ROUND
elseif cap=="b" then
cap = CAIRO_LINE_CAP_BUTT
end
--end line cap style
--if t.led_effect == nil then t.led_effect="r" end
if t.width == nil then t.width=20 end
if t.space == nil then t.space=2 end
if t.radius == nil then t.radius=0 end
if t.angle_bar == nil then t.angle_bar=0 end
t.angle_bar = t.angle_bar*math.pi/360 --halt angle
--colours
if t.bg_colour == nil then t.bg_colour = {0x00FF00,0.5} end
if #t.bg_colour~=2 then t.bg_colour = {0x00FF00,0.5} end
if t.fg_colour == nil then t.fg_colour = {0x00FF00,1} end
if #t.fg_colour~=2 then t.fg_colour = {0x00FF00,1} end
if t.alarm_colour == nil then t.alarm_colour = t.fg_colour end
if #t.alarm_colour~=2 then t.alarm_colour = t.fg_colour end
if t.mid_colour ~= nil then
for i=1, #t.mid_colour do
if #t.mid_colour[i]~=3 then
print ("error in mid_color table")
t.mid_colour[i]={1,0xFFFFFF,1}
end
end
end
if t.bg_led ~= nil and #t.bg_led~=2 then t.bg_led = t.bg_colour end
if t.fg_led ~= nil and #t.fg_led~=2 then t.fg_led = t.fg_colour end
if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end
if t.led_effect~=nil then
if t.bg_led == nil then t.bg_led = t.bg_colour end
if t.fg_led == nil then t.fg_led = t.fg_colour end
if t.alarm_led == nil then t.alarm_led = t.fg_led end
end
if t.alarm==nil then t.alarm = t.max end --0.8*t.max end
if t.smooth == nil then t.smooth = false end
if t.skew_x == nil then
t.skew_x=0
else
t.skew_x = math.pi*t.skew_x/180
end
if t.skew_y == nil then
t.skew_y=0
else
t.skew_y = math.pi*t.skew_y/180
end
if t.reflection_alpha==nil then t.reflection_alpha=0 end
if t.reflection_length==nil then t.reflection_length=1 end
if t.reflection_scale==nil then t.reflection_scale=1 end
--end of default values
local function rgb_to_r_g_b(col_a)
return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2]
end
--functions used to create patterns
local function create_smooth_linear_gradient(x0,y0,x1,y1)
local pat = cairo_pattern_create_linear (x0,y0,x1,y1)
cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
if t.mid_colour ~=nil then
for i=1, #t.mid_colour do
cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
end
end
return pat
end
local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1)
local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
if t.mid_colour ~=nil then
for i=1, #t.mid_colour do
cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
end
end
return pat
end
local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led)
local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0)
cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp))
cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp))
return pat
end
local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode)
local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
if mode==3 then
cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp))
cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))
else
cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led))
cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))
end
return pat
end
local function draw_single_bar()
--this fucntion is used for bars with a single block (blocks=1) but
--the drawing is cut in 3 blocks : value/alarm/background
--not zvzimzblr for circular bar
local function create_pattern(col_alp,col_led,bg)
local pat
if not t.smooth then
if t.led_effect=="e" then
pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
elseif t.led_effect=="a" then
pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led)
elseif t.led_effect=="r" then
pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2)
else
pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))
end
else
if bg then
pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour))
else
pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height)
end
end
return pat
end
local y1=-t.height*pct/100
local y2,y3
if pct>(100*t.alarm/t.max) then
y1 = -t.height*t.alarm/100
y2 = -t.height*pct/100
if t.smooth then y1=y2 end
end
if t.angle_bar==0 then
--block for fg value
local pat = create_pattern(t.fg_colour,t.fg_led,false)
cairo_set_source(cr,pat)
cairo_rectangle(cr,0,0,t.width,y1)
cairo_fill(cr)
cairo_pattern_destroy(pat)
-- block for alarm value
if not t.smooth and y2 ~=nil then
pat = create_pattern(t.alarm_colour,t.alarm_led,false)
cairo_set_source(cr,pat)
cairo_rectangle(cr,0,y1,t.width,y2-y1)
cairo_fill(cr)
y3=y2
cairo_pattern_destroy(pat)
else
y2,y3=y1,y1
end
-- block for bg value
cairo_rectangle(cr,0,y2,t.width,-t.height-y3)
pat = create_pattern(t.bg_colour,t.bg_led,true)
cairo_set_source(cr,pat)
cairo_pattern_destroy(pat)
cairo_fill(cr)
end
end --end single bar
local function draw_multi_bar()
--function used for bars with 2 or more blocks
for pt = 1,t.blocks do
--set block y
local y1 = -(pt-1)*(t.height+t.space)
local light_on=false
--set colors
local col_alp = t.bg_colour
local col_led = t.bg_led
if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block
if pct>=(pcb*(pt-1)) then
light_on = true
col_alp = t.fg_colour
col_led = t.fg_led
if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then
col_alp = t.alarm_colour
col_led = t.alarm_led
end
end
end
--set colors
--have to try to create gradients outside the loop ?
local pat
if not t.smooth then
if t.angle_bar==0 then
if t.led_effect=="e" then
pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
elseif t.led_effect=="a" then
pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led)
elseif t.led_effect=="r" then
pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2)
else
pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))
end
else
if t.led_effect=="a" then
pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1),
0, 0, t.radius+(t.height+t.space)*(pt),
col_alp,col_led,3)
else
pat = cairo_pattern_create_rgba (rgb_to_r_g_b(col_alp))
end
end
else
if light_on then
if t.angle_bar==0 then
pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space))
else
pat = create_smooth_radial_gradient(0, 0, (t.height+t.space), 0,0,(t.blocks+1)*(t.height+t.space),2)
end
else
pat = cairo_pattern_create_rgba (rgb_to_r_g_b(t.bg_colour))
end
end
cairo_set_source (cr, pat)
cairo_pattern_destroy(pat)
--draw a block
if t.angle_bar==0 then
cairo_move_to(cr,0,y1)
cairo_line_to(cr,t.width,y1)
else
cairo_arc( cr,0,0,
t.radius+(t.height+t.space)*(pt)-t.height/2,
-t.angle_bar -math.pi/2 ,
t.angle_bar -math.pi/2)
end
cairo_stroke(cr)
end
end
local function setup_bar_graph()
--function used to retrieve the value to display and to set the cairo structure
if t.blocks ~=1 then t.y=t.y-t.height/2 end
local value = 0
if t.name ~="" then
value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
--$to_bytes doesn't work when value has a decimal point,
--https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f
--http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310
--conky bug?
--value = (conky_parse(string.format('${%s %s}', t.name, t.arg)))
--if string.match(value,"%w") then
-- value = conky_parse(string.format('${to_bytes %s}',value))
--end
else
value = tonumber(t.arg)
end
if value==nil then value =0 end
pct = 100*value/t.max
pcb = 100/t.blocks
cairo_set_line_width (cr, t.height)
cairo_set_line_cap (cr, cap)
cairo_translate(cr,t.x,t.y)
cairo_rotate(cr,t.angle)
local matrix0 = cairo_matrix_t:create()
tolua.takeownership(matrix0)
cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)
cairo_transform(cr,matrix0)
--call the drawing function for blocks
if t.blocks==1 and t.angle_bar==0 then
draw_single_bar()
if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end
else
draw_multi_bar()
end
--dot for reminder
--[[
if t.blocks ~=1 then
cairo_set_source_rgba(cr,1,0,0,1)
cairo_arc(cr,0,t.height/2,3,0,2*math.pi)
cairo_fill(cr)
else
cairo_set_source_rgba(cr,1,0,0,1)
cairo_arc(cr,0,0,3,0,2*math.pi)
cairo_fill(cr)
end]]
--call the drawing function for reflection and prepare the mask used
if t.reflection_alpha>0 and t.angle_bar==0 then
local pat2
local matrix1 = cairo_matrix_t:create()
tolua.takeownership(matrix1)
if t.angle_bar==0 then
pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)}
if t.reflection=="t" then
cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2)
pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2)
elseif t.reflection=="r" then
cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0)
pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0)
elseif t.reflection=="l" then
cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0)
pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0)
else --bottom
cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2)
pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks))
end
end
cairo_transform(cr,matrix1)
if t.blocks==1 and t.angle_bar==0 then
draw_single_bar()
cairo_translate(cr,0,-t.height/2)
else
draw_multi_bar()
end
cairo_set_line_width(cr,0.01)
cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha)
cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)
if t.angle_bar==0 then
cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4])
end
cairo_clip_preserve(cr)
cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
cairo_stroke(cr)
cairo_mask(cr,pat2)
cairo_pattern_destroy(pat2)
cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
end --reflection
pct,pcb=nil
end --setup_bar_graph()
--start here !
setup_bar_graph()
cairo_restore(cr)
end
#
put .conkyrc in home folder, make it executable
put bargraph_small.lua anywhere you like, but make sure you got the path right.
make sure you got the right font....please refer to your .conkyrc
I didn't fully make it perfect so please edit it to suit you needs.
Enjoy.
Votre blog est simplement génial. J'y ai découvert de superbes images, signatures, citations. Je ne ma lasse pas de le regarder.
ReplyDeletevoyance gratuite par mail
your site is simply beautiful and superb. Well done to you and continue.
ReplyDeletevoyance gratuite en ligne par mail en direct