Page 1662 of 2348 FirstFirst ... 6621162156216121652166016611662166316641672171217622162 ... LastLast
Results 16,611 to 16,620 of 23480

Thread: Post your .conkyrc files w/ screenshots

  1. #16611
    Join Date
    Feb 2009
    Beans
    433

    Re: Post your .conkyrc files w/ screenshots

    I've been working on an rss script for my conky.
    and it's mostly working, in the image attached u can see the output, problem is there's alot of junk like ezrss search results and !CDATA[

    here's the code

    simple-rss-reader-v3.pl
    Code:
    #!/usr/bin/perl -w
    
    ############################
    # Creator: Jeff Israel
    #
    # Script:	./simple-rss-reader-v3.pl
    # Version: 	3.001
    #
    # Coded for for Wikihowto http://howto.wikia.com
    #
    # Description: 	This code downloads an RSS feed, 
    # 		extracts the <title> lines,
    # 		cleans them up lines,
    # 		prints the pretty lines
    # 		exits on max-lines
    # Usage:
    # .conkyrc: ${execi [time] /path/to/script/simple-rss-reader-v3.pl}
    #
    # Usage Example
    # ${execi 300 /path/to/script/simple-rss-reader-v3.pl}
    #
    
    use LWP::Simple;
    
    
    ############################
    # Configs
    #
    
    #$rssPage = "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss";
    $rssPage = "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss";
    $numLines = 10;
    $maxTitleLenght = 35;
    
    ###########################
    # Code
    #
    
    # Downloading RSS feed
    my $pageCont = get($rssPage);
    
    # Spliting the page to lines
    @pageLines = split(/\n/,$pageCont);
    
    # Parse each line, strip no-fun data, exit on max-lines
    $numLines--; #correcting count for loop
    $x = 0;
    foreach $line (@pageLines) {
    	if($line =~ /\<title\>/){ # Is a good line?
    		#print "- $line\n";
    		$lineCat = $line;
    		$lineCat =~ s/.*\<title\>//;
    		$lineCat =~ s/\<\/title\>.*//;
    		$lineCat =~ s/\[.{4,25}\]$//; # strip no-fun data ( [from blaaa] )
    		$lineCat = substr($lineCat, 0, $maxTitleLenght);
    		print "- $lineCat \n";
    		$x++;
    	}
    	if($x > $numLines) {
    		last; #exit on max-lines
    	}
    	
    }
    
    #print $page;
    #print "\nBy Bye\n";
    being called forth by

    Code:
    ${execi 300 /home/me/scripts/simple-rss-reader-v3.pl}

    so any idea's on how to clean it up, just have the episode titles
    Attached Images Attached Images

  2. #16612
    Join Date
    Oct 2010
    Beans
    1

    Re: Post your .conkyrc files w/ screenshots

    This is my modification of the one from VinDSL

    .conkyrc
    Code:
    ##################################
    ## VinDSL | rev. 10-12-30 20:45 ##
    ##################################
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont LiberationSans:size=8.85
    xftalpha 0.7
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1.0
    
    ####
    ## 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_colour eeeeee
    own_window_type override
    own_window_transparent yes
    
    ###########################
    ##own_window yes
    ##own_window_colour eeeeee
    ##own_window_type override
    ##own_window_transparent yes
    ##own_window_argb_visual yes
    ###########################
    
    ####
    ## 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 no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment top_right
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 235 0
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 20
    gap_y 40
    
    ####
    ## 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
    
    draw_graph_borders yes
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 EE6600
    color5 Tan2
    color6 white
    color7 AntiqueWhite4
    color8 059EFA #DarkSlateGray
    color9 red
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    #
    lua_load ~/.conky/combined.lua
    lua_load ~/.conky/bargraph.lua
    lua_draw_hook_pre combined
    lua_draw_hook_post main_bars
    
    
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Liberation Mono (Ascender Corp)
    # Liberation Sans (Ascender Corp)
    # Moon Phases (Curtis Clark)
    # OpenLogos (Icoma)
    # PizzaDude Bullets (Jakob Fischer)
    # Radio Space (Iconian Fonts)
    # StyleBats (Vinterstille)
    # Ubuntu (Canonical Ltd)
    # Ubuntu Title Bold (Paulo Silva)
    # Weather (Jonathan Macagba)
    # WenQuanYi Micro Hei (Google Corp)
    
    TEXT
    ##################
    ##     LOGO     ##
    ##################
    #${voffset -33}${font OpenLogos:size=103}${color2}v${font}${voffset -76}${goto 178}${font UbuntuTitleBold:size=20}${color4}10.10${font}
    ##################
    ##    SYSTEM    ##
    ##################
    ${voffset 20}${font Ubuntu:bold:size=10}${color4}SYSTEM${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 5}${font StyleBats:size=10}${color2}k${voffset -4}${font}${color6}${offset 5}${sysname}${offset 5}${kernel}${alignr}${machine}
    ${voffset 2}${font StyleBats:size=10}${color2}2${voffset -1}${font}${color6}${offset 5}Hostname${alignr}${nodename}
    ${voffset 2}${font StyleBats:size=10}${color2}A${voffset -1}${font}${color6}${offset 5}AMD${offset 3}Phenom II X4 955${offset 3}Black${offset 3}Edition${alignr}${freq_g cpu0}${offset 1}GHz
    ${voffset 2}${font StyleBats:size=10}${color2}M${voffset -1}${font}${color6}${offset 5}RAM${alignr}${memmax}
    ${voffset 2}${font StyleBats:size=10}${color2}q${voffset -1}${font}${color6}${offset 5}Uptime${alignr}${uptime}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -1}${font}${color6}${offset 5}File${offset 3}System${alignr}${fs_type}
    ${voffset 2}${font StyleBats:size=10}${color2}b${voffset -1}${font}${color6}${offset 5}Updates${alignr}${execi 5 aptitude search "~U" | wc -l | tail}  
    ${font}
    ##################
    ##     CPU      ##
    ##################
    ${voffset 5}${font StyleBats:size=10}${color 0A86F2}A${voffset -2}${font}${offset 2}Core1${offset 5}${cpu cpu1}%${color}${color7}${alignr 2}${if_match ${cpu}<=50}${color green}${else}${if_match ${cpu}<=70}${color orange}${else}${if_match ${cpu}>70}${color red}${endif}${endif}${endif}
    ${voffset 2}${font StyleBats:size=10}${color 41C902}A${voffset -2}${font}${offset 2}Core2${offset 5}${cpu cpu2}%${color}${color7}${alignr 2}${if_match ${cpu}<=50}${color green}${else}${if_match ${cpu}<=70}${color orange}${else}${if_match ${cpu}>70}${color red}${endif}${endif}${endif}
    ${voffset 5}${font StyleBats:size=10}${color FF8800}A${voffset -2}${font}${offset 2}Core3${offset 5}${cpu cpu3}%${color}${color7}${alignr 2}${if_match ${cpu}<=50}${color green}${else}${if_match ${cpu}<=70}${color orange}${else}${if_match ${cpu}>70}${color red}${endif}${endif}${endif}
    ${voffset 2}${font StyleBats:size=10}${color FF3700}A${voffset -2}${font}${offset 2}Core4${offset 5}${cpu cpu4}%${color}${color7}${alignr 2}${if_match ${cpu}<=50}${color green}${else}${if_match ${cpu}<=70}${color orange}${else}${if_match ${cpu}>70}${color red}${endif}${endif}${endif}
    ${font}
    ${voffset 4}${font StyleBats:size=10}${color 8159F0}l${voffset -2}${font}${offset 3}RAM${offset 5}${memperc}%${color}
    ${font}
    ${voffset 4}${font StyleBats:size=10}${color 00FF00}x${voffset -2}${font}${offset 4}ROOT${color}
    ${fs_used /}${offset 3}/${offset 3}${fs_size /}${offset 5}${if_match ${fs_used_perc /}<=60}${color green}${else}${if_match ${fs_used_perc /}<=85}${color orange}${else}${if_match ${fs_used_perc /}>85}${color red}${endif}${endif}${endif}${fs_free_perc /}%
    
    ${voffset 1}${font StyleBats:size=10}${color 00CC00}x${voffset -2}${font}${offset 4}HOME${color}
    ${fs_used /home}${offset 3}/${offset 3}${fs_size /home}${offset 5}${if_match ${fs_used_perc /home}<=60}${color green}${else}${if_match ${fs_used_perc /home}<=85}${color orange}${else}${if_match ${fs_used_perc /home}>85}${color red}${endif}${endif}${endif}${fs_free_perc /home}%
    ##################
    # TOP PROCESSES ##
    ##################
    ${voffset 3}${font Ubuntu:bold:size=10}${color4}TOP PROCESSES${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color9}${offset 5}${top_mem name 1}${goto 115}${top_mem mem_res 1}${alignr}${top_mem mem 1}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 2}${goto 115}${top_mem mem_res 2}${alignr}${top_mem mem 2}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 3}${goto 115}${top_mem mem_res 3}${alignr}${top_mem mem 3}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 4}${goto 115}${top_mem mem_res 4}${alignr}${top_mem mem 4}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 5}${goto 115}${top_mem mem_res 5}${alignr}${top_mem mem 5}%
    Processes: ${alignr}${processes}
    Running: ${alignr}${running_processes}
    ##################
    ##   NETWORK    ##
    ##################
    ${voffset 6}${font Ubuntu:bold:size=10}${color4}NETWORK${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Private${offset 3}IP${alignr}${addrs wlan0}
    ${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Public${offset 7}IP${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
    
    Interface:${alignr}wlan0
    Signal Strength:${alignr}${wireless_link_qual_perc wlan0}%
    Bitrate:${alignr}${wireless_bitrate wlan0}
    Network:${alignr}${wireless_essid wlan0}
    Mode:${alignr}${wireless_mode wlan0}
    
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Down${alignr}${downspeed wlan0}
    ${downspeedgraph wlan0 20,262 ffffff ffffff 750 }
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Up${alignr}${upspeed wlan0}
    ${upspeedgraph wlan0 20,262 ffffff ffffff 750 }${font}
    ##################
    ##     TIME     ##
    ##################
    ${voffset 6}${font Ubuntu:bold:size=10}${color4}TIME${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 3}${voffset -4}${font Tahoma:size=32}${color3}${alignc 7}${time %k:%M}${font}
    ##################
    ##   CALENDAR   ##
    ##################
    ${voffset 6}${font Ubuntu:bold:size=10}${color4}DATE${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 18}${font LiberationMono:size=8}${color3}${alignc 77}${time %A}${font}
    ${voffset -3}${font LiberationMono:size=22}${color4}${alignc 77}${time %d}${font}
    ${voffset -1}${font LiberationMono:size=8}${color3}${alignc 77}${time %B}${font}
    ${voffset -3}${font LiberationMono:size=8}${color3}${alignc 77}${time %Y}${font}
    ${voffset -79}${font CutOutsFor3DFX:size=64}${color3}${alignc 115}2${font}
    ${voffset -69}${font LiberationMono:size=8}${color3}${execpi 1800 VinDSL_Cal_4= cal | sed '1d' | sed s/^/"\$\{offset 97"\}/ | sed '/^ *$/d' | sed 's/\<'"$(date +%-d)"'\>/${color4}&${color3}/'}${font}
    combined.lua
    Code:
    --[[
    This script combines the background drawing lua script and the ring drawing lua script
    To call this script in Conky, use the following (assuming that you save this script to ~/scripts/combined.lua):
        lua_load ~/scripts/combined.lua
        lua_draw_hook_pre combined
    ]]
    --SETTINGS FOR BACKGROUND  #######################################################################
    -- 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.
        corner_r = 100
    
    -- Set the colour and transparency (alpha) of your background.
        bg_colour = 0x000000
        bg_alpha = 0.55
    
    -- Tweaks the height of your background, in pixels. If you don't need to adjust the height, use 0.
        vindsl_hack_height = -175
    --##################################################################################################
    --[[
    Ring Meters by londonali1010 (2009)
    
    This script draws percentage meters as rings. It is fully customisable; all options are described in the script.
    
    IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
    
    Changelog:
    + v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009)
    + v1.2 -- Added option for the ending angle of the rings (07.10.2009)
    + v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
    + v1.0 -- Original release (28.09.2009)
    ]]
    --SETTINGS FOR RING METER  #######################################################################
    settings_table = {
        {
            -- Edit this table to customise your rings.
            -- You can create more rings simply by adding more elements to settings_table.
            -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
            name='cpu',
            -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
            arg='cpu1',
            -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
            max=100,
            -- "bg_colour" is the colour of the base ring.
            bg_colour=0xffffff,
            -- "bg_alpha" is the alpha value of the base ring.
            bg_alpha=0.15,
            -- "fg_colour" is the colour of the indicator part of the ring.
            fg_colour=0x0A86F2,
            -- "fg_alpha" is the alpha value of the indicator part of the ring.
            fg_alpha=0.8,
            -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
            x=195, y=250,
            -- "radius" is the radius of the ring.
            radius=30,
            -- "thickness" is the thickness of the ring, centred around the radius.
            thickness=5,
            -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
            start_angle=0,
            -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.
            end_angle=360
        },
        {
            name='cpu',
            arg='cpu2',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x41C902,
            fg_alpha=0.8,
            x=195, y=250,
            radius=35,
            thickness=5,
            start_angle=0,
            end_angle=360
        },
        {
            name='cpu',
            arg='cpu3',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.15,
            fg_colour=0xFF8800,
            fg_alpha=0.8,
            x=195, y=250,
            radius=40,
            thickness=5,
            start_angle=0,
            end_angle=360
        },
        {
            name='cpu',
            arg='cpu3',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0xFF3700,
            fg_alpha=0.8,
            x=195, y=250,
            radius=45,
            thickness=5,
            start_angle=0,
            end_angle=360
        },
        {
            name='memperc',
            arg='',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x8159F0,
            fg_alpha=0.8,
            x=195, y=250,
            radius=63,
            thickness=12,
            start_angle=-45,
            end_angle=220
        },
        {
            name='fs_used_perc',
            arg='/',
            max=150,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x00FF00,
            fg_alpha=8,
            x=195, y=250,
            radius=60,
            thickness=5,
            start_angle=-135,
            end_angle=-50
        },
        {
            name='fs_used_perc',
            arg='/home',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0x00CC00,
            fg_alpha=8,
            x=195, y=250,
            radius=67,
            thickness=5,
            start_angle=-135,
            end_angle=-50
        },
    }
    
    require 'cairo'
    
    function rgb_to_r_g_b(colour,alpha)
       return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    end
    
    function draw_ring(cr,t,pt)
        local w,h=conky_window.width,conky_window.height
    
        local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
        local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
    
        local angle_0=sa*(2*math.pi/360)-math.pi/2
        local angle_f=ea*(2*math.pi/360)-math.pi/2
        local t_arc=t*(angle_f-angle_0)
    
        -- Draw background ring
    
        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
        cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
        cairo_set_line_width(cr,ring_w)
        cairo_stroke(cr)
    
        -- Draw indicator ring
    
        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
        cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
        cairo_stroke(cr)        
    end
    
    function conky_combined()
    --BACKGROUND DRAWING PART##################################################################################
        if conky_window == nil then return end
        if cs == nil then cairo_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_destroy(cr)
    
    --RINGMETER PART OF MAIN FUNCTION  ################################################
        local function setup_rings(cr,pt)
            local str=''
            local value=0
    
            str=string.format('${%s %s}',pt['name'],pt['arg'])
            str=conky_parse(str)
    
            value=tonumber(str)
            if value == nil then value = 0 end
            pct=value/pt['max']
    
            draw_ring(cr,pct,pt)
        end
    
        if conky_window==nil then return end
        local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
    
        local cr=cairo_create(cs)    
    
        local updates=conky_parse('${updates}')
        update_num=tonumber(updates)
    
        if update_num>5 then
            for i in pairs(settings_table) do
                setup_rings(cr,settings_table[i])
            end
        end
    end
    .bargraph.lua
    Code:
    --[[ BARGRAPH WIDGET
    	v2.0 by wlourf (12.07.2010)
    	this widget draws a bargraph with differe,ts effects 
    	http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
    	
    	
    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 numericla 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, défaut = 0
    skew_y	- skew bar around y axis, défaut = 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, défaut = {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
    
    
    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 March 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
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    function conky_main_bars()
    	bars_settings={	
    		{
    			name="wireless_link_qual_perc",
    			arg="wlan0",
    			max=100,
    			alarm=50,
    			angle_bar=3,
    			bg_colour={0xFFFFFF,0.25},
    			fg_colour={0xFF0000,0.9},
    			alarm_colour={0x00FF00,0.9},
    			x=95,y=522,
    			blocks=45,
    			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)
    
    end
    
    
    
    function draw_multi_bar_graph(t)
    	cairo_save(cr)
    	--check values
    	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
    	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=nil
    		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
    			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)
    		
    			-- 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
    			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)))
    		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()
    		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()
    			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
    		
    		
    	end --setup_bar_graph()
    
    	
    	--start here !
    	setup_bar_graph()
    	cairo_restore(cr)
    end
    i can't attach my screen so here it is the link
    http://i54.tinypic.com/xftcfq.png

  3. #16613
    Join Date
    Aug 2010
    Location
    Arizona USA
    Beans
    3,001
    Distro
    Ubuntu Development Release

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by okon3 View Post
    i can't attach my screen so here it is the link
    http://i54.tinypic.com/xftcfq.png
    Nice!

    I'll host the pic for you...




    I've never been a fan of rings, but they DO make sense, with a multi-core computer.

    Hrm...
    Intel ® P4 Extreme Edition 3.4 (Gallatin) || DFI ® LanParty PRO875B rev B1
    Crucial ® Ballistix Tracer PC4000 1GB || Mountain Mods U2-UFO Opti-1203
    XFX 7600GT 560M AGP (PV-T73A-UDF3) || Corsair HX520W Modular PSU

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

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by Arminius View Post
    I've been working on an rss script for my conky.
    and it's mostly working, in the image attached u can see the output, problem is there's alot of junk like ezrss search results and !CDATA[

    here's the code

    simple-rss-reader-v3.pl
    Code:
    #!/usr/bin/perl -w
    
    ############################
    # Creator: Jeff Israel
    #
    # Script:    ./simple-rss-reader-v3.pl
    # Version:     3.001
    #
    # Coded for for Wikihowto http://howto.wikia.com
    #
    # Description:     This code downloads an RSS feed, 
    #         extracts the <title> lines,
    #         cleans them up lines,
    #         prints the pretty lines
    #         exits on max-lines
    # Usage:
    # .conkyrc: ${execi [time] /path/to/script/simple-rss-reader-v3.pl}
    #
    # Usage Example
    # ${execi 300 /path/to/script/simple-rss-reader-v3.pl}
    #
    
    use LWP::Simple;
    
    
    ############################
    # Configs
    #
    
    #$rssPage = "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss";
    $rssPage = "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss";
    $numLines = 10;
    $maxTitleLenght = 35;
    
    ###########################
    # Code
    #
    
    # Downloading RSS feed
    my $pageCont = get($rssPage);
    
    # Spliting the page to lines
    @pageLines = split(/\n/,$pageCont);
    
    # Parse each line, strip no-fun data, exit on max-lines
    $numLines--; #correcting count for loop
    $x = 0;
    foreach $line (@pageLines) {
        if($line =~ /\<title\>/){ # Is a good line?
            #print "- $line\n";
            $lineCat = $line;
            $lineCat =~ s/.*\<title\>//;
            $lineCat =~ s/\<\/title\>.*//;
            $lineCat =~ s/\[.{4,25}\]$//; # strip no-fun data ( [from blaaa] )
            $lineCat = substr($lineCat, 0, $maxTitleLenght);
            print "- $lineCat \n";
            $x++;
        }
        if($x > $numLines) {
            last; #exit on max-lines
        }
        
    }
    
    #print $page;
    #print "\nBy Bye\n";
    being called forth by

    Code:
    ${execi 300 /home/me/scripts/simple-rss-reader-v3.pl}
    so any idea's on how to clean it up, just have the episode titles
    try this line in your conkyrc
    Code:
    ${execi 600 curl "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss" | gawk -F'<title><!\\[CDATA\\[NOVA scienceNOW' -v RS='\\]\\]></title>' 'RT{print $NF}' }
    else you need to edit these lines in the script
    Code:
    		$lineCat =~ s/.*\<title\>//;
    		$lineCat =~ s/\<\/title\>.*//;
    to get rid of all the extra stuff on that nova site (those [ and ] are tricky and need 2 escapes (ie \ ) before them)
    Last edited by mrpeachy; March 18th, 2011 at 11:03 PM.

  5. #16615
    Join Date
    Aug 2010
    Location
    Arizona USA
    Beans
    3,001
    Distro
    Ubuntu Development Release

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by 42dorian View Post
    Yes yes, it is logical to start with someone else's and break it down. But, not VinDSL's. In starting simpler than that, one that doesn't have everything you want, it forces you to learn.[...]
    You have a keen intellect, my friend, and an amazing ability for accurate, insightful analysis. Plus, an ability to express your views in an easily understandable, cogent, manner.

    Truthfully, I've ever run across anyone like you. You are unique, in my experience!

    I've been thinking about what you said, and you're right (of course)!

    At this point, and going forward, I think I should publish 2 versions, e.g. a "Starter" and "Ultimate" version --both in the same post.

    Do you think that would do 'the trick'?
    Intel ® P4 Extreme Edition 3.4 (Gallatin) || DFI ® LanParty PRO875B rev B1
    Crucial ® Ballistix Tracer PC4000 1GB || Mountain Mods U2-UFO Opti-1203
    XFX 7600GT 560M AGP (PV-T73A-UDF3) || Corsair HX520W Modular PSU

  6. #16616
    Join Date
    Apr 2007
    Beans
    195

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by VinDSL View Post
    You have a keen intellect, my friend, and an amazing ability for accurate, insightful analysis. Plus, an ability to express your views in an easily understandable, cogent, manner.

    Truthfully, I've ever run across anyone like you. You are unique, in my experience!

    I've been thinking about what you said, and you're right (of course)!

    At this point, and going forward, I think I should publish 2 versions, e.g. a "Starter" and "Ultimate" version --both in the same post.

    Do you think that would do 'the trick'?
    Not even that! Just a statement saying "Do Not Attempt Unless You Are Quite Familiar With Conky, And About What You Are Doing!"

    Without a doubt, you are the single most copied Conky writer of all of us here. It's because you have it clean and laid out, and you use those giant marquee banners in your comments to say "Hey! This is where this section starts!" so you are quite popular for new users.

    When it comes right down to it, this hasn't been a problem. Now you've started experimenting with Natty and with formatting the "Same" Conky for two different versions of the program. You've got all these spacing changes between the two, and that's easy to spot for any of us who either know your work, or have been doing this Conky thing for a long time. New people to Conky want to aspire to get your layout, and you make "Getting It" very easy. But, there's nothing in any of your work that shows how familiar you are with the tiny surrounding tweaks in spacing and font size in relation to desktop resolution that comes with it. As such, new users keep thinking it's "Broken" or "Not Working" when they don't know these spacing and pixel use changes. If you still had the single Conky, that doesn't take a hundred tiny, meaningless tweaks to get it to fit slightly different screens across the board, then we wouldn't be having this conversation. You and the rest of us who know you are quite familiar with these tweaks and know in a heartbeat where they are, and what to change. New people just wanting Conky to work, don't have that luxury.

    To summarize in easily misinterpreted ways, I'd say your latest work has crippled the ability for new people to learn Conky as easily as the rest of us learned. If you had kept things simple, you'd still be one of the best sources for learning Conky out there. Now you just need a brief disclaimer saying NOT to copy your entire Conky and expect it to work on first try. Now, I don't mind helping people over that hurdle, but it makes it a lot harder to explain without sounding like you're patronizing or insulting someone. The truth is, what new users call "Broken" isn't broken at all. And they'd know that if they started with... well... almost anyone else's Conky setup first. Indeed, yours is still one to aspire to, but you've got so many experiments running that it's no longer one you can just break down with a glance and say "Hey, I know where that space goes..."

    We're at the point, as a community, that new people need to be handed a small manual before we can help them. We need to tell them to set up an alias to reload the fonts, we need to tell them to get Screenruler, we need to tell them to add kaivalagi's repository, and we typically have to tell people to start slightly smaller than your Conky setup and work backwards to GET your setup. In fact, if it's at all possible, I think that very statement should go somewhere on Conky Pitstop. A "Before You Start" section with the helpful utilities most of us use.

    And I suggest I not write it. Most people don't want to read as much as I write. I type rather fast, so I'm comfortable not compressing anything. That gives some people headaches. Especially those using small devices like their phones or a smaller netbook.
    Last edited by 42dorian; March 19th, 2011 at 12:06 AM.

  7. #16617
    Join Date
    Feb 2009
    Beans
    433

    Re: Post your .conkyrc files w/ screenshots

    try this line in your conkyrc
    Code:
    ${execi 600 curl "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss" | gawk -F'<title><!\\[CDATA\\[NOVA scienceNOW' -v RS='\\]\\]></title>' 'RT{print $NF}' }
    thanks mrpeachy, that's working much better, one last thing though, if to many results come back, say 10, how can I tell it to only return say the latest 3?

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

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by Arminius View Post
    thanks mrpeachy, that's working much better, one last thing though, if to many results come back, say 10, how can I tell it to only return say the latest 3?
    you can use the head command at the end like this
    Code:
    ${execpi 600 curl "http://www.ezrss.it/search/index.php?show_name=NOVA+scienceNOW&show_name_exact=true&mode=rss" | gawk -F'<title><!\\[CDATA\\[NOVA scienceNOW' -v RS='\\]\\]></title>' 'RT{print $NF}' | head -3 }
    will print the first 3 lines, change to however many you want

    the gawk command is the important one

    it looks for this
    Code:
    <title><!\\[CDATA\\[NOVA scienceNOW
    then this
    Code:
    \\]\\]></title>
    and print everything between... by altering those search commands you can alter the output... get rid of the spaces and - at the front or the bracketed part on the right... just remember the escapes for the square brackets
    Last edited by mrpeachy; March 19th, 2011 at 05:33 AM.

  9. #16619
    Join Date
    Jul 2010
    Location
    Ubuntu Land
    Beans
    53
    Distro
    Ubuntu 12.10 Quantal Quetzal

    Re: Post your .conkyrc files w/ screenshots

    Been working on my new 12in netbook and the wife's 10in netbook.

    I love this little Asus 1215N,this thing rips with 64bit!!

    OK here is my conky tweaked for a 12.1in screen at 1366x768, added embedded terminal.

    The only problem I have is the forcast fonts not showing up,still working on that one.

    conkyrc
    Code:
    ##################################
    ## VinDSL | rev. 10-12-30 20:45 ##
    ##################################
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont LiberationSans:size=8.85
    xftalpha 0.7
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale 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)?
    #
    background no
    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
    
    ####
    ## Use double buffering? Reduces flicker.
    #
    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 no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment top_left
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 225 0
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 7
    gap_y 28
    
    ####
    ## 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 1
    
    ####
    ## Number of net samples to average.
    ## Set to 1 to disable averaging.
    #
    net_avg_samples 1
    
    ####
    ## Add spaces to keep things from moving around?
    ## Only affects certain objects.
    #
    use_spacer left
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    
    lua_load /home/linus/scripts/.draw_bg.lua
    lua_load /home/linus/scripts/.bargraph_small.lua
    lua_draw_hook_pre draw_bg
    lua_draw_hook_post main_bars
    
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Liberation Mono (Ascender Corp)
    # Liberation Sans (Ascender Corp)
    # Moon Phases (Curtis Clark)
    # OpenLogos (Icoma)
    # PizzaDude Bullets (Jakob Fischer)
    # Radio Space (Iconian Fonts)
    # StyleBats (Vinterstille)
    # Ubuntu (Canonical Ltd)
    # Ubuntu Title Bold (Paulo Silva)
    # Weather (Jonathan Macagba)
    # WenQuanYi Micro Hei (Google Corp)
    
    TEXT
    ##################
    ##     LOGO     ##
    ##################
    ${voffset -15}${font OpenLogos:size=77}${color2}v${font}${voffset -55}${goto 158}${font UbuntuTitleBold:size=16}${color4}10.10${font}
    ##################
    ##    SYSTEM    ##
    ##################
    ${voffset 14}${font WenQuanYiMicroHei:bold:size=8.75}${color4}SYSTEM${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font OpenLogos:size=10}${color2}u${voffset -4}${font}${color6}${offset 5}${sysname}${offset 5}${kernel}${alignr}${machine}
    ${voffset 2}${font StyleBats:size=10}${color2}A${voffset -1}${font}${color6}${offset 5}Intel${offset 3}Atom${offset 3}DualCore${alignr}${freq_g cpu0}${offset 1}GHz
    ${voffset 2}${font StyleBats:size=10}${color2}q${voffset -1}${font}${color6}${offset 5}Uptime${alignr}${uptime}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -1}${font}${color6}${offset 5}File${offset 3}System${alignr}${fs_type}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -15}${font}${color6}
    ${offset 16}Gmail${alignr}${execpi 1800 python /home/linus/scripts/gmail.py}
    ${voffset 2}${font StyleBats:size=10}8${font}  System Updates ${alignr}${execi 3600 aptitude search "~U" | wc -l | tail} Packages 
    ##################
    ##  PROCESSOR  ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 1${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu0}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 2${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu1}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 3${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu2}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 4${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu3}%${color7}
    ##################
    ##    MEMORY    ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}MEMORY${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}l${voffset -2}${font}${color6}${offset 3}RAM${goto 97}${mem}${goto 133}/${offset 5}${memmax}${alignr}${memperc}%
    ${color7}${alignr 2}
    ##################
    ##     HDD      ##
    ##################
    ${voffset 2}${font WenQuanYiMicroHei:bold:size=8.75}${color4}HDD${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}BOOT${goto 95}${fs_used /boot}${goto 133}/${offset 5}${fs_size /boot}${alignr}${fs_free_perc /boot}%
    ${color7}${alignr 2}
    ${voffset 4}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}ROOT${goto 95}${fs_used /}${goto 133}/${offset 5}${fs_size /}${alignr}${fs_free_perc /}%
    ${color7}${alignr 2}
    ${voffset 1}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}HOME${goto 95}${fs_used /home}${goto 133}/${offset 5}${fs_size /home}${alignr}${fs_free_perc /home}%
    ${color7}${alignr 2}
    ${voffset 1}${font StyleBats:size=10}${color2}4${voffset -2}${font}${color6}${offset 4}SWAP${goto 95}${swap}${goto 133}/${offset 5}${swapmax}${alignr}${swapperc}%
    ${color7}${alignr 2}
    ##################
    # TOP PROCESSES ##
    ##################
    ${voffset 3}${font WenQuanYiMicroHei:bold:size=8.75}${color4}TOP PROCESSES${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 1}${goto 115}${top_mem mem_res 1}${alignr}${top_mem mem 1}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 2}${goto 115}${top_mem mem_res 2}${alignr}${top_mem mem 2}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 3}${goto 115}${top_mem mem_res 3}${alignr}${top_mem mem 3}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 4}${goto 115}${top_mem mem_res 4}${alignr}${top_mem mem 4}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 5}${goto 115}${top_mem mem_res 5}${alignr}${top_mem mem 5}%
    ##################
    ##   NETWORK    ##
    ################## 
    ${if_existing /sys/class/net/wlan0/operstate up} 
    ${voffset -10}${font WenQuanYiMicroHei:bold:size=8.75}${color4}WLAN0${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${voffset -14}${font}${color6}
    ${offset 19}Link${offset 2}Quality${alignr}${wireless_link_qual_perc wlan0}%${alignr}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Private${offset 3}IP${alignr}${addr wlan0}
    ${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Public${offset 7}IP${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Down${alignr}${downspeed wlan0}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Up${alignr}${upspeed wlan0}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Downloaded${alignr}${totaldown wlan0}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Uploaded${alignr}${totalup wlan0}
    ${endif}
    ${if_existing /sys/class/net/wlan1/operstate up}
    ${voffset -18}${font WenQuanYiMicroHei:bold:size=8.75}${color4}WLAN1${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${voffset -14}${font}${color6}
    ${offset 19}Link${offset 2}Quality${alignr}${wireless_link_qual_perc wlan1}%${alignr}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Private${offset 3}IP${alignr}${addr wlan1}
    ${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Public${offset 7}IP${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Down${alignr}${downspeed wlan1}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Up${alignr}${upspeed wlan1}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Downloaded${alignr}${totaldown wlan1}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Uploaded${alignr}${totalup wlan1}
    ${endif}
    ##################
    ##     TIME     ##
    ##################
    ${voffset -25}${font WenQuanYiMicroHei:bold:size=8.75}${color4}TIME${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 3}${if_match ${time %l}<=9}${voffset -4}${font RadioSpace:size=18}${color3}${alignc 7}${time %l:%M%p}${font}${else}${if_match ${time %l}>=10}${voffset -4}${font RadioSpace:size=22}${color3}${alignc -1}${time %l:%M%p}${font}${endif}${endif}
    ${voffset 0}${font LiberationSans:size=8}${color4}${alignc 2}Sunrise${offset 1}${execi 1800 conkyForecast --location= --datatype=SR --startday=1}${color3}${offset 2}|${offset 2}${color4}Sunset${offset 1}${execi 1800 conkyForecast --location= --datatype=SS --startday=1}${font}
    conkyrc1
    Code:
    ##################################
    ## VinDSL | rev. 11-01-01 02:33 ##
    ##################################
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont LiberationSans:size=8.85
    xftalpha 0.7
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1
    
    ####
    ## 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_colour eeeeee
    own_window_type override
    own_window_transparent yes
    
    ####
    ## 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 no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment top_right
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 265 0
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 7
    gap_y 33
    
    ####
    ## 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 left
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    
    lua_load /home/linus/scripts/.draw_bg1.lua
    lua_load /home/linus/scripts/.bargraph_small2.lua
    lua_draw_hook_pre draw_bg
    lua_draw_hook_post main_bars
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Liberation Mono (Ascender Corp)
    # Liberation Sans (Ascender Corp)
    # Moon Phases (Curtis Clark)
    # OpenLogos (Icoma)
    # PizzaDude Bullets (Jakob Fischer)
    # Radio Space (Iconian Fonts)
    # StyleBats (Vinterstille)
    # Ubuntu (Canonical Ltd)
    # Ubuntu Title Bold (Paulo Silva)
    # Weather (Jonathan Macagba)
    # WenQuanYi Micro Hei (Google Corp)
     
    TEXT
    ##################
    ##   WEATHER    ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${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}${execpi 1800 conkyForecast --imperial --location=}${font}
    ${voffset 0}${font Ubuntu:size=24}${color4}${alignc}${execi 1800 conkyForecast --location= --datatype=CT}${font}
    ${voffset 15}${goto 20}${font ConkyWindNESW:style=Bold:size=38}${color2}${execi 1800 conkyForecast --location= --datatype=BS}${font}${voffset -40}${goto 95}${font ConkyWeather:style=Bold:size=45}${execi 1800 conkyForecast --location= --datatype=WF}${font}${voffset -36}${goto 185}${font MoonPhases:size=30}${execi 1800 conkyForecast --location= --datatype=MF}${font}
    ${voffset 6}${goto 28}${font}${color6}${execpi 1800 conkyForecast --location= --imperial --datatype=WS | sed -e 's/calm'/'\$\{offset 2}Calm/g' -e 's/mph'/'\$\{offset 2}mph/g'}${goto 89}Feels like ${execi 1800 conkyForecast --location= --imperial --datatype=LT --centeredwidth=4 -iu}${execpi 1800 conkyForecast --location= --datatype=MP | sed -e 's/First.*'/'\$\{goto 185}First Qtr/g' -e 's/Last.*'/'\$\{goto 185}Last Qtr/g' -e 's/New.*'/'\$\{goto 190}New/g' -e 's/Full.*'/'\$\{goto 194}Full/g' -e 's/Waning.*'/'\$\{goto 185}Waning/g' -e 's/Waxing.*'/'\$\{goto 185}Waxing/g'}
    ${voffset 10}${goto 35}${font}${color6}${execi 1800 conkyForecast --location= --datatype=DW --startday=1 --shortweekday}${goto 89}${execi 1800 conkyForecast --location= --datatype=DW --startday=2 --shortweekday}${goto 142}${execi 1800 conkyForecast --location= --datatype=DW --startday=3 --shortweekday}${goto 196}${execi 1800 conkyForecast --location= --datatype=DW --startday=4 --shortweekday}${goto 196}${execi 1800 conkyForecast --location=--datatype=DW --startday=5 --shortweekday}
    ${voffset 0}${goto 25}${font ConkyWeather:size=32}${color2}${execi 1800 conkyForecast --location= --datatype=WF --startday=1 --endday=5 --spaces=1}${font}
    ${voffset 0}${goto 25}${font}${color6}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=1 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=1 --hideunits --centeredwidth=4 -iu}${goto 79}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=2 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=2 --hideunits --centeredwidth=4 -iu}${goto 133}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=3 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=3 --hideunits --centeredwidth=4 -iu}${goto 187}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=4 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=4 --hideunits --centeredwidth=4 -iu}
    ##################
    ##   CALENDAR   ##
    ##################
    ${voffset 12}${font WenQuanYiMicroHei:bold:size=8.75}${color4}DATE${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 18}${font LiberationMono:size=8}${color3}${alignc 60}${time %A}${font}
    ${voffset -3}${if_match ${time %e}<=9}${font LiberationMono:size=22}${color4}${alignc 70}${time %e}${font}${else}${if_match ${time %e}>=10}${font LiberationMono:size=22}${color4}${alignc 60}${time %e}${font}${endif}${endif}
    ${voffset -1}${font LiberationMono:size=8}${color3}${alignc 60}${time %B}${font}
    ${voffset -3}${font LiberationMono:size=8}${color3}${alignc 60}${time %Y}${font}
    ${voffset -82}${font LiberationMono:size=8}${color3}${execpi 1800 VinDSL_Cal_4= cal | sed '1d' | sed s/^/"\$\{offset 107"\}/ | sed '/^ *$/d' | sed 's/\<'"$(date +%-d)"'\>/${color4}&${color3}/'}${font}
    ${voffset -90}${font CutOutsFor3DFX:size=64}${color8}${alignc 99}2${font}
    ##################
    ##   RHYTHMBOX   ##
    ##################
    ${if_running rhythmbox}${voffset 25}${font WenQuanYiMicroHei:bold:size=8.75}${color4}RHYTHMBOX${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${execp conkyRhythmbox --template=/home/linus/scripts/conkyRhythmbox.template}
    ${endif}
    bargraph_small.lua
    Code:
    --[[ BARGRAPH WIDGET
        v2.0 by wlourf (12.07.2010)
        this widget draws a bargraph with differe,ts effects 
        http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
        
        
    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 numericla 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, défaut = 0
    skew_y    - skew bar around y axis, défaut = 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, défaut = {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
    
    
    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 March 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
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    
    
    function conky_main_bars()
        bars_settings={    
            {
                name="cpu",
                arg="cpu0",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=184,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                name="cpu",
                arg="cpu1",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=217,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {       
                            name="cpu",
                arg="cpu2",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=251,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                    name="cpu",
                arg="cpu3",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=285,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                            name="memperc",
                arg="",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=333,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                
                            name="fs_used_perc",
                arg="/boot",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=377,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
            {
                name="fs_used_perc",
                arg="/root",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=406,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
            {
                name="fs_used_perc",
                arg="/home",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=433,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
                {
                            name="swapperc",
                arg="",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=461,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                            },    
        
        }
    -------------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
    local network=tonumber(conky_parse('${if_existing /sys/class/net/wlan0/operstate up}1${else}0${endif}'))
    if network==1 then 
    network=1 
    else
    network=tonumber(conky_parse('${if_existing /sys/class/net/wlan1/operstate up}2${else}0${endif}'))
    if network==2 then
    network=2
    else
    network=0
    end
    end
    
    if network==1 then
    table.insert(bars_settings,{
                            name="wireless_link_qual_perc",
                arg="wlan0",
                max=100,
                alarm=40,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0xFF0000,0.6},
                alarm_colour={0x00FF00,0.6},
                x=97,y=576,
                blocks=35,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                })
    elseif network==2 then
    table.insert(bars_settings,{
                            name="wireless_link_qual_perc",
                arg="wlan1",
                max=100,
                alarm=40,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0xFF0000,0.6},
                alarm_colour={0x00FF00,0.6},
                x=94,y=576,
                blocks=35,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                })
    else
    end
    
            for i in pairs(bars_settings) do
                
                draw_multi_bar_graph(bars_settings[i])
                
            end
        end
        cairo_destroy(cr)
        cairo_surface_destroy(cs)
    
    end
    
    
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        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
        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=nil
            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
                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)
            
                -- 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
                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)))
            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()
            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()
                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
            
            
        end --setup_bar_graph()
    
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    bargraph_small2.lua
    Code:
    --[[ BARGRAPH WIDGET
        v2.0 by wlourf (12.07.2010)
        this widget draws a bargraph with differe,ts effects 
        http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
        
        
    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 numericla 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, défaut = 0
    skew_y    - skew bar around y axis, défaut = 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, défaut = {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
    
    
    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 March 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
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    
    
    function conky_main_bars()
        bars_settings={    
            {
                name="",
                arg=io.popen("conkyRhythmbox --datatype=PP"):read(),
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=8,y=405,
                blocks=89,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
         }        
    -------------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
       running=tonumber(conky_parse('${if_running rhythmbox}1${else}0${endif}'))
    if tonumber(conky_parse('${updates}'))>3 and running==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)
    
    end
    
    
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        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
        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=nil
            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
                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)
            
                -- 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
                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)))
            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()
            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()
                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
            
            
        end --setup_bar_graph()
    
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    draw_bg.lua
    Code:
    --[[
    Background by londonali1010 (2009)
    VinDSL Background Hack (2010)
    
    This script draws a background to the Conky window. It covers the whole of the Conky window, but you can specify rounded corners, if you wish.
    
    To call this script in Conky, use (assuming you have saved this script to ~/scripts/):
        lua_load ~/scripts/draw_bg.lua
        lua_draw_hook_pre draw_bg
    
    Changelog:
    + v2.4    VinDSL Hack (12.31.2010) Added shading example(s).
    + v2.3    VinDSL Hack (12.30.2010) Cleaned up the code a bit.
    + v2.2    VinDSL Hack (12.24.2010) Added cairo destroy function(s).
    + v2.1    VinDSL Hack (12.21.2010) Added height adjustment variable.
    + v1.0    Original release (07.10.2009)
    --]]
    
    -- 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.
        corner_r = 0
    
    -- Set the colour and transparency (alpha) of your background (0.00 - 0.99).
    
    --    (Light Shading Example)
    --    bg_colour = 0x4d4d4d
    --    bg_alpha = 0.50
    
    --    (Dark Shading Example)
    --    bg_colour = 0x000000
    --    bg_alpha = 0.50
    
        bg_colour = 0x000000
        bg_alpha = 0.55
    
    -- Tweaks the height of your background, in pixels. If you don't need to adjust the height, use 0.
        vindsl_hack_height = 0
    
    require 'cairo'
    cs, cr = nil
    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_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_destroy(cr)
    end
    gmail.py
    Code:
    #!/usr/bin/env python2
    
    import os
     
    #Enter your username and password below within double quotes
    # eg. username="username" and password="password"
    domain="mail.google.com"
    username=""
    password=""
    com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"
    
    temp=os.popen(com)
    msg=temp.read()
    index=msg.find("<fullcount>")
    index2=msg.find("</fullcount>")
    fc=int(msg[index+11:index2])
    
    if fc==0:
       print "0 new"
    else:
       print str(fc)+" new"
    conkyrhythmbox.template
    Code:
    ${color3}Status:${color1}[--datatype=ST]
    ${color3}Artist:${color1}[--datatype=AR]
    ${color3}Album:${color1}[--datatype=AL]
    ${color3}Title:${color1}[--datatype=TI]
    ${color3}Volume:${color1}[--datatype=VO]
    ${image [--datatype=CA] -n -p 70,490 -s 150x130}
    conkyforcast.config
    Code:
    # config settings for conkyForecast.py
    CACHE_FOLDERPATH = /tmp/
    CONNECTION_TIMEOUT = 5
    EXPIRY_MINUTES = 30
    TIME_FORMAT = %l:%M%p
    DATE_FORMAT = %Y-%m-%d
    LOCALE = en
    XOAP_PARTNER_ID = 
    XOAP_LICENCE_KEY = 
    MAXIMUM_DAYS_FORECAST = 5
    AUTO_NIGHT = False
    BASE_XOAP_URL = http://xoap.weather.com/weather/local/<LOCATION>?cc=*&dayf=5&link=xoap&prod=xoap&par=<XOAP_PARTNER_ID>&key=<XOAP_LICENCE_KEY>&unit=m
    #BASE_XOAP_URL = http://xml.weather.com/weather/local/<LOCATION>?cc=*&dayf=10&link=xoap&prod=xoap&par=<XOAP_PARTNER_ID>&key=<XOAP_LICENCE_KEY>&unit=m
    PROXY_HOST = 
    PROXY_PORT = 8080
    PROXY_USERNAME = 
    PROXY_PASSWORD =
    Attached Images Attached Images
    Eee Pc 1215N notebook-12in Screen-Ubnutu 12.10
    Dual core 1.8 Atom
    2 gig DDR3
    Nvidia Ion(Yes it works,even have HDMI out working)

  10. #16620
    Join Date
    Apr 2007
    Beans
    195

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by foutes View Post
    Been working on my new 12in netbook and the wife's 10in netbook.

    I love this little Asus 1215N,this thing rips with 64bit!!

    OK here is my conky tweaked for a 12.1in screen at 1366x768, added embedded terminal.

    The only problem I have is the forcast fonts not showing up,still working on that one.

    conkyrc
    Code:
    ##################################
    ## VinDSL | rev. 10-12-30 20:45 ##
    ##################################
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont LiberationSans:size=8.85
    xftalpha 0.7
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale 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)?
    #
    background no
    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
    
    ####
    ## Use double buffering? Reduces flicker.
    #
    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 no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment top_left
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 225 0
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 7
    gap_y 28
    
    ####
    ## 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 1
    
    ####
    ## Number of net samples to average.
    ## Set to 1 to disable averaging.
    #
    net_avg_samples 1
    
    ####
    ## Add spaces to keep things from moving around?
    ## Only affects certain objects.
    #
    use_spacer left
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    
    lua_load /home/linus/scripts/.draw_bg.lua
    lua_load /home/linus/scripts/.bargraph_small.lua
    lua_draw_hook_pre draw_bg
    lua_draw_hook_post main_bars
    
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Liberation Mono (Ascender Corp)
    # Liberation Sans (Ascender Corp)
    # Moon Phases (Curtis Clark)
    # OpenLogos (Icoma)
    # PizzaDude Bullets (Jakob Fischer)
    # Radio Space (Iconian Fonts)
    # StyleBats (Vinterstille)
    # Ubuntu (Canonical Ltd)
    # Ubuntu Title Bold (Paulo Silva)
    # Weather (Jonathan Macagba)
    # WenQuanYi Micro Hei (Google Corp)
    
    TEXT
    ##################
    ##     LOGO     ##
    ##################
    ${voffset -15}${font OpenLogos:size=77}${color2}v${font}${voffset -55}${goto 158}${font UbuntuTitleBold:size=16}${color4}10.10${font}
    ##################
    ##    SYSTEM    ##
    ##################
    ${voffset 14}${font WenQuanYiMicroHei:bold:size=8.75}${color4}SYSTEM${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font OpenLogos:size=10}${color2}u${voffset -4}${font}${color6}${offset 5}${sysname}${offset 5}${kernel}${alignr}${machine}
    ${voffset 2}${font StyleBats:size=10}${color2}A${voffset -1}${font}${color6}${offset 5}Intel${offset 3}Atom${offset 3}DualCore${alignr}${freq_g cpu0}${offset 1}GHz
    ${voffset 2}${font StyleBats:size=10}${color2}q${voffset -1}${font}${color6}${offset 5}Uptime${alignr}${uptime}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -1}${font}${color6}${offset 5}File${offset 3}System${alignr}${fs_type}
    ${voffset 2}${font StyleBats:size=10}${color2}o${voffset -15}${font}${color6}
    ${offset 16}Gmail${alignr}${execpi 1800 python /home/linus/scripts/gmail.py}
    ${voffset 2}${font StyleBats:size=10}8${font}  System Updates ${alignr}${execi 3600 aptitude search "~U" | wc -l | tail} Packages 
    ##################
    ##  PROCESSOR  ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 1${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu0}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 2${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu1}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 3${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu2}%${color7}
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSOR 4${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU${offset 5}${cpu cpu3}%${color7}
    ##################
    ##    MEMORY    ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}MEMORY${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}l${voffset -2}${font}${color6}${offset 3}RAM${goto 97}${mem}${goto 133}/${offset 5}${memmax}${alignr}${memperc}%
    ${color7}${alignr 2}
    ##################
    ##     HDD      ##
    ##################
    ${voffset 2}${font WenQuanYiMicroHei:bold:size=8.75}${color4}HDD${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}BOOT${goto 95}${fs_used /boot}${goto 133}/${offset 5}${fs_size /boot}${alignr}${fs_free_perc /boot}%
    ${color7}${alignr 2}
    ${voffset 4}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}ROOT${goto 95}${fs_used /}${goto 133}/${offset 5}${fs_size /}${alignr}${fs_free_perc /}%
    ${color7}${alignr 2}
    ${voffset 1}${font StyleBats:size=10}${color2}x${voffset -2}${font}${color6}${offset 4}HOME${goto 95}${fs_used /home}${goto 133}/${offset 5}${fs_size /home}${alignr}${fs_free_perc /home}%
    ${color7}${alignr 2}
    ${voffset 1}${font StyleBats:size=10}${color2}4${voffset -2}${font}${color6}${offset 4}SWAP${goto 95}${swap}${goto 133}/${offset 5}${swapmax}${alignr}${swapperc}%
    ${color7}${alignr 2}
    ##################
    # TOP PROCESSES ##
    ##################
    ${voffset 3}${font WenQuanYiMicroHei:bold:size=8.75}${color4}TOP PROCESSES${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 1}${goto 115}${top_mem mem_res 1}${alignr}${top_mem mem 1}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 2}${goto 115}${top_mem mem_res 2}${alignr}${top_mem mem 2}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 3}${goto 115}${top_mem mem_res 3}${alignr}${top_mem mem 3}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 4}${goto 115}${top_mem mem_res 4}${alignr}${top_mem mem 4}%
    ${voffset 2}${font StyleBats:size=10}${color1}h${voffset -3}${font}${color6}${offset 5}${top_mem name 5}${goto 115}${top_mem mem_res 5}${alignr}${top_mem mem 5}%
    ##################
    ##   NETWORK    ##
    ################## 
    ${if_existing /sys/class/net/wlan0/operstate up} 
    ${voffset -10}${font WenQuanYiMicroHei:bold:size=8.75}${color4}WLAN0${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${voffset -14}${font}${color6}
    ${offset 19}Link${offset 2}Quality${alignr}${wireless_link_qual_perc wlan0}%${alignr}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Private${offset 3}IP${alignr}${addr wlan0}
    ${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Public${offset 7}IP${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Down${alignr}${downspeed wlan0}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Up${alignr}${upspeed wlan0}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Downloaded${alignr}${totaldown wlan0}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Uploaded${alignr}${totalup wlan0}
    ${endif}
    ${if_existing /sys/class/net/wlan1/operstate up}
    ${voffset -18}${font WenQuanYiMicroHei:bold:size=8.75}${color4}WLAN1${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${voffset -14}${font}${color6}
    ${offset 19}Link${offset 2}Quality${alignr}${wireless_link_qual_perc wlan1}%${alignr}
    ${voffset 2}${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Private${offset 3}IP${alignr}${addr wlan1}
    ${font PizzaDudeBullets:size=10}${color2}a${font}${color6}${offset 5}Public${offset 7}IP${alignr}${execi 1800 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Down${alignr}${downspeed wlan1}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Up${alignr}${upspeed wlan1}
    ${voffset 4}${font PizzaDudeBullets:size=10}${color2}T${font}${color6}${offset 5}Downloaded${alignr}${totaldown wlan1}
    ${font PizzaDudeBullets:size=10}${color2}N${font}${color6}${offset 5}Uploaded${alignr}${totalup wlan1}
    ${endif}
    ##################
    ##     TIME     ##
    ##################
    ${voffset -25}${font WenQuanYiMicroHei:bold:size=8.75}${color4}TIME${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 3}${if_match ${time %l}<=9}${voffset -4}${font RadioSpace:size=18}${color3}${alignc 7}${time %l:%M%p}${font}${else}${if_match ${time %l}>=10}${voffset -4}${font RadioSpace:size=22}${color3}${alignc -1}${time %l:%M%p}${font}${endif}${endif}
    ${voffset 0}${font LiberationSans:size=8}${color4}${alignc 2}Sunrise${offset 1}${execi 1800 conkyForecast --location= --datatype=SR --startday=1}${color3}${offset 2}|${offset 2}${color4}Sunset${offset 1}${execi 1800 conkyForecast --location= --datatype=SS --startday=1}${font}
    conkyrc1
    Code:
    ##################################
    ## VinDSL | rev. 11-01-01 02:33 ##
    ##################################
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont LiberationSans:size=8.85
    xftalpha 0.7
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1
    
    ####
    ## 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_colour eeeeee
    own_window_type override
    own_window_transparent yes
    
    ####
    ## 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 no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment top_right
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 265 0
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 7
    gap_y 33
    
    ####
    ## 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 left
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    
    lua_load /home/linus/scripts/.draw_bg1.lua
    lua_load /home/linus/scripts/.bargraph_small2.lua
    lua_draw_hook_pre draw_bg
    lua_draw_hook_post main_bars
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Liberation Mono (Ascender Corp)
    # Liberation Sans (Ascender Corp)
    # Moon Phases (Curtis Clark)
    # OpenLogos (Icoma)
    # PizzaDude Bullets (Jakob Fischer)
    # Radio Space (Iconian Fonts)
    # StyleBats (Vinterstille)
    # Ubuntu (Canonical Ltd)
    # Ubuntu Title Bold (Paulo Silva)
    # Weather (Jonathan Macagba)
    # WenQuanYi Micro Hei (Google Corp)
     
    TEXT
    ##################
    ##   WEATHER    ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${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}${execpi 1800 conkyForecast --imperial --location=}${font}
    ${voffset 0}${font Ubuntu:size=24}${color4}${alignc}${execi 1800 conkyForecast --location= --datatype=CT}${font}
    ${voffset 15}${goto 20}${font ConkyWindNESW:style=Bold:size=38}${color2}${execi 1800 conkyForecast --location= --datatype=BS}${font}${voffset -40}${goto 95}${font ConkyWeather:style=Bold:size=45}${execi 1800 conkyForecast --location= --datatype=WF}${font}${voffset -36}${goto 185}${font MoonPhases:size=30}${execi 1800 conkyForecast --location= --datatype=MF}${font}
    ${voffset 6}${goto 28}${font}${color6}${execpi 1800 conkyForecast --location= --imperial --datatype=WS | sed -e 's/calm'/'\$\{offset 2}Calm/g' -e 's/mph'/'\$\{offset 2}mph/g'}${goto 89}Feels like ${execi 1800 conkyForecast --location= --imperial --datatype=LT --centeredwidth=4 -iu}${execpi 1800 conkyForecast --location= --datatype=MP | sed -e 's/First.*'/'\$\{goto 185}First Qtr/g' -e 's/Last.*'/'\$\{goto 185}Last Qtr/g' -e 's/New.*'/'\$\{goto 190}New/g' -e 's/Full.*'/'\$\{goto 194}Full/g' -e 's/Waning.*'/'\$\{goto 185}Waning/g' -e 's/Waxing.*'/'\$\{goto 185}Waxing/g'}
    ${voffset 10}${goto 35}${font}${color6}${execi 1800 conkyForecast --location= --datatype=DW --startday=1 --shortweekday}${goto 89}${execi 1800 conkyForecast --location= --datatype=DW --startday=2 --shortweekday}${goto 142}${execi 1800 conkyForecast --location= --datatype=DW --startday=3 --shortweekday}${goto 196}${execi 1800 conkyForecast --location= --datatype=DW --startday=4 --shortweekday}${goto 196}${execi 1800 conkyForecast --location=--datatype=DW --startday=5 --shortweekday}
    ${voffset 0}${goto 25}${font ConkyWeather:size=32}${color2}${execi 1800 conkyForecast --location= --datatype=WF --startday=1 --endday=5 --spaces=1}${font}
    ${voffset 0}${goto 25}${font}${color6}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=1 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=1 --hideunits --centeredwidth=4 -iu}${goto 79}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=2 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=2 --hideunits --centeredwidth=4 -iu}${goto 133}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=3 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=3 --hideunits --centeredwidth=4 -iu}${goto 187}${execi 1800 conkyForecast --location= --imperial --datatype=HT --startday=4 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location= --imperial --datatype=LT --startday=4 --hideunits --centeredwidth=4 -iu}
    ##################
    ##   CALENDAR   ##
    ##################
    ${voffset 12}${font WenQuanYiMicroHei:bold:size=8.75}${color4}DATE${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 18}${font LiberationMono:size=8}${color3}${alignc 60}${time %A}${font}
    ${voffset -3}${if_match ${time %e}<=9}${font LiberationMono:size=22}${color4}${alignc 70}${time %e}${font}${else}${if_match ${time %e}>=10}${font LiberationMono:size=22}${color4}${alignc 60}${time %e}${font}${endif}${endif}
    ${voffset -1}${font LiberationMono:size=8}${color3}${alignc 60}${time %B}${font}
    ${voffset -3}${font LiberationMono:size=8}${color3}${alignc 60}${time %Y}${font}
    ${voffset -82}${font LiberationMono:size=8}${color3}${execpi 1800 VinDSL_Cal_4= cal | sed '1d' | sed s/^/"\$\{offset 107"\}/ | sed '/^ *$/d' | sed 's/\<'"$(date +%-d)"'\>/${color4}&${color3}/'}${font}
    ${voffset -90}${font CutOutsFor3DFX:size=64}${color8}${alignc 99}2${font}
    ##################
    ##   RHYTHMBOX   ##
    ##################
    ${if_running rhythmbox}${voffset 25}${font WenQuanYiMicroHei:bold:size=8.75}${color4}RHYTHMBOX${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${execp conkyRhythmbox --template=/home/linus/scripts/conkyRhythmbox.template}
    ${endif}
    bargraph_small.lua
    Code:
    --[[ BARGRAPH WIDGET
        v2.0 by wlourf (12.07.2010)
        this widget draws a bargraph with differe,ts effects 
        http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
        
        
    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 numericla 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, défaut = 0
    skew_y    - skew bar around y axis, défaut = 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, défaut = {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
    
    
    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 March 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
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    
    
    function conky_main_bars()
        bars_settings={    
            {
                name="cpu",
                arg="cpu0",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=184,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                name="cpu",
                arg="cpu1",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=217,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {       
                            name="cpu",
                arg="cpu2",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=251,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                    name="cpu",
                arg="cpu3",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=99,y=285,
                blocks=45,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                            name="memperc",
                arg="",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=333,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
            {
                
                            name="fs_used_perc",
                arg="/boot",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=377,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
            {
                name="fs_used_perc",
                arg="/root",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=406,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
            {
                name="fs_used_perc",
                arg="/home",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=433,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },    
                {
                            name="swapperc",
                arg="",
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=23,y=461,
                blocks=70,
                space=1,
                height=2,width=7,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                            },    
        
        }
    -------------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
    local network=tonumber(conky_parse('${if_existing /sys/class/net/wlan0/operstate up}1${else}0${endif}'))
    if network==1 then 
    network=1 
    else
    network=tonumber(conky_parse('${if_existing /sys/class/net/wlan1/operstate up}2${else}0${endif}'))
    if network==2 then
    network=2
    else
    network=0
    end
    end
    
    if network==1 then
    table.insert(bars_settings,{
                            name="wireless_link_qual_perc",
                arg="wlan0",
                max=100,
                alarm=40,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0xFF0000,0.6},
                alarm_colour={0x00FF00,0.6},
                x=97,y=576,
                blocks=35,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                })
    elseif network==2 then
    table.insert(bars_settings,{
                            name="wireless_link_qual_perc",
                arg="wlan1",
                max=100,
                alarm=40,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0xFF0000,0.6},
                alarm_colour={0x00FF00,0.6},
                x=94,y=576,
                blocks=35,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}
                })
    else
    end
    
            for i in pairs(bars_settings) do
                
                draw_multi_bar_graph(bars_settings[i])
                
            end
        end
        cairo_destroy(cr)
        cairo_surface_destroy(cs)
    
    end
    
    
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        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
        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=nil
            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
                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)
            
                -- 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
                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)))
            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()
            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()
                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
            
            
        end --setup_bar_graph()
    
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    bargraph_small2.lua
    Code:
    --[[ BARGRAPH WIDGET
        v2.0 by wlourf (12.07.2010)
        this widget draws a bargraph with differe,ts effects 
        http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
        
        
    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 numericla 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, défaut = 0
    skew_y    - skew bar around y axis, défaut = 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, défaut = {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
    
    
    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 March 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
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    
    
    function conky_main_bars()
        bars_settings={    
            {
                name="",
                arg=io.popen("conkyRhythmbox --datatype=PP"):read(),
                max=100,
                alarm=50,
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.6},
                alarm_colour={0xFF0000,0.6},
                x=8,y=405,
                blocks=89,
                space=1,
                height=2,width=8,
                angle=90,
                smooth=true,
                mid_colour={{0.5,0xFFFF00,0.6}}    
                },
         }        
    -------------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
       running=tonumber(conky_parse('${if_running rhythmbox}1${else}0${endif}'))
    if tonumber(conky_parse('${updates}'))>3 and running==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)
    
    end
    
    
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        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
        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=nil
            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
                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)
            
                -- 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
                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)))
            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()
            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()
                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
            
            
        end --setup_bar_graph()
    
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    draw_bg.lua
    Code:
    --[[
    Background by londonali1010 (2009)
    VinDSL Background Hack (2010)
    
    This script draws a background to the Conky window. It covers the whole of the Conky window, but you can specify rounded corners, if you wish.
    
    To call this script in Conky, use (assuming you have saved this script to ~/scripts/):
        lua_load ~/scripts/draw_bg.lua
        lua_draw_hook_pre draw_bg
    
    Changelog:
    + v2.4    VinDSL Hack (12.31.2010) Added shading example(s).
    + v2.3    VinDSL Hack (12.30.2010) Cleaned up the code a bit.
    + v2.2    VinDSL Hack (12.24.2010) Added cairo destroy function(s).
    + v2.1    VinDSL Hack (12.21.2010) Added height adjustment variable.
    + v1.0    Original release (07.10.2009)
    --]]
    
    -- 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.
        corner_r = 0
    
    -- Set the colour and transparency (alpha) of your background (0.00 - 0.99).
    
    --    (Light Shading Example)
    --    bg_colour = 0x4d4d4d
    --    bg_alpha = 0.50
    
    --    (Dark Shading Example)
    --    bg_colour = 0x000000
    --    bg_alpha = 0.50
    
        bg_colour = 0x000000
        bg_alpha = 0.55
    
    -- Tweaks the height of your background, in pixels. If you don't need to adjust the height, use 0.
        vindsl_hack_height = 0
    
    require 'cairo'
    cs, cr = nil
    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_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_destroy(cr)
    end
    gmail.py
    Code:
    #!/usr/bin/env python2
    
    import os
     
    #Enter your username and password below within double quotes
    # eg. username="username" and password="password"
    domain="mail.google.com"
    username=""
    password=""
    com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"
    
    temp=os.popen(com)
    msg=temp.read()
    index=msg.find("<fullcount>")
    index2=msg.find("</fullcount>")
    fc=int(msg[index+11:index2])
    
    if fc==0:
       print "0 new"
    else:
       print str(fc)+" new"
    conkyrhythmbox.template
    Code:
    ${color3}Status:${color1}[--datatype=ST]
    ${color3}Artist:${color1}[--datatype=AR]
    ${color3}Album:${color1}[--datatype=AL]
    ${color3}Title:${color1}[--datatype=TI]
    ${color3}Volume:${color1}[--datatype=VO]
    ${image [--datatype=CA] -n -p 70,490 -s 150x130}
    conkyforcast.config
    Code:
    # config settings for conkyForecast.py
    CACHE_FOLDERPATH = /tmp/
    CONNECTION_TIMEOUT = 5
    EXPIRY_MINUTES = 30
    TIME_FORMAT = %l:%M%p
    DATE_FORMAT = %Y-%m-%d
    LOCALE = en
    XOAP_PARTNER_ID = 
    XOAP_LICENCE_KEY = 
    MAXIMUM_DAYS_FORECAST = 5
    AUTO_NIGHT = False
    BASE_XOAP_URL = http://xoap.weather.com/weather/local/<LOCATION>?cc=*&dayf=5&link=xoap&prod=xoap&par=<XOAP_PARTNER_ID>&key=<XOAP_LICENCE_KEY>&unit=m
    #BASE_XOAP_URL = http://xml.weather.com/weather/local/<LOCATION>?cc=*&dayf=10&link=xoap&prod=xoap&par=<XOAP_PARTNER_ID>&key=<XOAP_LICENCE_KEY>&unit=m
    PROXY_HOST = 
    PROXY_PORT = 8080
    PROXY_USERNAME = 
    PROXY_PASSWORD =
    The stuff I just put in red, remove them. They're completely redundant. I don't particularly know if they'll solve your font problem, but they'll certainly irritate me far less.

    All I can do other than that is remind you to download the fonts you want and do a font reload. One of these things:

    Code:
    fc-cache -f -v
    Then remember to kill and restart your Conky afterwards. Other than that, I got nothing to help.

Page 1662 of 2348 FirstFirst ... 6621162156216121652166016611662166316641672171217622162 ... 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
  •