background yes use_xft yes xftfont Sans:bold:size=8 xftalpha 1 update_interval 0.2 total_run_times 0 own_window yes own_window_transparent yes own_window_class override own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager double_buffer yes minimum_size 350 900 #maximum_length 720 draw_shades no draw_outline no draw_borders no draw_graph_borders yes default_color white default_shade_color black default_outline_color white alignment top_right gap_x 10 gap_y 0 no_buffers no uppercase no cpu_avg_samples 2 override_utf8_locale yes uppercase no lua_load /path to/bargraphl.lua lua_draw_hook_post main_bars lua_load /path to/rings.lua lua_draw_hook_pre main_rings TEXT ${image ~/.conky/base.png -p 1,1 -s 380x90}${image ~/.conky/base.png -p 1,75 -s 380x86}${image ~/.conky/base.png -p 1,140 -s 380x132}${image ~/.conky/base.png -p 1,251 -s 380x90}${image ~/.conky/base.png -p 1,325 -s 380x82}${image ~/.conky/base.png -p 1,392 -s 380x82}${image ~/.conky/base.png -p 1,455 -s 380x122}${image ~/.conky/base.png -p 1,544 -s 380x205}${if_existing /etc/SuSE-release}${image ~/.conky/Icons/OS/opensuse.png -p 18,25 -s 45x45}${else}${if_existing /etc/fedora-release}${image ~/.conky/Icons/OS/fedora.png -p 18,25 -s 45x45}${else}${if_existing /etc/gentoo-release}${image ~/.conky/Icons/OS/gentoo.png -p 18,25 -s 45x45}${else}${if_existing /etc/issue Ubuntu}${image ~/.conky/Icons/OS/ubuntu.png -p 18,25 -s 45x45}${else}${if_existing /etc/slackware-version}${image ~/.conky/Icons/OS/slackware.png -p 18,25 -s 45x45}${else}${if_existing /etc/issue Mint}${image ~/.conky/Icons/OS/mint.png -p 18,25 -s 45x45}${else}${if_existing /etc/issue Arch}${image ~/.conky/Icons/OS/archlinux.png -p 18,25 -s 45x45}${else}${image ~/.conky/Icons/OS/setting.png -p 18,25 -s 45x45}${endif}${endif}${endif}${endif}${endif}${endif}${endif}${if_existing /proc/net/route wlan0}${image ~/.conky/Icons/Network/wlan.png -p 18,481 -s 45x45}${else}${if_existing /proc/net/route ppp0}${image ~/.conky/Icons/Network/ppp.png -p 18,481 -s 45x45}${else}${if_existing /proc/net/route eth0}${image ~/.conky/Icons/Network/lan.png -p 18,481 -s 45x45}${else}${image ~/.conky/Icons/Network/disconnected.png -p 18,481 -s 45x45}${endif}${endif}${endif}${image ~/.conky/Icons/Memory.png -p 18,170 -s 45x45}${image ~/.conky/Icons/Clock.png -p 18,100 -s 45x45}${image ~/.conky/Icons/temp.png -p 18,275 -s 45x45}${image ~/.conky/Icons/Task_Manager.png -p 18,350 -s 45x45} #${image ~/.conky/Icons/Weather.png -p 18,626 -s 45x45} ${goto 18}${font sans-serif:bold:size=8}${color yellow}SYSTEM ${hr 2}$color ${goto 70}${exec lsb_release -d -s} ${goto 70}${color white}${font sans-serif:bold:size=8}${sysname} ${kernel}:$alignr$nodename ${goto 70}${color white}${font sans-serif:bold:size=8}4x Intel(R) Core(TM) i5-2410M $alignr${freq_g cpu0}Ghz ${goto 70}${color white}${font sans-serif:bold:size=8}Uptime:$alignr$uptime # ${voffset 10}${goto 18}${font sans-serif:bold:size=8}${color yellow}TIME & DATE ${hr 2} ${goto 95}${font LCDMono:bold:size=28}${time %I:%M:%S}${goto 255}${time %p}${font} ${goto 125}${font sans-serif:bold:size=8}${Time %A %d/%B/%Y}$color # ${voffset 8}${goto 18}${font sans-serif:bold:size=8}${color yellow}PROCESSORS ${hr 2}$color ${goto 115}${font sans-serif:bold:size=11}${color red}1${goto 178}2${goto 247}3${goto 315}4${color}${font} ${goto 114}${cpu cpu1}%${goto 177}${cpu cpu2}%${goto 245}${cpu cpu3}%${goto 310}${cpu cpu4}% ${voffset 16}${goto 22}${font sans-serif:bold:size=8} RAM${goto 63}: $memperc% ${goto 190}$mem / $alignr$memmax ${goto 22}${font sans-serif:bold:size=8} DISK${goto 63}: ${fs_used_perc /}%${goto 190}${fs_used /} / $alignr${fs_size /} ${goto 22}${font sans-serif:bold:size=8} SWAP${goto 63}: ${swapperc}%${goto 190}${swap} ${goto 240}/ $alignr${swapmax} # ${voffset 5}${goto 18}${font sans-serif:bold:size=8}${color yellow}TEMPERATURE ${voffset 2}${hr 2}$color ${goto 65}${font sans-serif:bold:size=8} PCI${goto 109}: ${hwmon 1 temp 1}°C ${goto 65}${font sans-serif:bold:size=8} CORE0${goto 109}: ${hwmon 1 temp 2}°C ${goto 65}${font sans-serif:bold:size=8} CORE1${goto 109}: ${hwmon 1 temp 3}°C ${goto 65}${font sans-serif:bold:size=8} DISK${goto 109}: ${execpi 10 hddtemp -n /dev/sda }°C # ${voffset 10}${goto 18}${font sans-serif:bold:size=8}${color yellow}TOP PROCESSES${goto 174}PID${goto 227}CPU%${goto 280}MEM%$color ${goto 70}${font sans-serif:bold:size=8}${top name 1} ${goto 174} ${top pid 1}${goto 227}${top cpu 1}${goto 280}${top mem 1} ${goto 70}${font sans-serif:bold:size=8}${top name 2} ${goto 174} ${top pid 2}${goto 227}${top cpu 2}${goto 280}${top mem 2} ${goto 70}${font sans-serif:bold:size=8}${top name 3} ${goto 174} ${top pid 3}${goto 227}${top cpu 3}${goto 280}${top mem 3} #${goto 70}${font sans-serif:bold:size=8}${top name 4} ${goto 174} ${top pid 4}${goto 227}${top cpu 4}${goto 280}${top mem 4} #${goto 70}${font sans-serif:bold:size=8}${top name 3} ${goto 174} ${top pid 5}${goto 227}${top cpu 5}${goto 280}${top mem 5} # ${voffset 13}${goto 18}${font sans-serif:bold:size=8}${color yellow}TOP MEMORY${goto 174}PID${goto 227}CPU%${goto 280}MEM%$color ${goto 70}${top_mem name 1}${goto 174}${top_mem pid 1}${goto 227}${top_mem cpu 1}${goto 280}${top_mem mem 1} ${goto 70}${top_mem name 2}${goto 174}${top_mem pid 2}${goto 227}${top_mem cpu 2}${goto 280}${top_mem mem 2} ${goto 70}${top_mem name 3}${goto 174}${top_mem pid 3}${goto 227}${top_mem cpu 3}${goto 280}${top_mem mem 3} #${goto 70}${top_mem name 4}${goto 174}${top_mem pid 4}${goto 227}${top_mem cpu 4}${goto 280}${top_mem mem 4} #${goto 70}${top_mem name 5}${goto 174}${top_mem pid 5}${goto 227}${top_mem cpu 5}${goto 280}${top_mem mem 5} # # ${voffset 13}${goto 18}${font sans-serif:bold:size=8}${color yellow}NETWORK ${hr 2}$color${if_existing /proc/net/route wwan0} $alignc ....Berukband.... ${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color} Public IP: $alignr ${addr wwan0} ${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 wwan0}/s ${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}N${font}${color} Uploads:${goto 237}${upspeed wwan0}/s Total: Downloads:${goto 128}${color green}${totaldown wwan0}${color}${goto 185} Uploads:${color red}${goto 243}${totalup wwan0}${color} #${wireless_link_qual wwan0}% # ${else}${if_existing /proc/net/route ppp0} ${goto 130} ${color yellow} ....Berukband....$color ${goto 70}Public IP:$alignr ${addr ppp0} ${goto 70}Private IP:${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'} ${goto 70}Downloads:${goto 237}${downspeed ppp0}/s ${goto 70}Uploads:${goto 237}${upspeed ppp0}/s ${goto 70}Total: Downloads::${goto 188}${color green}${totaldown ppp0}${color}${goto 230} Uploads${color red}${goto 287}${totalup ppp0}${color} # ${else}${if_existing /proc/net/route wlan0} ${voffset -91}${goto 180}${color yellow} ....Wireless....$color #${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}WAN IP:$alignr${execi 3600 wget -O- http://whatismyip.org/ | tail} ${goto 70}${font}${color}IP address: $alignr ${addr wlan0} ${goto 70}${font}${color}ESSID: $alignr ${wireless_essid wlan0} ${goto 70}${font}${color} Downloads:${goto 237}${downspeed wlan0}/s ${goto 70}${font}${color} Uploads:${goto 237}${upspeed wlan0}/s ${goto 70}Total: Downloads:${goto 178}${color green}${totaldown wlan0}${color}${goto 230} Uploads:${color red}${goto 287}${totalup wlan0}${color} #${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}Connection quality: $alignr ${wireless_link_qual_perc wlan0}% # ${else}${if_existing /proc/net/route eth0} ${voffset -91}$alignc ....Cable.... ${goto 70}${font}${color}IP address: $alignr ${addr eth0} ${goto 70}${font}${color}ESSID: $alignr ${wireless_essid eth0} ${goto 70}${font}${color} Downloads:${goto 237}${downspeed eth0}/s ${goto 70}${font}${color} Uploads:${goto 237}${upspeed eth0}/s ${goto 70}Total: Downloads:${goto 178}${color green}${totaldown eth0}${color}${goto 230} Uploads:${color red}${goto 287}${totalup eth0}${color} #${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}Connection quality: $alignr ${wireless_link_qual_perc eth0}% # ${else}${if_existing /proc/net/route eth1} ${voffset -91}$alignc ....Cable.... ${goto 70}${font}${color}IP address: $alignr ${addr eth1} ${goto 70}${font}${color}ESSID: $alignr ${wireless_essid eth1} ${goto 70}${font}${color} Downloads:${goto 237}${downspeed eth1}/s ${goto 70}${font}${color} Uploads:${goto 237}${upspeed eth1}/s ${goto 70}Total: Downloads:${goto 178}${color green}${totaldown eth1}${color}${goto 230} Uploads:${color red}${goto 287}${totalup eth1}${color} #${voffset 2}${font PizzaDudeBullets:size=9.5}${color red}a${font}${color}Connection quality: $alignr ${wireless_link_qual_perc eth1}% # ${else}${goto 120}${font sans-serif:bold:size=8}${color yellow} $alignc ..Takdok Internet Wei.. ${endif} ${endif}${endif}${endif}${endif} # ${voffset -7}${goto 18}${font sans-serif:bold:size=8}${color yellow}WEATHER SUNGAI KOYAN ${hr 2}$color${font}${texeci 500 bash $HOME/1b1_accuweather_images/1b1} ${image $HOME/1b1_accuweather_images/cc.png -p 0,595 -s 130x70} ${voffset -10}${goto 22}${font sans-serif:bold:size=7}${color yellow}${execpi 600 sed -n '1p' $HOME/1b1_accuweather_images/messages}${font}${goto 200}${font sans-serif:bold:size=5}${color yellow}TEMPERATURE: $color${alignr}${execpi 600 sed -n '29p' $HOME/1b1_accuweather_images/curr_cond}°C (${execpi 600 sed -n '30p' $HOME/1b1_accuweather_images/curr_cond}°C) ${goto 200}${color yellow}WIND: $color${alignr}${execpi 600 sed -n '31p' $HOME/1b1_accuweather_images/curr_cond} ${execpi 600 sed -n '32p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}HUMIDITY: $color${alignr}${execpi 600 sed -n '33p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}DEW POINT: $color${alignr}${execpi 600 sed -n '37p' $HOME/1b1_accuweather_images/curr_cond}°C ${goto 200}${color yellow}PREASURE: $color${alignr}${execpi 600 sed -n '34p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}VISIBILITY: $color${alignr}${execpi 600 sed -n '38p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}CLOUD COVER: $color${alignr}${execpi 600 sed -n '35p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}UV INDEX: $color${alignr}${execpi 600 sed -n '36p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}SUN/MOON RISE: $color${alignr}${execpi 600 sed -n '39p' $HOME/1b1_accuweather_images/curr_cond}/${execpi 600 sed -n '41p' $HOME/1b1_accuweather_images/curr_cond} ${goto 200}${color yellow}SUN/MOON SET: $color${alignr}${execpi 600 sed -n '40p' $HOME/1b1_accuweather_images/curr_cond}/${execpi 600 sed -n '42p' $HOME/1b1_accuweather_images/curr_cond} ${voffset -90}${goto 135}${font sans-serif:bold:size=5}${color yellow}TODAY${voffset 50}${goto 135}TONIGHT$font${color}${image $HOME/1b1_accuweather_images/tod.png -p 117,593 -s 60x36}${image $HOME/1b1_accuweather_images/ton.png -p 117,640 -s 60x36} ${voffset -60}${goto 175}${font sans-serif:bold:size=5}${execpi 600 sed -n '26p' $HOME/1b1_accuweather_images/first_days}°C${voffset 50}${goto 175}${execpi 600 sed -n '31p' $HOME/1b1_accuweather_images/first_days}°C ${voffset -50}${color gold3}${goto 173}(${execpi 600 sed -n '27p' $HOME/1b1_accuweather_images/first_days}°C)${voffset 50}${goto 173}(${execpi 600 sed -n '32p' $HOME/1b1_accuweather_images/first_days}°C)$color ${voffset 15}${goto 20}${color yellow}${hr 0.25}$color${color yellow}${hr 1}$color ${font sans-serif:bold:size=5}${goto 20}${execpi 600 sed -n '5p' $HOME/1b1_accuweather_images/first_days}${goto 80}${execpi 600 sed -n '10p' $HOME/1b1_accuweather_images/first_days}${goto 140}${execpi 600 sed -n '15p' $HOME/1b1_accuweather_images/first_days}${goto 200}${execpi 600 sed -n '20p' $HOME/1b1_accuweather_images/first_days}${goto 260}${execpi 600 sed -n '1p' $HOME/1b1_accuweather_images/last_days}${goto 320}${execpi 600 sed -n '6p' $HOME/1b1_accuweather_images/last_days}$color${font}${image $HOME/1b1_accuweather_images/6.png -p 10,690 -s 60x36}${image $HOME/1b1_accuweather_images/11.png -p 70,690 -s 60x36}${image $HOME/1b1_accuweather_images/16.png -p 130,690 -s 60x36}${image $HOME/1b1_accuweather_images/21.png -p 190,690 -s 60x36}${image $HOME/1b1_accuweather_images/last_2.png -p 250,690 -s 60x36}${image $HOME/1b1_accuweather_images/last_7.png -p 310,690 -s 60x36} ${voffset 20}${font sans-serif:bold:size=5}${goto 20}${execpi 600 sed -n '8p' $HOME/1b1_accuweather_images/first_days}°C${goto 80}${execpi 600 sed -n '13p' $HOME/1b1_accuweather_images/first_days}°C${goto 140}${execpi 600 sed -n '18p' $HOME/1b1_accuweather_images/first_days}°C${goto 200}${execpi 600 sed -n '23p' $HOME/1b1_accuweather_images/first_days}°C${goto 260}${execpi 600 sed -n '4p' $HOME/1b1_accuweather_images/last_days}°C${goto 320}${execpi 600 sed -n '9p' $HOME/1b1_accuweather_images/last_days}°C${goto 320}${execpi 600 sed -n '14p' $HOME/1b1_accuweather_images/last_days}°C ${voffset -9}${goto 43}${color gold3}(${execpi 600 sed -n '9p' $HOME/1b1_accuweather_images/first_days}°C)${font sans-serif:bold:size=5}${goto 103}(${execpi 600 sed -n '14p' $HOME/1b1_accuweather_images/first_days}°C)${goto 163}(${execpi 600 sed -n '19p' $HOME/1b1_accuweather_images/first_days}°C)${goto 223}(${execpi 600 sed -n '24p' $HOME/1b1_accuweather_images/first_days}°C)${goto 283}(${execpi 600 sed -n '5p' $HOME/1b1_accuweather_images/last_days}°C)${goto 343}(${execpi 600 sed -n '10p' $HOME/1b1_accuweather_images/last_days}°C)
--[[
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={
{-- single block bar, skew and with reflecting + gradient
name="memperc",
arg="",
max=100,
alarm=70,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=96,
y=223,
height=277,--,
width=6,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for Home ]--
name="fs_used_perc",
arg="/home",
max=100,
alarm=56,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=96,
y=236,
height=277,--,
width=6,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for Swap ]--
name="swapperc",
arg="",
max=100,
alarm=70,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=96,
y=249,
height=277,--,
width=6,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 1 temp 1",
arg="hwmon 1 temp 1",
max=100,
alarm=79,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=283,
height=225,--,
width=5,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 1 temp 2",
arg="hwmon 1 temp 2",
max=100,
alarm=76,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=296,
height=225,--,
width=5,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for hwmon temp 1 ]--
name="hwmon 1 temp 3",
arg="hwmon 1 temp 3",
max=100,
alarm=76,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=309,
height=225,--,
width=5,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for hwmon temp 1 ]--
name="hddtemp",
arg="hddtemp",
max=100,
alarm=76,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0},
fg_colour={0xffff00,0},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=322,
height=225,--,
width=5,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for network ]--
name="downspeedf",
arg="ppp0",
max=250,
alarm=200,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0.07},
fg_colour={0xffff00,0.07},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=527,
height=228,--,
width=6,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
{ --[ Graph for network ]--
name="upspeedf",
arg="ppp0",
max=250,
alarm=200,
alarm_colour={0xFF0000,0.60},
bg_colour={0x0000FF,0.07},
fg_colour={0xffff00,0.07},
bg_led={0x0000FF,0.5},
fg_led={0xffff00,1},
led_effect="r",
blocks=1,--20,
x=145,
y=540,
height=228,--,
width=6,
angle=90,
led_effect="e",
reflection_alpha=1,
reflection="r",
space=1,
skew_x=0,
},
}
-----------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
The ring lua--[[ RINGS with SECTORS widget
v1.1 by wlourf (07 Jan. 2011)
this widget draws a ring with differents effects
http://u-scripts.blogspot.com/2010/08/rings-sectors-widgets.html
To call the script in a conky, use, before TEXT
lua_load /path/to/the/script/rings.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:
xc,yc - coordinates of the center of the ring,
default = middle of the conky window
radius - external radius of the ring, in pixels,
default = quarter of the width of the conky window
thickness - thickness of the ring, in pixels, default = 10 pixels
start_angle - starting angle of the ring, in degrees, value can be negative,
default = 0 degree
end_angle - ending angle of the ring, in degrees,
value must be greater than start_angle, default = 360 degrees
sectors - number of sectors in the ring, default = 10
gap_sectors - gap between two sectors, in pixels, default = 1 pixel
cap - the way to close a sector, available values are
"p" for parallel , default value
"r" for radial (follow the radius)
inverse_arc - if set to true, arc will be anticlockwise, default=false
border_size - size of the border, in pixels, default = 0 pixel i.e. no border
fill_sector - if set to true, each sector will be completely filled,
default=false, this parameter is inoperate if sectors=1
background - if set to false, background will not be drawn, default=true
foreground - if set to false, foreground will not be drawn, default=true
Colours tables below are defined into braces :
{position in the gradient (0 to 1), colour in hexadecimal, alpha (0 to 1)}
example for a single colour table :
{{0,0xFFAA00,1}} position parameter doesn't matter
example for a two-colours table :
{{0,0xFFAA00,1},{1,0x00AA00,1}} or {{0.5,0xFFAA00,1},{1,0x00AA00,1}}
example for a three-colours table :
{{0,0xFFAA00,1},{0.5,0xFF0000,1},{1,0x00AA00,1}}
bg_colour1 - colour table for background,
default = {{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
fg_colour1 - colour table for foreground,
default = {{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
bd_colour1 - colour table for border,
default = {{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
Seconds tables for radials gradients :
bg_colour2 - second colour table for background, default = no second colour
fg_colour2 - second colour table for foreground, default = no second colour
bd_colour2 - second colour table for border, default = no second colour
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 (08 Aug. 2010) original release
v1.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"
text is parsed inside the function, not in the array of settings
-- 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'
function conky_main_rings()
-- START PARAMETERS HERE
local rings_settings={
--line1
{
name="cpu",
arg="cpu1",
max=100,
xc=120,
yc=205,
radius=30,
thickness=15,
start_angle=-120,
sectors=1,
end_angle=120,
bg_colour1={{0,0x0000FF,0.1},{0.5,0x0000FF,0.5},{1,0x0000FF,0.1}},
fg_colour1={{0,0xFFFF00,0.1},{0.5,0xFFFF00,1.0},{1,0xFFFF00,0.1}},
fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
},
{
name="cpu",
arg="cpu2",
max=100,
xc=185,
yc=205,
radius=30,
thickness=15,
start_angle=-120,
sectors=1,
end_angle=120,
bg_colour1={{0,0x0000FF,0.1},{0.5,0x0000FF,0.5},{1,0x0000FF,0.1}},
fg_colour1={{0,0xFFFF00,0.1},{0.5,0xFFFF00,1.0},{1,0xFFFF00,0.1}},
fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
},
{
name="cpu",
arg="cpu3",
max=100,
xc=253,
yc=205,
radius=30,
thickness=15,
start_angle=-120,
sectors=1,
end_angle=120,
bg_colour1={{0,0x0000FF,0.1},{0.5,0x0000FF,0.5},{1,0x0000FF,0.1}},
fg_colour1={{0,0xFFFF00,0.1},{0.5,0xFFFF00,1.0},{1,0xFFFF00,0.1}},
fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
},
{
name="cpu",
arg="cpu4",
max=100,
xc=320,
yc=205,
radius=30,
thickness=15,
start_angle=-120,
sectors=1,
end_angle=120,
bg_colour1={{0,0x0000FF,0.1},{0.5,0x0000FF,0.5},{1,0x0000FF,0.1}},
fg_colour1={{0,0xFFFF00,0.1},{0.5,0xFFFF00,1.0},{1,0xFFFF00,0.1}},
fg_colour2={{0,0xFF0000,0.1},{0.5,0xFF0000,1.0},{1,0xFF0000,0.1}},
},
}
--END OF PARAMETERS HERE
--main function
--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)
if tonumber(conky_parse('${updates}'))>3 then
for i in pairs(rings_settings) do
draw_ring(cr,rings_settings[i])
end
end
cairo_destroy(cr)
end
function draw_ring(cr, t)
local function rgba_to_r_g_b_a(tcolour)
local colour,alpha=tcolour[2],tcolour[3]
return ((colour / 0x10000) % 0x100) / 255.,
((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
local function calc_delta(tcol1,tcol2)
--calculate deltas P R G B A to table_colour 1
for x = 1, #tcol1 do
tcol1[x].dA = 0
tcol1[x].dP = 0
tcol1[x].dR = 0
tcol1[x].dG = 0
tcol1[x].dB = 0
if tcol2~=nil and #tcol1 == #tcol2 then
local r1,g1,b1,a1 = rgba_to_r_g_b_a(tcol1[x])
local r2,g2,b2,a2 = rgba_to_r_g_b_a(tcol2[x])
tcol1[x].dP = (tcol2[x][1]-tcol1[x][1])/t.sectors
tcol1[x].dR = (r2-r1)/t.sectors
tcol1[x].dG = (g2-g1)/t.sectors
tcol1[x].dB = (b2-b1)/t.sectors
tcol1[x].dA = (a2-a1)/t.sectors
end
end
return tcol1
end
--check values
local function setup(t)
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'")
print ("for name=" .. t.name)
print ("with arg=" .. t.arg)
return
end
if t.name==nil then t.name="" end
if t.arg==nil then t.arg="" end
if t.xc==nil then t.xc=conky_window.width/2 end
if t.yc==nil then t.yc=conky_window.height/2 end
if t.thickness ==nil then t.thickness = 10 end
if t.radius ==nil then t.radius =conky_window.width/4 end
if t.start_angle==nil then t.start_angle =0 end
if t.end_angle==nil then t.end_angle=360 end
if t.bg_colour1==nil then
t.bg_colour1={{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
end
if t.fg_colour1==nil then
t.fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
end
if t.bd_colour1==nil then
t.bd_colour1={{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
end
if t.sectors==nil then t.sectors=10 end
if t.gap_sectors==nil then t.gap_sectors=1 end
if t.fill_sector==nil then t.fill_sector=false end
if t.sectors==1 then t.fill_sector=false end
if t.border_size==nil then t.border_size=0 end
if t.cap==nil then t.cap="p" end
--some checks
if t.thickness>t.radius then t.thickness=t.radius*0.1 end
t.int_radius = t.radius-t.thickness
--check colors tables
for i=1, #t.bg_colour1 do
if #t.bg_colour1[i]~=3 then t.bg_colour1[i]={1,0xFFFFFF,0.5} end
end
for i=1, #t.fg_colour1 do
if #t.fg_colour1[i]~=3 then t.fg_colour1[i]={1,0xFF0000,1} end
end
for i=1, #t.bd_colour1 do
if #t.bd_colour1[i]~=3 then t.bd_colour1[i]={1,0xFFFF00,1} end
end
if t.bg_colour2~=nil then
for i=1, #t.bg_colour2 do
if #t.bg_colour2[i]~=3 then t.bg_colour2[i]={1,0xFFFFFF,0.5} end
end
end
if t.fg_colour2~=nil then
for i=1, #t.fg_colour2 do
if #t.fg_colour2[i]~=3 then t.fg_colour2[i]={1,0xFF0000,1} end
end
end
if t.bd_colour2~=nil then
for i=1, #t.bd_colour2 do
if #t.bd_colour2[i]~=3 then t.bd_colour2[i]={1,0xFFFF00,1} end
end
end
if t.start_angle>=t.end_angle then
local tmp_angle=t.end_angle
t.end_angle= t.start_angle
t.start_angle = tmp_angle
-- print ("inversed angles")
if t.end_angle-t.start_angle>360 and t.start_angle>0 then
t.end_angle=360+t.start_angle
print ("reduce angles")
end
if t.end_angle+t.start_angle>360 and t.start_angle<=0 then
t.end_angle=360+t.start_angle
print ("reduce angles")
end
if t.int_radius<0 then t.int_radius =0 end
if t.int_radius>t.radius then
local tmp_radius=t.radius
t.radius=t.int_radius
t.int_radius=tmp_radius
print ("inversed radius")
end
if t.int_radius==t.radius then
t.int_radius=0
print ("int radius set to 0")
end
end
t.fg_colour1 = calc_delta(t.fg_colour1,t.fg_colour2)
t.bg_colour1 = calc_delta(t.bg_colour1,t.bg_colour2)
t.bd_colour1 = calc_delta(t.bd_colour1,t.bd_colour2)
end
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
--initialize table
setup(t)
--initialize cairo context
cairo_save(cr)
cairo_translate(cr,t.xc,t.yc)
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND)
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)
--get value
local value = 0
if t.name ~="" then
value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
else
value = tonumber(t.arg)
end
if value==nil then value =0 end
--initialize sectors
--angle of a sector :
local angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180
--value of a sector :
local valueA = t.max/t.sectors
--first angle of a sector :
local lastAngle = t.start_angle*math.pi/180
local function draw_sector(type_arc,angle0,angle,valpc, idx)
--this function draws a portion of arc
--type of arc, angle0 = strating angle, angle= angle of sector,
--valpc = percentage inside the sector, idx = sctor number #
local tcolor
if type_arc=="bg" then --background
if valpc==1 then return end
tcolor=t.bg_colour1
elseif type_arc=="fg" then --foreground
if valpc==0 then return end
tcolor=t.fg_colour1
elseif type_arc=="bd" then --border
tcolor=t.bd_colour1
end
--angles equivalents to gap_sector
local ext_delta=math.atan(t.gap_sectors/(2*t.radius))
local int_delta=math.atan(t.gap_sectors/(2*t.int_radius))
--angles of arcs
local ext_angle=(angle-ext_delta*2)*valpc
local int_angle=(angle-int_delta*2)*valpc
--define colours to use for this sector
if #tcolor==1 then
--plain color
local vR,vG,vB,vA = rgba_to_r_g_b_a(tcolor[1])
cairo_set_source_rgba(cr,vR+tcolor[1].dR*idx,
vG+tcolor[1].dG*idx,
vB+tcolor[1].dB*idx,
vA+tcolor[1].dA*idx )
else
--radient color
local pat=cairo_pattern_create_radial(0,0,t.int_radius,0,0,t.radius)
for i=1, #tcolor do
local vP,vR,vG,vB,vA = tcolor[i][1], rgba_to_r_g_b_a(tcolor[i])
cairo_pattern_add_color_stop_rgba (pat,
vP+tcolor[i].dP*idx,
vR+tcolor[i].dR*idx,
vG+tcolor[i].dG*idx,
vB+tcolor[i].dB*idx,
vA+tcolor[i].dA*idx )
end
cairo_set_source (cr, pat)
cairo_pattern_destroy(pat)
end
--start drawing
cairo_save(cr)
--x axis is parrallel to start of sector
cairo_rotate(cr,angle0-math.pi/2)
local ri,re = t.int_radius ,t.radius
--point A
local angle_a
if t.cap == "p" then
angle_a = int_delta
if t.inverse_arc and type_arc ~="bg" then
angle_a = angle-int_angle-int_delta
end
if not(t.inverse_arc) and type_arc =="bg" then
angle_a = int_delta+int_angle
end
else --t.cap=="r"
angle_a = ext_delta
if t.inverse_arc and type_arc~="bg" then
angle_a = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_a = ext_delta+ext_angle
end
end
local ax,ay = ri*math.cos(angle_a),ri*math.sin(angle_a)
--point B
local angle_b = ext_delta
if t.cap == "p" then
if t.inverse_arc and type_arc ~="bg" then
angle_b = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_b = ext_delta+ext_angle
end
else
if t.inverse_arc and type_arc ~="bg" then
angle_b = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_b = ext_delta+ext_angle
end
end
local bx,by = re*math.cos(angle_b),re*math.sin(angle_b)
-- EXTERNAL ARC B --> C
local b0,b1
if t.inverse_arc then
if type_arc=="bg" then
b0,b1= ext_delta, angle-ext_delta-ext_angle
else
b0,b1= angle-ext_angle-ext_delta, angle-ext_delta
end
else
if type_arc=="bg" then
b0,b1= ext_delta+ext_angle, angle-ext_delta
else
b0,b1= ext_delta, ext_angle+ext_delta
end
end
---POINT D
local angle_c, angle_d
if t.cap == "p" then
angle_d = angle-int_delta
if t.inverse_arc and type_arc=="bg" then
angle_d = angle-int_delta-int_angle
end
if not(t.inverse_arc) and type_arc~="bg" then
angle_d=int_delta+int_angle
end
else
angle_d = angle-ext_delta
if t.inverse_arc and type_arc=="bg" then
angle_d =angle-ext_delta-ext_angle
end
if not(t.inverse_arc) and type_arc~="bg" then
angle_d = ext_angle+ext_delta
end
end
local dx,dy = ri*math.cos(angle_d),ri*math.sin(angle_d)
-- INTERNAL ARC D --> A
local d0,d1
if t.cap=="p" then
if t.inverse_arc then
if type_arc=="bg" then
d0,d1= angle-int_delta-int_angle,int_delta
else
d0,d1= angle-int_delta, angle- int_angle-int_delta
end
else
if type_arc=="bg" then
d0,d1= angle-int_delta, int_delta+int_angle
else
d0,d1= int_delta+int_angle, int_delta
end
end
else
if t.inverse_arc then
if type_arc=="bg" then
d0,d1= angle-ext_delta-ext_angle,ext_delta
else
d0,d1= angle-ext_delta, angle- ext_angle-ext_delta
end
else
if type_arc=="bg" then
d0,d1= angle-ext_delta,ext_delta+ext_angle
else
d0,d1= ext_angle+ext_delta, ext_delta
end
end
end
--draw sector
cairo_move_to(cr,ax,ay)
cairo_line_to(cr,bx,by)
cairo_arc(cr,0,0,re,b0,b1)
cairo_line_to(cr,dx,dy)
cairo_arc_negative(cr,0,0,ri,d0,d1)
cairo_close_path (cr);
--stroke or fill sector
if type_arc=="bd" then
cairo_set_line_width(cr,t.border_size)
cairo_stroke(cr)
else
cairo_fill(cr)
end
cairo_restore(cr)
end
--draw sectors
local n0,n1,n2 = 1,t.sectors,1
if t.inverse_arc then n0,n1,n2 = t.sectors,1,-1 end
local index = 0
for i = n0,n1,n2 do
index = index +1
local valueZ=1
local cstA, cstB = (i-1),i
if t.inverse_arc then cstA,cstB = (t.sectors-i), (t.sectors-i+1) end
if value>valueA *cstA and value<valueA*cstB then
if not t.fill_sector then
valueZ = (value-valueA*cstA)/valueA
end
else
if value<valueA*cstB then valueZ=0 end
end
local start_angle= lastAngle+(i-1)*angleA
if t.foreground ~= false then
draw_sector("fg",start_angle,angleA,valueZ, index)
end
if t.background ~= false then
draw_sector("bg",start_angle,angleA,valueZ, i)
end
if t.border_size>0 then draw_sector("bd",start_angle,angleA,1, i) end
end
cairo_restore(cr)
end
--[[END OF RING-SECTORS WIDGET]]
the background (or choose your own)the icons..
http://www.4shared.com/zip/kZ6isXjkce/morning_light_0_2_by_inyourfac.html
you must select what you want to use..
the weather file..
http://bit.ly/1b1_12-2-14
that's all, if i miss anything let me know.
Enjoy
the credit goes to:
weather conky by TeoBigusGeekus,
Conky jed,
Morning_light_0_2_by_inyourface09,
Bargraph_widget_for_Conky_3_by_wlourf, rings_and_sectors_conky_1_1_by_wlourf,
and all that i forgot, you're the great... i'm the copy paster....