Page 1729 of 2348 FirstFirst ... 7291229162916791719172717281729173017311739177918292229 ... LastLast
Results 17,281 to 17,290 of 23480

Thread: Post your .conkyrc files w/ screenshots

  1. #17281
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    [QUOTE=Arminius;10748882]
    Quote Originally Posted by mrpeachy View Post

    is this what you ment?

    Code:
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post
    cause it's not working.
    I apologise, i was being a little too vague
    you still have to put the function name afterwards

    so
    Code:
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre main_function1
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post main_function2
    (or whatever the function is called, prbably not main_function1 and 2)

    with most script theres usually something at the top telling you how to call it

    does that make more sense?
    Last edited by mrpeachy; May 1st, 2011 at 06:37 AM.

  2. #17282
    Join Date
    Feb 2009
    Beans
    433

    Re: Post your .conkyrc files w/ screenshots

    [QUOTE=mrpeachy;10748941]
    Quote Originally Posted by Arminius View Post

    I apologise, i was being a little too vague
    you still have to put the function name afterwards

    so
    Code:
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre main_function1
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post main_function2
    (or whatever the function is called, prbably not main_function1 and 2)

    with most script theres usually something at the top telling you how to call it

    does that make more sense?
    is this what u ment?
    Code:
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre main_function
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post main_function
    cause that didn't work so I thought u ment to put an underscore between pre and main, but that still didn't make it work

  3. #17283
    Join Date
    Feb 2008
    Location
    Texas
    Beans
    29,809
    Distro
    Ubuntu 20.04 Focal Fossa

    Re: Post your .conkyrc files w/ screenshots

    Hi, everyone, I wanted to see if some one will look at my script I am using be vindsl? I have adjusted it, but I have a 2 over part of my calendar,I am going to include a screen shot if I can get it to upload. Thanks to everyone in advance.
    Code:
    TEXT
    ##################################
    ##             LOGO             ##
    ##################################
    ${voffset -33}${font OpenLogos:size=103}${color2}${font}${voffset -76}${goto 178}${font UbuntuTitleBold:size=19.6}${color4}${offset 1}1${offset 5}1${offset 2}.04${font}
    ##################################
    ##            SYSTEM            ##
    ##################################
    ${voffset 20}${font DroidSans:bold:size=8.25}${color4}SYSTEM${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font OpenLogos:size=10}${color2}u${voffset -4}${font DroidSans:size=8.65}${color3}${offset 5}${sysname}${offset 5}${kernel}${alignr}${font DroidSans:size=8.45}${machine}${font}
    ${voffset 2}${font StyleBats:size=10}${color2}A${voffset -1}${font DroidSans:size=8.65}${color3}${offset 5}Amd Phenom${offset 3}9150e${offset 3}Quad core${offset 3}${alignr}${font DroidSans:size=8.3}${freq_g cpu1}${offset 1}GHz${font}
    ${voffset 2}${font StyleBats:size=10}${color2}q${voffset -1}${font DroidSans:size=8.65}${color3}${offset 5}System${offset 3}Uptime${alignr}${font DroidSans:size=8.4}${uptime_short}${font}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -1}${font DroidSans:size=8.65}${color3}${offset 5}File${offset 3}System${alignr}${font DroidSans:size=8.5}${fs_type}${font}
    ##################################
    ##          PROCESSORS          ##
    ##################################
    ${voffset 6}${font DroidSans:bold:size=8}${color4}PROCESSORS${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=9.9}${color2}k${voffset -2}${font DroidSansFallback:size=8.39}${color3}${offset 2}CPU1${offset 5}${font DroidSans:size=8.3}${cpu cpu1}%${font}
    ${voffset 2}${font StyleBats:size=9.9}${color2}k${voffset -2}${font DroidSansFallback:size=8.39}${color3}${offset 2}CPU2${offset 5}${font DroidSans:size=8.3}${cpu cpu2}%${font}
    ${voffset 2}${font StyleBats:size=9.9}${color2}k${voffset -2}${font DroidSansFallback:size=8.39}${color3}${offset 2}CPU3${offset 5}${font DroidSans:size=8.3}${cpu cpu3}%${font}
    ${voffset 2}${font StyleBats:size=9.9}${color2}k${voffset -2}${font DroidSansFallback:size=8.39}${color3}${offset 2}CPU4${offset 5}${font DroidSans:size=8.3}${cpu cpu4}%${font}
    ##################################
    ##            MEMORY            ##
    ##################################
    
    ${voffset 6}${font DroidSans:bold:size=8}${color4}MEMORY${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}l${voffset -2}${font DroidSansFallback:size=8.3}${color3}${offset 3}RAM${goto 97}${font DroidSans:size=8.3}${mem}${goto 133}/${offset 5}${memmax}${alignr}${memperc}%${font}
    ##################################
    ##             HDD              ##
    ##################################
    ${voffset 16}${font DroidSans:bold:size=8}${color4}HDD${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 5}${font StyleBats:size=9.9}${color2}x${voffset -2}${font DroidSansFallback:size=8.3}${color3}${offset 4}ROOT${goto 95}${font DroidSans:size=8.3}${fs_used /}${goto 133}/${offset 5}${fs_size /}${alignr}${fs_free_perc /}%${font}
    ${voffset 15}${font StyleBats:size=9.9}${color2}x${voffset -2}${font DroidSansFallback:size=8.3}${color3}${offset 4}HOME${goto 95}${font DroidSans:size=8.3}${fs_used /home}${goto 133}/${offset 5}${fs_size /home}${alignr}${fs_free_perc /home}%${font}
    ${voffset 15}${font StyleBats:size=9.9}${color2}4${voffset -2}${font DroidSansFallback:size=8.3}${color3}${offset 4}SWAP${goto 95}${font DroidSans:size=8.3}${swap}${goto 133}/${offset 5}${swapmax}${alignr}${swapperc}%${font}
    ##################################
    ##         TOP PROCESSES        ##
    ##################################
    ${voffset 16}${font DroidSans:bold:size=8}${color4}TOP PROCESSES${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 1}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 1}${alignr}${top_mem mem 1}%${font}
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 2}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 2}${alignr}${top_mem mem 2}%${font}
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 3}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 3}${alignr}${top_mem mem 3}%${font}
    ${voffset 2}${if_running rhythmbox}${voffset -16}${else}${if_running banshee}${voffset -16}${else}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 4}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 4}${alignr}${top_mem mem 4}%${font}
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 5}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 5}${alignr}${top_mem mem 5}%${font}
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font DroidSans:size=8.75}${color3}${offset 5}${top_mem name 6}${goto 120}${font DroidSans:size=8.3}${top_mem mem_res 6}${alignr}${top_mem mem 6}%${endif}${endif}${font}
    ##################################
    ##           NETWORK            ##
    ##################################
    ${voffset 6}${font DroidSans:bold:size=8}${color4}NETWORK${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font PizzaDudeBullets:size=9.5}${color6}a${font DroidSans:size=8.5}${color3}${offset 5}Private${offset 3}IP${alignr}${font DroidSans:size=8.3}${addr eth0}${font}
    ${voffset 0}${font PizzaDudeBullets:size=9.5}${color6}a${font DroidSans:size=8.5}${color3}${offset 5}Public${offset 7}IP${alignr}${font DroidSans:size=8.3}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}${font}
    ${voffset 4}${font PizzaDudeBullets:size=9.5}${color6}T${font DroidSans:size=8.5}${color3}${offset 5}Down${alignr}${font DroidSans:size=8.3}${downspeed eth0}${font}
    ${voffset 0}${font PizzaDudeBullets:size=9.5}${color6}N${font DroidSans:size=8.5}${color3}${offset 5}Up${alignr}${font DroidSans:size=8.3}${upspeed eth0}${font}
    ${voffset 4}${font PizzaDudeBullets:size=9.5}${color6}T${font DroidSans:size=8.5}${color3}${offset 5}Downloaded${alignr}${font DroidSans:size=8.3}${totaldown eth0}${font}
    ${voffset 0}${font PizzaDudeBullets:size=9.5}${color6}N${font DroidSans:size=8.5}${color3}${offset 5}Uploaded${alignr}${font DroidSans:size=8.3}${totalup eth0}${font}
    ##################################
    ##      WEATHER (Imperial)      ##
    ##################################
    ${voffset 6}${font DroidSans:bold:size=8}${color4}WEATHER${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 0}${goto 59}${font Weather:size=38}${color2}  ${font}${voffset -33}${offset 14}${font RadioSpace:size=32}${color3}${execi 1800 conkyForecast -d HT -i}${font}
    ${voffset 0}${font Ubuntu:size=24}${color4}${alignc}${execi 1800 conkyForecast -d CT}${font}
    ${voffset 10}${goto 20}${font ConkyWindNESW:size=41}${color3}${execi 1800 conkyForecast -d BS}${font}${voffset -40}${goto 98}${font ConkyWeather:size=45}${execi 1800 conkyForecast -d WF}${font}${voffset -39}${goto 188}${font MoonPhases:size=32}${execi 1800 conkyForecast -d MF}${font}
    ${voffset 6}${goto 28}${font DroidSansFallback:bold:size=8.45}${color4}${execpi 1800 conkyForecast -d WS -i| sed -e 's/calm'/'\$\{offset 2}Calm/g' -e 's/mph'/'\$\{offset 3}mph/g'}${goto 88}Feels like ${execi 1800 conkyForecast -d LT -ui}${execpi 1800 conkyForecast -d MP| sed -e 's/First.*'/'\$\{goto 182}First Qtr/g' -e 's/Last.*'/'\$\{goto 184}Last Qtr/g' -e 's/New.*'/'\$\{goto 195}New/g' -e 's/Full.*'/'\$\{goto 195}Full/g' -e 's/Waning.*'/'\$\{goto 187}Waning/g' -e 's/Waxing.*'/'\$\{goto 187}Waxing/g'}${font}
    ${voffset 9}${goto 36}${font DroidSansMono:bold:size=8.35}${color3}${execi 1800 conkyForecast -d DW -s 1 -w}${goto 89}${execi 1800 conkyForecast -d DW -s 2 -w}${goto 143}${execi 1800 conkyForecast -d DW -s 3 -w}${goto 197}${execi 1800 conkyForecast -d DW -s 4 -w}${font}
    ${voffset 2}${goto 25}${font ConkyWeather:size=32}${color3}${execi 1800 conkyForecast -d WF -s 1 -e 4 -S 1}${font}
    ${voffset 0}${goto 25}${font DroidSans:bold:size=8.5}${color4}${execi 1800 conkyForecast -d HT -s 1 -ui}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 1 -ui}${goto 79}${execi 1800 conkyForecast -d HT -s 2 -ui}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 2 -ui}${goto 133}${execi 1800 conkyForecast -d HT -s 3 -ui}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 3 -ui}${goto 187}${execi 1800 conkyForecast -d HT -s 4 -ui}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 4 -ui}${font}
    ##################################
    ##      WEATHER (Metric)        ##
    ##################################
    # ${voffset 6}${font DroidSans:bold:size=8}${color4}WEATHER${offset 8}${color8}${voffset -2}${hr 2}${font}
    # ${voffset 0}${goto 59}${font Weather:size=38}${color2}y${font}${voffset -33}${offset 14}${font RadioSpace:size=32}${color3}${execi 1800 conkyForecast -d HT}${font}
    # ${voffset 0}${font Ubuntu:size=24}${color4}${alignc}${execi 1800 conkyForecast -d CT}${font}
    # ${voffset 10}${goto 20}${font ConkyWindNESW:size=41}${color3}${execi 1800 conkyForecast -d BS}${font}${voffset -40}${goto 98}${font ConkyWeather:size=45}${execi 1800 conkyForecast -d WF}${font}${voffset -39}${goto 188}${font MoonPhases:size=32}${execi 1800 conkyForecast -d MF}${font}
    # ${voffset 6}${goto 30}${font DroidSansFallback:bold:size=8.45}${color4}${execpi 1800 conkyForecast -d WS | sed -e 's/calm'/'\$\{offset 2}Calm/g' -e 's/kph'/'\$\{offset 3}kph/g'}${goto 88}Feels like ${execi 1800 conkyForecast -d LT -u}${execpi 1800 conkyForecast -d MP| sed -e 's/First.*'/'\$\{goto 182}First Qtr/g' -e 's/Last.*'/'\$\{goto 184}Last Qtr/g' -e 's/New.*'/'\$\{goto 195}New/g' -e 's/Full.*'/'\$\{goto 195}Full/g' -e 's/Waning.*'/'\$\{goto 187}Waning/g' -e 's/Waxing.*'/'\$\{goto 187}Waxing/g'}${font}
    # ${voffset 9}${goto 36}${font DroidSansMono:bold:size=8.35}${color3}${execi 1800 conkyForecast -d DW -s 1 -w}${goto 89}${execi 1800 conkyForecast -d DW -s 2 -w}${goto 143}${execi 1800 conkyForecast -d DW -s 3 -w}${goto 197}${execi 1800 conkyForecast -d DW -s 4 -w}${font}
    # ${voffset 2}${goto 25}${font ConkyWeather:size=32}${color3}${execi 1800 conkyForecast -d WF -s 1 -e 4 -S 1}${font}
    # ${voffset 0}${goto 25}${font DroidSans:bold:size=8.5}${color4}${execi 1800 conkyForecast -d HT -s 1 -u}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 1 -u}${goto 79}${execi 1800 conkyForecast -d HT -s 2 -u}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 2 -u}${goto 133}${execi 1800 conkyForecast -d HT -s 3 -u}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 3 -u}${goto 187}${execi 1800 conkyForecast -d HT -s 4 -u}${offset 2}/${offset 2}${execi 1800 conkyForecast -d LT -s 4 -u}${font}
    ##################################
    ##             TIME             ##
    ##################################
    ${voffset 6}${font DroidSans:bold:size=8}${color4}TIME${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset -4}${font RadioSpace:size=32}${color3}${if_match ${time %l}<=9}${alignc 7}${time %l:%M%p}${else}${if_match ${time %l}>=10}${alignc -1}${time %l:%M%p}${endif}${endif}${font}
    ${voffset 0}${font DroidSansFallback:bold:size=6.85}${color4}${alignc 2}Sunrise${offset 1}${execi 1800 conkyForecast -d SR}${color3}${offset 2}|${offset 2}${color4}Sunset${offset 1}${execi 1800 conkyForecast -d SS}${font}
    ##################################
    ##           CALENDAR           ##
    ##################################
    ${voffset 4}${font DroidSans:bold:size=8}${color4}DATE${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 16}${font DroidSansMono:size=7.55}${color3}${alignc 60}${time %A}${font}
    ${voffset -4}${if_match ${time %e}<=9}${font DroidSansFallback:bold:size=18}${color5}${alignc 65}${time %e}${font}${else}${if_match ${time %e}>=10}${font DroidSansFallback:bold:size=18}${color5}${alignc 60}${time %e}${endif}${endif}${font}
    ${voffset 0}${font DroidSansMono:size=7.55}${color3}${alignc 60}${time %B}${font}
    ${voffset 0}${font DroidSansMono:size=7.6}${color3}${alignc 60}${time %Y}${font}
    ####
    ## Uncomment for Conky 1.8.0
    ${voffset -75}${font DroidSansMono:size=10}${color3}${execpi 60 VinDSL_Cal_8=`date +%-d`; cal -h | sed -e '1d' -e s/^/"\$\{offset 100"\}/ -e 's/\<'"$VinDSL_Cal_8"'\>/${color4}&${color3}/'}${font}
    ####
    ## Uncomment for Conky 1.8.1
    #  ${voffset -75}${offset 100}${font DroidSansMono:size=7.55}${color3}${execpi 60 VinDSL_Cal_8=`date +%-d`; cal -h | sed -e '1d' -e 's/\<'"$VinDSL_Cal_8"'\>/${color4}&${color3}/'}${font}
    ${voffset -99}${font CutOutsFor3DFX:size=67}${color8}${alignc 99}2${font}
    ##################################
    ##          RHYTHMBOX           ##
    ##################################
    ${if_running rhythmbox}${voffset 21}${font DroidSans:bold:size=7.75}${color4}RHYTHMBOX${offset 8}${color8}${voffset -2}${hr 2}${endif}${font}
    ${if_running rhythmbox}${voffset 10}${font DroidSans:size=8.25}${color3}${if_match "${execpi 2 expr length "`/usr/bin/rhythmbox-client --print-playing-format %tt | head -n 1`"}" >= "45"}${alignr}${scroll 38 4* ${execi 2 rhythmbox-client --print-playing-format %tt --no-start}}${font}${else}${alignc}${execi 2 rhythmbox-client --print-playing-format %tt --no-start}${endif}${endif}${font}
    ##################################
    ##    BANSHEE (Experimental)    ##
    ##################################
    ${if_running banshee}${voffset -5}${font DroidSans:bold:size=7.75}${color4}BANSHEE${offset 8}${color8}${voffset -2}${hr 2}${voffset 31}${endif}${font}
    ${if_running banshee}${voffset -24}${font DroidSans:size=8.25}${color3}${if_match "${execpi 10 expr length "`/usr/bin/banshee --query-title --no-present | cut -f1- -d " "`"}" >= "50"}${alignr}${scroll 45 4* ${execi 10 banshee --query-title --no-present | cut -f2- -d " "}}${font}${else}${alignc}${execi 10 banshee --query-title --no-present | cut -f2- -d " "}${endif}${endif}${font}
    Code:
    ----------------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.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=80,y=161,
    			blocks=55,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
    			},
    		{	--[ Graph for CPU2 ]--
    			name="cpu",
    			arg="cpu2",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=80,y=175,
    			blocks=55,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
    			},
                    {	--[ Graph for CPU3 ]--
    			name="cpu",
    			arg="cpu3",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=80,y=190,
    			blocks=55,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
                            },
                    {	--[ Graph for CPU4 ]--
    			name="cpu",
    			arg="cpu4",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=80,y=204,
    			blocks=55,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
                            },
    		{	--[ Graph for Memory ]--
    			name="memperc",
    			arg="",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=15,y=266,
    			blocks=77,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
    			},
    		{	--[ Graph for Root ]--
                            name="fs_used_perc",
    			arg="/",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=15,y=312,
    			blocks=77,
    			space=1,
    			height=2,width=5,
    			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.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=15,y=338,
    			blocks=77,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
    			},	
    	        {	--[ Graph for Swap ]--
                            name="swapperc",
    			arg="",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=15,y=367,
    			blocks=77,
    			space=1,
    			height=2,width=5,
    			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
    Code:
    -------------START OF PARAMETERS ------------
    -- Change these settings to affect your background:
    
    -- "corner_r" is the radius, in pixels, of the rounded corners. If you don't want rounded corners, use 0.
    
    	local corner_r = 50
    
    -- Set the colour and transparency (alpha) of your background (0.00 - 0.99).
    
    --	(Light Shading Example)
    --	local bg_colour = 0x4d4d4d
    --	local bg_alpha = 0.50
    
    --	(Medium Shading Example)
    --	local bg_colour = 0x222222
    --	local bg_alpha = 0.50
    
    --	(Dark Shading Example)
    --	local bg_colour = 0x000000
    --	local bg_alpha = 0.50
    
    	local bg_colour = 0x222222
    	local bg_alpha = 0.20
    
    -- Tweaks the height of your background, in pixels. If you don't need to adjust the height, use 0.
    
    --	(Default Setting)
    --	local vindsl_hack_height = 0
    
    	local vindsl_hack_height = -228
    ---------------END OF PARAMETERS -------------
    
    require 'cairo'
    local	cs, cr = nil
    
    local function rgb_to_r_g_b(colour,alpha)
    	return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    	end
    
    function conky_draw_bg()
    	if conky_window == nil then return end
    	if cs == nil then cairo_surface_destroy(cs) end
    	if cr == nil then cairo_destroy(cr) end
    	local w = conky_window.width
    	local h = conky_window.height
    	local v = vindsl_hack_height
    	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)
    	
    	cairo_move_to(cr,corner_r,0)
    	cairo_line_to(cr,w-corner_r,0)
    	cairo_curve_to(cr,w,0,w,0,w,corner_r)
    	cairo_line_to(cr,w,h+v-corner_r)
    	cairo_curve_to(cr,w,h+v,w,h+v,w-corner_r,h+v)
    	cairo_line_to(cr,corner_r,h+v)
    	cairo_curve_to(cr,0,h+v,0,h+v,0,h+v-corner_r)
    	cairo_line_to(cr,0,corner_r)
    	cairo_curve_to(cr,0,0,0,0,corner_r,0)
    	cairo_close_path(cr)
    
    	cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha))
    	cairo_fill(cr)
    
    	cairo_surface_destroy(cs)
    	cairo_destroy(cr)
    	end
    The 2 is suppose to be a box wrapped around the text it is covering. Also there is suppose to be a thermometor beside the temp, but it was a y and I removed it. Thanks to everyone any help is greatly appreciated. I could not get the screen shot to upload or attach.

  4. #17284
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    @Arminius
    well, going back to your post on the last page it looks like one of the scripts has "main_graph" as the name of the function called in the conkyrc

    so one would be

    lua_draw_hook_pre main_graph

    post the 2 lua scripts that you are wanting to use and i'll be able to tell you what exactly you need to put in those lines

  5. #17285
    Join Date
    Apr 2007
    Beans
    195

    Re: Post your .conkyrc files w/ screenshots

    Just a note. I survived the upgrade to the Narwhal. I saved all of my data, but I forgot to backup my bookmarks. I'm "Up and Running" so to speak, but I'm still waiting on some files to transfer back to their old places before I can do the full restoration.

    And... I have to rebuild my bookmarks... I have a photographic memory so we'll see how much of it is stored there. I really do feel like an idiot right now. I'm still going on hiatus, with one exception. I will get Conky running as soon as possible and give you all a screenshot of Xubuntu Narwhal with Conky running.

  6. #17286
    Join Date
    Feb 2009
    Beans
    433

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by mrpeachy View Post
    @Arminius
    well, going back to your post on the last page it looks like one of the scripts has "main_graph" as the name of the function called in the conkyrc

    so one would be

    lua_draw_hook_pre main_graph

    post the 2 lua scripts that you are wanting to use and i'll be able to tell you what exactly you need to put in those lines
    ok here's the entire conky again.
    Code:
    ##################################
    ## VinDSL | rev. 11-02-17 01:46 ##
    ##################################
    ##   Screen res: 1280x1024x24   ##
    ##################################
    
    ####
    ## Prerequisites (required).
    ## conky-all 1.8.0 or 1.8.1
    ## conkyForecast 2.16
    ## weather.com XML Data Feed (XOAP)
    #
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont DroidSans:size=8.75
    xftalpha 0.1
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Daemonize Conky, aka 'fork to background'.
    #
    background yes
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1.5
    
    ####
    ## This is the number of times Conky will update before quitting.
    ## Set to zero to run forever.
    #
    total_run_times 0
    
    ####
    ## Create own window instead of using desktop (required in nautilus)?
    #
    own_window yes
    own_window_type override
    own_window_transparent yes
    
    ####
    ## Force images to redraw when they change.
    #
    imlib_cache_size 0
    
    ####
    ## Use double buffering? Reduces flicker.
    #
    double_buffer yes
    
    ####
    ## Draw shades?
    #
    draw_shades no
    
    ####
    ## Draw outlines?
    #
    draw_outline no
    
    ####
    ## Draw borders around text?
    #
    draw_borders no
    
    ####
    ## Draw borders around graphs?
    #
    draw_graph_borders yes
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment bottom_left
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 330 798
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 8
    gap_y -80
    
    ####
    ## Shorten MiB/GiB to M/G in stats.
    #
    short_units yes
    
    ####
    ## Pad % symbol spacing after numbers.
    #
    pad_percents 0
    
    ####
    ## Pad spacing between text and borders.
    #
    border_inner_margin 4
    
    ####
    ## Limit the length of names in "Top Processes".
    #
    top_name_width 10
    
    ####
    ## Subtract file system -/+buffers/cache from used memory?
    ## Set to yes, to produce meaningful physical memory stats.
    #
    no_buffers yes
    
    ####
    ## Set to yes, if you want all text to be in UPPERCASE.
    #
    uppercase no
    
    ####
    ## Number of cpu samples to average.
    ## Set to 1 to disable averaging.
    #
    cpu_avg_samples 2
    
    ####
    ## Number of net samples to average.
    ## Set to 1 to disable averaging.
    #
    net_avg_samples 2
    
    ####
    ## Add spaces to keep things from moving around?
    ## Only affects certain objects.
    #
    use_spacer right
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    
    # -- Lua Load -- #
    # SET THE PATH TO THE SCRIPT HERE
    #LEAVE AT LEAST ONE LINE, BLANK OR NOT AFTER TEXT
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre_main_function
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post_main_function
    
    TEXT
    ##################
    ##  PROCESSORS  ##
    ##################
    ${voffset -9}${font DroidSans:bold:size=8}${color4}PROCESSORS${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${font DroidSans:size=8.65}${color royal blue}${offset 5}Intel Core 2 Duo${alignr}${font DroidSans:size=8.3}${freq_g cpu0}${offset 1}GHz${font}
    ${font DroidSansFallback:size=8.39}${offset 2}${freq}MHz   Load: ${loadavg}
    ${font DroidSansFallback:size=8.39}${offset 2}CPU1${offset 5}${font DroidSans:size=8.3}${alignr}${cpu cpu1}%${font}
    ${font DroidSansFallback:size=8.39}${offset 2}CPU2${offset 5}${font DroidSans:size=8.3}${alignr}${cpu cpu2}%${font}
    ${voffset -4}${cpugraph cpu1 555753 FF5721}
    ${voffset -14}${cpugraph cpu2 555753 EE9572}
    ${voffset -7}NAME${alignr 9}PID     CPU%   MEM%
    ${top name 1}${alignr 9}${top pid 1}   ${top cpu 1}    ${top mem 1}
    ${top name 2}${alignr 9}${top pid 2}   ${top cpu 2}    ${top mem 2}
    ${top name 3}${alignr 9}${top pid 3}   ${top cpu 3}    ${top mem 3}
    ${top name 4}${alignr 9}${top pid 4}   ${top cpu 4}    ${top mem 4}
    processorhisto.lua
    Code:
    --[[ GRAPH widget v1.1 by wlourf (07.01.2011)
        this widget draws some graphs with some effects 
        http://u-scripts.blogspot.com/2010/10/graph-widget.html
        
    To call the script in a conky, use, before TEXT
        lua_load /path/to/the/script/graph.lua
        lua_draw_hook_pre main_graph
    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 cpu1}, just write arg="cpu1"
                    arg can be a numerical value if name=""
    max            - the maximum value the above variable can reach,
                  for example for {$cpu cpu1}, just write max=100 or less or more
        
    Optional parameters:
    x,y         - coordinates of the bottom-left corner of the graph,
                  relative to the top-left corner of the conky window 
                  default =  bottom-left corner of the conky window
    width       - width of the graph, default = 100 pixels
    height      - height of the graph, default = 20 pixels
    nb_values   - number of values to display in the graph, default=width 
                  i.e. 1 pixel for 1 value
    autoscale   - if set to true, calculate the max valeu of the y axis and
                  doesn't use the max parameter above, default=false
    skew_x      - skew graph around x axis, défaut = 0
    skew_y      - skew graph around y axis, défaut = 0
    angle        - angle of rotation of the graph in degress, default = 0
                  i.e. a horizontal graph)
    inverse     - if set to true, graph are draw from right to left, default=false
    background  - if set to false, background is not drawn, default=true
    foreground  - if set to false, foreground is not drawn, default=true
                  foreground = plain graph
    bg_bd_size  - size of the border of the background, default=0=no border
    fg_bd_size  - size of the border of the foreground, default=0=no border
    
    
    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_colour    - colour table for background,
                  default = {{0,0x000000,.5},{1,0xFFFFFF,.5}}
    fg_colour    - colour table for foreground,
                  default = {{0,0x00FFFF,1},{1,0x0000FF,1}}
    bg_bd_colour- colour table for background border,
                  default = {{1,0xFFFFFF,1}}              
    fg_bd_colour- colour table for foreground border,
                  default = {{1,0xFFFF00,1}}              
    
    bg_orientation, bg_bd_orientation, fg_orientation, fg_bd_orientation,
                - "orientation" defines the starting point of the gradient,
                  default="nn"
                  there are 8 available starting points : 
                  "nw","nn","ne","ee","se","ss","sw","ww"
                  (n for north, w for west ...)
                  theses 8 points are the 4 corners + the 4 middles of graph
                  so a gradient "nn" will go from "nn" to "ss"
                  a gradient "nw" will go from "nw" to "se"
    
    draw_me     - if set to false, graph is not drawn (default = true)
                  it can be used with a conky string, if the string returns 1, the graph is drawn :
                  example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",
                  
    v1.0 (31/10/2010) original release
    v1.1 (07/01/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 set_settings()
        graph_settings={
         {--horizontal Downloads shortterm graph
         name="cpu",
         arg="cpu1",
         max=190,
         x=0,
         y=150,
         width=350,
         height=35,
         nb_values=60,
         autoscale=true,
         bg_bd_size=0,
         fg_bd_size=0,
         bg_colour = { {0,0x00000,1},
                 {0.5,0x008531,1},
                 {1,0x00000,1}},
    
         fg_colour = { {0,0x000000,1},
             {0.5,0xFF0000,0.5},
             {1,0x000000,1}},
    
         },
    
    	{--horizontal uploads shortterm graph
         name="cpu",
         arg="cpu2",
         max=200,
         x=0,
         y=179,
         width=350,
         height=35,
         nb_values=60,
         autoscale=true,
         bg_bd_size=0,
         fg_bd_size=0,
         bg_colour = { {0,0x00000,1},
                 {0.5,0x008531,1},
                 {1,0x00000,1}},
    
         fg_colour = { {0,0x000000,1},
             {0.5,0x0147FA,0.5},
             {1,0x000000,1}},
    
         },
    	                                                                                                  
           }
    end
    
    
    function check_settings(t)
        --tables are check only when conky start
        if t.name==nil and t.arg==nil then 
            print ("No input values ... use parameters 'name'" .. 
                " with 'arg' or only parameter 'arg' ") 
            return 1
        end
    
        if t.max==nil then
            print ("No maximum value defined, use 'max'")
            print ("for name=" .. t.name .. " with arg=" .. t.arg)
            return 1
        end
        if t.name==nil then t.name="" end
        if t.arg==nil then t.arg="" end
        return 0
    end
    
    function conky_main_graph()
    
        if conky_window == nil then return end
            
        local w=conky_window.width
        local h=conky_window.height
        local cs=cairo_xlib_surface_create(conky_window.display, 
                conky_window.drawable, conky_window.visual, w, h)
        cr=cairo_create(cs)
    
        updates=tonumber(conky_parse('${updates}'))
        --start drawing after "updates_gap" updates
        --prevent segmentation error for cpu
        updates_gap=5
        if updates==1 then    
            set_settings()
            
            flagOK=0
            for i in pairs(graph_settings) do
                if graph_settings[i].width==nil then graph_settings[i].width=100 end
                if graph_settings[i].nb_values==nil then  
                    graph_settings[i].nb_values= graph_settings[i].width
                end
                --create an empty table to store values
                graph_settings[i]["values"]={}
                --beginning point
                graph_settings[i].beg = graph_settings[i].nb_values
                --graph_settings[i].beg = 0
                for j =1, graph_settings[i].nb_values do
                    graph_settings[i].values[j]=0
                end
                graph_settings[i].flag_init=true
                flagOK=flagOK + check_settings(graph_settings[i])
    
            end
        end
    
        if flagOK>0 then 
            --abort script if error in one of the tables
            print ("ERROR : Check the graph_setting table")
            return
        end
    
        --drawing process
        if updates > updates_gap then
            for i in pairs(graph_settings) do
                if graph_settings[i].draw_me==true then graph_settings[i].draw_me = nil end
                if (graph_settings[i].draw_me==nil or conky_parse(tostring(graph_settings[i].draw_me)) == "1") then 
                    local nb_values=graph_settings[i].nb_values
                    graph_settings[i].automax=0
                    for j =1, nb_values do
                        if graph_settings[i].values[j+1]==nil then 
                            graph_settings[i].values[j+1]=0 
                        end
                    
                        graph_settings[i].values[j]=graph_settings[i].values[j+1]
                        if j==nb_values then
                            --store value
                            if graph_settings[i].name=="" then
                                value=graph_settings[i].arg
                            else
                                value=tonumber(conky_parse('${' .. 
                                    graph_settings[i].name .. " " ..
                                    graph_settings[i].arg ..'}'))
                            end
                            graph_settings[i].values[nb_values]=value
                        end
                        graph_settings[i].automax=math.max(graph_settings[i].automax,
                                                           graph_settings[i].values[j])
                        --should stop weird glitches at beginning when no values reported yet for upspeed or diskio
                        if graph_settings[i].automax == 0 then graph_settings[i].automax = 1 end 
                    end
                       draw_graph(graph_settings[i])
                end
            end
        end
    
        cairo_destroy(cr)
        cairo_surface_destroy(cs)
        updates=nil
        updates_gap=nil
    end
    
    
    function draw_graph(t)
        --drawing function
    
        local function rgb_to_r_g_b(colour)
            return ((colour[2] / 0x10000) % 0x100) / 255., ((colour[2] / 0x100) % 0x100) / 255., (colour[2] % 0x100) / 255., colour[3]
        end
     
        local function linear_orientation(o,w,h)
            --set gradient for bg and bg border
            local p
            if o=="nn" then
                p={w/2,h,w/2,0}
            elseif o=="ne" then
                p={w,h,0,0}
            elseif o=="ww" then
                p={0,h/2,w,h/2}
            elseif o=="se" then
                p={w,0,0,h}
            elseif o=="ss" then
                p={w/2,0,w/2,h}
            elseif o=="ee" then
                p={w,h/2,0,h/2}        
            elseif o=="sw" then
                p={0,0,w,h}
            elseif o=="nw" then
                p={0,h,w,0}
            end
            return p
        end
    
        local function linear_orientation_inv(o,w,h)
            --set gradient for fg and fg border
            local p
            if o=="ss" then
                p={w/2,h,w/2,0}
            elseif o=="sw" then
                p={w,h,0,0}
            elseif o=="ee" then
                p={0,h/2,w,h/2}
            elseif o=="nw" then
                p={w,0,0,h}
            elseif o=="nn" then
                p={w/2,0,w/2,h}
            elseif o=="ww" then
                p={w,h/2,0,h/2}        
            elseif o=="ne" then
                p={0,0,w,h}
            elseif o=="se" then
                p={0,h,w,0}
            end
            return p
        end
    
    
        --set default values
        
        --cancel drawing if not needed
        if t.draw_me~=nil and conky_parse(tostring(t.draw_me)) ~= "1" then 
            return
        end
        
    
        
        if t.height==nil    then t.height=20 end
        --checked in previous part : width and nb_values
            
        if t.background==nil    then t.background=true end
        if t.bg_bd_size==nil    then t.bg_bd_size=0 end
        if t.x==nil             then t.x=t.bg_bd_size end
        if t.y==nil             then t.y=conky_window.height -t.bg_bd_size end
        if t.bg_colour==nil     then t.bg_colour={{0,0x000000,.5},{1,0xFFFFFF,.5}} end
        if t.bg_bd_colour==nil     then t.bg_bd_colour={{1,0xFFFFFF,1}} end
        
        if t.foreground==nil    then t.foreground=true end
        if t.fg_colour==nil     then t.fg_colour={{0,0x00FFFF,1},{1,0x0000FF,1}} end
        
        if t.fg_bd_size==nil    then t.fg_bd_size=0 end    
        if t.fg_bd_colour==nil  then t.fg_bd_colour={{1,0xFFFF00,1}} end
        
        if t.autoscale==nil     then t.autoscale=false end
        if t.inverse==nil       then t.inverse=false end
        if t.angle==nil         then t.angle=0 end
        
        if t.bg_bd_orientation==nil then t.bg_bd_orientation="nn" end
        if t.bg_orientation==nil then t.bg_orientation="nn" end
        if t.fg_bd_orientation==nil then t.fg_bd_orientation="nn" end
        if t.fg_orientation==nil then t.fg_orientation="nn" end
    
        --check colours tables
        for i=1, #t.fg_colour do    
            if #t.fg_colour[i]~=3 then 
                print ("error in fg_colour table")
                t.fg_colour[i]={1,0x0000FF,1} 
            end
        end
        
        for i=1, #t.fg_bd_colour do    
            if #t.fg_bd_colour[i]~=3 then 
                print ("error in fg_bd_colour table")
                t.fg_bd_colour[i]={1,0x00FF00,1} 
            end
        end
        
        for i=1, #t.bg_colour do    
            if #t.bg_colour[i]~=3 then 
                print ("error in background color table")
                t.bg_colour[i]={1,0xFFFFFF,0.5} 
            end
        end    
    
        for i=1, #t.bg_bd_colour do    
            if #t.bg_bd_colour[i]~=3 then 
                print ("error in background border color table")
                t.bg_bd_colour[i]={1,0xFFFFFF,1} 
            end
        end    
    
        --calculate skew parameters if needed
        if t.flag_init then
            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
            t.flag_init=false
        end
    
        cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
        cairo_set_line_join(cr,CAIRO_LINE_JOIN_ROUND)
    
        local matrix0 = cairo_matrix_t:create()
        tolua.takeownership(matrix0)
        cairo_save(cr)
        cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)
        cairo_transform(cr,matrix0)
        
           local ratio=t.width/t.nb_values
    
        cairo_translate(cr,t.x,t.y)
        cairo_rotate(cr,t.angle*math.pi/180)
        cairo_scale(cr,1,-1)
    
        --background
        if t.background then
            local pts=linear_orientation(t.bg_orientation,t.width,t.height)
            local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4])
            for i=1, #t.bg_colour do
                --print ("i",i,t.colour[i][1], rgb_to_r_g_b(t.colour[i]))
                cairo_pattern_add_color_stop_rgba (pat, t.bg_colour[i][1], rgb_to_r_g_b(t.bg_colour[i]))
            end
            cairo_set_source (cr, pat)
            cairo_rectangle(cr,0,0,t.width,t.height)    
            cairo_fill(cr)    
            cairo_pattern_destroy(pat)
        end
        
        --autoscale
        cairo_save(cr)
        if t.autoscale then
            t.max= t.automax*1.1
        end
        
        local scale_x = t.width/(t.nb_values-1)
        local scale_y = t.height/t.max
        
        --define first point of the graph
        if updates-updates_gap <t.nb_values then 
            t.beg = t.beg - 1
            --next line prevent segmentation error when conky window is redraw 
            --quicly when another window "fly" over it
            if t.beg<0 then t.beg=0 end
        else
            t.beg=0
        end
        if t.inverse then cairo_scale(cr,-1,1)
        cairo_translate(cr,-t.width,0) end
    
        --graph foreground
        if t.foreground then
            local pts_fg=linear_orientation_inv(t.fg_orientation,t.width,t.height)
            local pat = cairo_pattern_create_linear (pts_fg[1],pts_fg[2],pts_fg[3],pts_fg[4])
            for i=1,#t.fg_colour,1 do
                cairo_pattern_add_color_stop_rgba (pat, 1-t.fg_colour[i][1], rgb_to_r_g_b(t.fg_colour[i]))
            end
            cairo_set_source (cr, pat)
    
            cairo_move_to(cr,t.beg*scale_x,0)
            cairo_line_to(cr,t.beg*scale_x,t.values[t.beg+1]*scale_y)
            for i=t.beg, t.nb_values-1 do
                cairo_line_to(cr,i*scale_x,t.values[i+1]*scale_y)        
            end
            cairo_line_to(cr,(t.nb_values-1)*scale_x,0)
            cairo_close_path(cr)
            cairo_fill(cr)
            cairo_pattern_destroy(pat)
        end
    
        --graph_border
        if t.fg_bd_size>0 then
            local pts=linear_orientation_inv(t.fg_bd_orientation,t.width,t.height)
            local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4])
            for i=1,#t.fg_bd_colour,1 do
                cairo_pattern_add_color_stop_rgba (pat, 1-t.fg_bd_colour[i][1], rgb_to_r_g_b(t.fg_bd_colour[i]))
            end
            cairo_set_source (cr, pat)
            cairo_move_to(cr,t.beg*scale_x,t.values[t.beg+1]*scale_y)
            for i=t.beg, t.nb_values-1 do
                cairo_line_to(cr,i*scale_x,t.values[i+1]*scale_y)        
            end
            cairo_set_line_width(cr,t.fg_bd_size)
            cairo_stroke(cr)
            cairo_pattern_destroy(pat)
        end
        cairo_restore(cr)
    
        --background border
        if t.bg_bd_size>0 then
            local pts=linear_orientation(t.bg_bd_orientation,t.width,t.height)
            local pat = cairo_pattern_create_linear (pts[1],pts[2],pts[3],pts[4])
            for i=1, #t.bg_bd_colour do
                --print ("i",i,t.colour[i][1], rgb_to_r_g_b(t.colour[i]))
                cairo_pattern_add_color_stop_rgba (pat, t.bg_bd_colour[i][1], rgb_to_r_g_b(t.bg_bd_colour[i]))
            end
            cairo_set_source (cr, pat)
            cairo_rectangle(cr,0,0,t.width,t.height)    
            cairo_set_line_width(cr,t.bg_bd_size)
            cairo_stroke(cr)
            cairo_pattern_destroy(pat)    
        end    
    
        cairo_restore(cr)
    
    end
    bargraph_Processors.lua
    Code:
    --[[
    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 /path/to/the/script/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.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=39,y=44,
    			blocks=138,
    			space=0,
    			height=2,width=7,
    			angle=90,
    			smooth=true
    			},
    		{	--[ Graph for CPU2 ]--
    			name="cpu",
    			arg="cpu2",
    			max=100,
    			alarm=50,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0x00FF00,0.55},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=39,y=60,
    			blocks=138,
    			space=0,
    			height=2,width=7,
    			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
    I know some of the comments are wrong I've recently swapped the code over from a internet traffic .lua, I'll change all that later.

  7. #17287
    Join Date
    Feb 2009
    Beans
    122

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by 42dorian View Post
    Yes. You need a very similar bit of code in your lua scripts too. You need to put an if statement encompassing the setup of each bar that chooses which desktop it's on. I believe it's something to this effect, though mrpeachy will probably cringe at my use in this method.

    Code:
    checkdesktop=tonumber(conky_parse(${if_match ${desktop}==1}1${else}0${endif}))
    if checkdesktop==1 then
    <put the section for this bar in.>
    end
    I'm not good at lua code writing, not sure where to put 42dorian's code. Can someone help me ? Here is the bar graph code I'm using.

    Code:
    --[[ 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 /path/to/the/script/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 colurs 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, parallelel, 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 avaimable 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
    					  calues 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={
    		{
    			name="exec",
    			arg="~/.Conky/link.sh",
    			max=5,
    			alarm=50,
    			angle_bar=10,
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0xFF0000,0.9},
    			alarm_colour={0x00FF00,0.9},
    			x=40,y=25,
    			blocks=40,
    			space=1,
    			height=2,width=4,
    			angle=90,
    			smooth=true,
    			mid_colour={{0.5,0xFFFF00,0.9}}	
    			},
    		{
    			name="exec",
    			arg="~/.Conky/noise.sh",
    			max=100,
    			alarm=50,
    			angle_bar=10,
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0xFF0000,0.9},
    			alarm_colour={0x00FF00,0.9},
    			x=40,y=55,
    			blocks=40,
    			space=1,
    			height=2,width=4,
    			angle=90,
    			smooth=true,
    			mid_colour={{0.5,0xFFFF00,0.9}}	
    			},
    		{
    			name="exec",
    			arg="~/.Conky/signal.sh",
    			max=70,
    			alarm=50,
    			angle_bar=10,
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0xFF0000,0.9},
    			alarm_colour={0x00FF00,0.9},
    			x=40,y=85,
    			blocks=40,
    			space=1,
    			height=2,width=4,
    			angle=90,
    			smooth=true,
    			mid_colour={{0.5,0xFFFF00,0.9}}	
    			},
    		}
    	
    -----------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

  8. #17288
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by Arminius View Post
    ok here's the entire conky again.

    processorhisto.lua
    Code:
    --[[ GRAPH widget v1.1 by wlourf (07.01.2011)
        this widget draws some graphs with some effects 
        http://u-scripts.blogspot.com/2010/10/graph-widget.html
        
    To call the script in a conky, use, before TEXT
        lua_load /path/to/the/script/graph.lua
        lua_draw_hook_pre main_graph
    and add one line (blank or not) after TEXT
    bargraph_Processors.lua
    Code:
    --[[
    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 /path/to/the/script/bargraph.lua
        lua_draw_hook_pre main_rings
    and add one line (blank or not) after TEXT
    I know some of the comments are wrong I've recently swapped the code over from a internet traffic .lua, I'll change all that later.
    ok so from the top of the lua scripts, wlourf has kindly given the info you need, how to call the script and which function to call specifically

    so you need

    Code:
    # -- Lua Load -- #
    # SET THE PATH TO THE SCRIPT HERE
    #LEAVE AT LEAST ONE LINE, BLANK OR NOT AFTER TEXT
    lua_load ~/.conky/Graphs/processorhisto.lua
    lua_draw_hook_pre main_graph
    lua_load ~/.conky/Graphs/bargraph_Processors.lua
    lua_draw_hook_post main_rings

  9. #17289
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    @ akernan

    do you want the whole script to run on a given desktop and not on others?

    then here is the part to adjust

    Code:
    -----------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
    --check for correct desktop
    checkdesktop=tonumber(conky_parse("${if_match ${desktop}==1}1${else}0${endif}"))
    
        if tonumber(conky_parse('${updates}'))>3 and checkdesktop==1 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
    otherwise wlourf has a variable called draw_me which can be used to enable/disable a particular ring/bar/whatever you are drawing based on the outcome of a conky_parse command
    Last edited by mrpeachy; May 1st, 2011 at 06:19 PM.

  10. #17290
    Join Date
    Apr 2011
    Location
    Lynnwood, Wa
    Beans
    12
    Distro
    Ubuntu 11.04 Natty Narwhal

    Re: Post your .conkyrc files w/ screenshots

    OK..so...After spending most of the weekend beating my head against the keyboard, and stealing bits-and-pieces from all of your Conkys (looks great BTW!!!) I finally have mine all ready to go...I just have a few questions....

    1) on my weather, i stole the scripts and put my location in (and got the weather channel feeds setup....properly i hope) I have that (A) after everything temperature related. any fixs you guys can think of?

    2) The part up top where it shows my CPU freq as 1.6 GHz is not correct (Should be 2.8) the only code I can find is {freq} or {freq_g} and it pulls the wrong info (i am currently working on over clocking, so i can get a stable setup. the set clock is at 2.26, and the bus is 800, so i have no idea where its getting 1.6 from...)

    3) more of a curiosity, how do you get a semi-transparent backing on this? (VinDSL posted a pic not too far back that was perfect, but he didn't post his scripts so i have no info to go on...)

    note - I have only a rudimentary understanding of coding (hence the thieving!) I understand the changing of values and all that but not too much on santax (self admitted n00b...)
    Attached Images Attached Images

Page 1729 of 2348 FirstFirst ... 7291229162916791719172717281729173017311739177918292229 ... LastLast

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •