Page 1611 of 2294 FirstFirst ... 6111111151115611601160916101611161216131621166117112111 ... LastLast
Results 16,101 to 16,110 of 22939

Thread: Post your .conkyrc files w/ screenshots

  1. #16101
    Join Date
    Oct 2005
    Location
    Herrenberg, Germany
    Beans
    19
    Distro
    Ubuntu Development Release

    Re: Calendar bonus extra thrown in...

    Quote Originally Posted by dk75 View Post
    what gives you command
    Code:
    locale
    Code:
    locale
    LANG=de_DE.UTF-8
    LANGUAGE=de_DE:de:en_GB:en
    LC_CTYPE="de_DE.UTF-8"
    LC_NUMERIC="de_DE.UTF-8"
    LC_TIME="de_DE.UTF-8"
    LC_COLLATE="de_DE.UTF-8"
    LC_MONETARY="de_DE.UTF-8"
    LC_MESSAGES=de_DE.utf8
    LC_PAPER="de_DE.UTF-8"
    LC_NAME="de_DE.UTF-8"
    LC_ADDRESS="de_DE.UTF-8"
    LC_TELEPHONE="de_DE.UTF-8"
    LC_MEASUREMENT="de_DE.UTF-8"
    LC_IDENTIFICATION="de_DE.UTF-8"
    LC_ALL=
    Looks OK to me...

  2. #16102
    Join Date
    Jan 2007
    Beans
    Hidden!

    Re: Calendar bonus extra thrown in...

    my God, they changing everything again... didn't cal changed 2 relases ago ( -M option )?
    And there's additional LANGUAGE environment which disappeared 2 years ago and now is back...
    Linux Debian Sid (Minted) x86_64/3.12.10, Conky 2.0_pre, Xorg 7.7/1.15.0, KDE 4.11.5, Lenovo T61, Intel X3100, HITACHI HTS722010K9SA00 100GB, WDC_WD5000BEVT 500GB
    Linux user No.: 483055 | My Conky Pitstop corner | One4All project

  3. #16103
    Join Date
    Feb 2008
    Beans
    145
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by Arminius View Post
    I have 2 different conky's running on either side of the screen, the one on the right has
    Code:
    ## Text alignment.
    #
    alignment bottom_right
    and the one on the left's is for bottom left, and yet in the photo u can see they aren't starting at the bottom, I would like them as low down in the screen as I can get them, so any idea's on what's causing them to start further up?

    here's the full code
    Code:
    ##################################
    ## VinDSL | rev. 11-02-17 01:46 ##
    ##################################
    ##   Screen res: 1280x1024x24   ##
    ##################################
    
    ####
    ## Prerequisites (required).
    ## conky-all 1.8.0 or 1.8.1
    ## conkyForecast 2.16
    ## weather.com XML Data Feed (XOAP)
    #
    
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont DroidSans:size=8.75
    xftalpha 0.1
    text_buffer_size 2048
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Daemonize Conky, aka 'fork to background'.
    #
    background yes
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1.5
    
    ####
    ## This is the number of times Conky will update before quitting.
    ## Set to zero to run forever.
    #
    total_run_times 0
    
    ####
    ## Create own window instead of using desktop (required in nautilus)?
    #
    own_window yes
    own_window_type override
    own_window_transparent yes
    
    ####
    ## Force images to redraw when they change.
    #
    imlib_cache_size 0
    
    ####
    ## Use double buffering? Reduces flicker.
    #
    double_buffer yes
    
    ####
    ## Draw shades?
    #
    draw_shades no
    
    ####
    ## Draw outlines?
    #
    draw_outline no
    
    ####
    ## Draw borders around text?
    #
    draw_borders no
    
    ####
    ## Draw borders around graphs?
    #
    draw_graph_borders no
    
    ####
    ## Print text to stdout?
    ## Print text in console?
    #
    out_to_ncurses no
    out_to_console no
    
    ####
    ## Text alignment.
    #
    alignment bottom_right
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 330 798
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 8
    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 right
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 Gray
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    
    ####
    ## Load Lua for bargraphs (required).
    ## Set the path to your script here.
    #
    lua_load ~/.conky/bargraph_small.lua
    lua_draw_hook_post main_bars
    
    ####
    ## Installed fonts (required).
    #
    # ConkyWeather (Stanko Metodiev)
    # ConkyWindNESW (Stanko Metodiev)
    # Cut Outs for 3D FX (Fonts & Things)
    # Droid Font Family (Google Android SDK)
    # 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)
    <snip>
    First off, the blue line of code says bottom right but you were talking about the left. Easy fix, change right to left.

    For the offset, try changing the red lines (specifically the gap_y) to a lower number.

  4. #16104
    Join Date
    Feb 2009
    Beans
    412

    Re: Post your .conkyrc files w/ screenshots

    thanks, cleared that up

  5. #16105
    Join Date
    Oct 2010
    Location
    Sweden
    Beans
    673
    Distro
    Ubuntu 14.04 Trusty Tahr

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by dk75 View Post
    Time manipulation is easy since you already using AWK - though, you need to use GAWK specifically for this.


    you should use this
    Code:
    ls -l tetonwebcam.gif |gawk 'END{print $6,$7,"local time"; gsub(/-/," ",$6); gsub(/:/," ",$7); print strftime("%Y-%m-%d %H:%M",mktime($6" "$7" 0")-(8*60*60)),"MST time (UTC-7)"}'
    Hey thank you! That worked perfectly. This is why I love Ubuntu. People are always willing to help one another.

    So when daylight savings time rolls around I should change the (8*60*60) to (9*60*60)?

    Thanks again.
    Thank you,
    GG -----------
    GUI we don't need no stinking GUI: A collection of Bash scripts
    Mutt (email), cmus (music),Google Calendar and Google Tasks cli

  6. #16106
    Join Date
    Dec 2008
    Location
    The Desert
    Beans
    281
    Distro
    Ubuntu 12.04 Precise Pangolin

    Re: Post your .conkyrc files w/ screenshots

    Quote Originally Posted by VinDSL View Post
    Nice!

    I love to watch the Nurburgring Race Track Live Webcam

    Wish I was running around the (14 mile / 22.8 kilometer) course in my CiViC... LoL!
    O how I wish I could do that too. especially in this.
    I'm a super power user

  7. #16107
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    calendars in conky..
    how about this?





    titles can be different font and color from the numbers
    and you don't have ti stick with monospaced fonts as the script puts the various bits into the same places
    it wont look pretty with all fonts, but the ones above are not monospaced (well Qubix more or less is except for spaces in particular) and line up quite nicely

    you can even have your title text larger

    you can also specify all the gaps... vertical and horizontal

    all options are configurable for size, color and font.. so you can play around

    Code:
    --lua calendar script by mrpeachy Feb 2011
    require 'cairo'
    --------------------------------------------------------------------------------
    function conky_draw_fig()
    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)
    local updates=tonumber(conky_parse('${updates}'))
    --####################################################################################################
    if updates>5 then -- starts the display
    --####################################################################################################
    --title text color
    tred,tgreen,tblue,talpha=0.6,0,0.2,1
    --title text font
    tfont="321impact"
    --title text size
    tfontsize=20
    --###################################################
    --main body text color
    bred,bgreen,bblue,balpha=1,0.2,0.8,1
    --main body text font
    mfont="Rebecca"
    --main body text size
    mfontsize=20
    --###################################################
    --highlight text color
    hred,hgreen,hblue,halpha=1,0,0.2,1
    --highlight font
    hfont="Qubix"
    --highlight size
    hfontsize=20
    --###################################################
    --calendar this month ###############################
    --###################################################
    --position
    across=100.5
    down=100.5
    --###################################################
    --horizontal gap between dates
    gaph=50
    --###################################################
    --gap between day titles and first line
    gapt=20
    --###################################################
    --gap between calendar line
    gapl=25
    --###################################################
    --spacer -- this can help with alignment enter 0, 1 space or 2 spaces between the ""
    spacer=""
    --###################################################
    --calendar calcs
    year=os.date("%G")
    t1 = os.time( {    year=year,month=03,day=01,hour=00,min=0,sec=0} );
    t2 = os.time( {    year=year,month=02,day=01,hour=00,min=0,sec=0} );
    feb=(os.difftime(t1,t2))/(24*60*60)
    local monthdays = { 31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
    local day = tonumber(os.date("%w"))+1
    local day_num = tonumber(os.date("%d"))
    local remainder = day_num % 7
    start_day = day - (day_num % 7)
    if start_day < 0 then start_day = 7 + start_day end     
    month=os.date("%m")
    mdays=monthdays[tonumber(month)]
    mdaystm=mdays
    x=mdays+start_day
    dnum={}
    dnumh={}
    for i=1,x+14 do
    if i<=start_day then dnum[i]="  " 
    else dn=i-start_day
    if dn=="nil" then dn=0 end
    if dn<=9 then dn=(spacer .. dn) end
    if i>x then dn="" end
    dnum[i]=dn
    dnumh[i]=dn
    end
    end--for
    --###################################################
    --print calendar titles
    --###################################################
    cairo_select_font_face (cr, tfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, tfontsize);
    cairo_set_source_rgba (cr,tred,tgreen,tblue,talpha)
    cairo_move_to (cr, across, down)
    cairo_show_text (cr, "SU")
    cairo_move_to (cr, across+(gaph*1), down)
    cairo_show_text (cr, "MO")
    cairo_move_to (cr, across+(gaph*2), down)
    cairo_show_text (cr, "TU")
    cairo_move_to (cr, across+(gaph*3), down)
    cairo_show_text (cr, "WE")
    cairo_move_to (cr, across+(gaph*4), down)
    cairo_show_text (cr, "TH")
    cairo_move_to (cr, across+(gaph*5), down)
    cairo_show_text (cr, "FR")
    cairo_move_to (cr, across+(gaph*6), down)
    cairo_show_text (cr, "SA")
    --print calendar numbers
    for i=1,42 do
    if dnum[i]==(spacer .. tonumber(os.date("%d"))) or dnum[i]==(tonumber(os.date("%d")))
    then dnum[i]=""
    else dnum[i]=dnum[i]
    end 
    end
    cairo_select_font_face (cr, mfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, mfontsize);
    cairo_set_source_rgba (cr,bred,bgreen,bblue,balpha)
    --first line
    cairo_move_to (cr, across, down+gapt)
    cairo_show_text (cr, dnum[1])
    cairo_move_to (cr, across+(gaph*1), down+gapt)
    cairo_show_text (cr, dnum[2])
    cairo_move_to (cr, across+(gaph*2), down+gapt)
    cairo_show_text (cr, dnum[3])
    cairo_move_to (cr, across+(gaph*3), down+gapt)
    cairo_show_text (cr, dnum[4])
    cairo_move_to (cr, across+(gaph*4), down+gapt)
    cairo_show_text (cr, dnum[5])
    cairo_move_to (cr, across+(gaph*5), down+gapt)
    cairo_show_text (cr, dnum[6])
    cairo_move_to (cr, across+(gaph*6), down+gapt)
    cairo_show_text (cr, dnum[7])
    --second line
    cairo_move_to (cr, across, down+gapt+gapl)
    cairo_show_text (cr, dnum[8])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl)
    cairo_show_text (cr, dnum[9])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl)
    cairo_show_text (cr, dnum[10])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl)
    cairo_show_text (cr, dnum[11])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl)
    cairo_show_text (cr, dnum[12])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl)
    cairo_show_text (cr, dnum[13])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl)
    cairo_show_text (cr, dnum[14])
    --third line
    cairo_move_to (cr, across, down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[15])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[16])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[17])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[18])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[19])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[20])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnum[21])
    --fourth line
    cairo_move_to (cr, across, down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[22])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[23])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[24])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[25])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[26])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[27])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[28])
    --fifth line
    cairo_move_to (cr, across, down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[29])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[30])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[31])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[32])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[33])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[34])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnum[35])
    --indicator--------------------
    for i=1,42 do
    if dnumh[i]==(spacer .. tonumber(os.date("%d"))) or dnumh[i]==(tonumber(os.date("%d")))
    then dnumh[i]=dnumh[i] 
    else dnumh[i]="  " 
    end 
    end
    cairo_select_font_face (cr, hfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (cr, hfontsize);
    cairo_set_source_rgba (cr,hred,hgreen,hblue,halpha)
    --first line
    cairo_move_to (cr, across, down+gapt)
    cairo_show_text (cr, dnumh[1])
    cairo_move_to (cr, across+(gaph*1), down+gapt)
    cairo_show_text (cr, dnumh[2])
    cairo_move_to (cr, across+(gaph*2), down+gapt)
    cairo_show_text (cr, dnumh[3])
    cairo_move_to (cr, across+(gaph*3), down+gapt)
    cairo_show_text (cr, dnumh[4])
    cairo_move_to (cr, across+(gaph*4), down+gapt)
    cairo_show_text (cr, dnumh[5])
    cairo_move_to (cr, across+(gaph*5), down+gapt)
    cairo_show_text (cr, dnumh[6])
    cairo_move_to (cr, across+(gaph*6), down+gapt)
    cairo_show_text (cr, dnumh[7])
    --second line
    cairo_move_to (cr, across, down+gapt+gapl)
    cairo_show_text (cr, dnumh[8])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl)
    cairo_show_text (cr, dnumh[9])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl)
    cairo_show_text (cr, dnumh[10])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl)
    cairo_show_text (cr, dnumh[11])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl)
    cairo_show_text (cr, dnumh[12])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl)
    cairo_show_text (cr, dnumh[13])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl)
    cairo_show_text (cr, dnumh[14])
    --third line
    cairo_move_to (cr, across, down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[15])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[16])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[17])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[18])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[19])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[20])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl)
    cairo_show_text (cr, dnumh[21])
    --fourth line
    cairo_move_to (cr, across, down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[22])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[23])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[24])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[25])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[26])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[27])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[28])
    --fifth line
    cairo_move_to (cr, across, down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[29])
    cairo_move_to (cr, across+(gaph*1), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[30])
    cairo_move_to (cr, across+(gaph*2), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[31])
    cairo_move_to (cr, across+(gaph*3), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[32])
    cairo_move_to (cr, across+(gaph*4), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[33])
    cairo_move_to (cr, across+(gaph*5), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[34])
    cairo_move_to (cr, across+(gaph*6), down+gapt+gapl+gapl+gapl+gapl)
    cairo_show_text (cr, dnumh[35])
    cairo_stroke (cr)
    --#################################################################################
    end--end if 5
    end--end main function


    the main font above is "Fairies wear boots" which is extremely unruly spacing wise...but still looks ok here I think

    call in conky like so
    Code:
    lua_load /home/lua/calendar.lua
    lua_draw_hook_pre draw_fig
    Last edited by mrpeachy; February 21st, 2011 at 07:56 AM.

  8. #16108
    Join Date
    Feb 2010
    Location
    QLD, Australia
    Beans
    479
    Distro
    Kubuntu 12.04 Precise Pangolin

    Re: Post your .conkyrc files w/ screenshots

    VinDSL;
    I've been trying to add the colored bargraphs that you have on your conky onto the conky on my laptop (running 11.04) but having a slight issue. Conky will start for a second or two then stop. No sign of the bargraphs at all. My conky is the one you have with some minor tweaks to suit. Is there something in the lua that should be adjusted?

    Can any one else help with this?

    ~.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
    
    ####
    ## 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_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
    
    ####
    ## My colors (suit yourself).
    #
    color0 White
    color1 Ivory
    color2 Ivory2
    color3 Ivory3
    color4 Tan1
    color5 Tan2
    color6 white
    color7 AntiqueWhite4
    color8 DarkSlateGray
    color9 Black
    
    ####
    ## Load Lua for shading (optional).
    ## Set the path to your script here.
    #
    lua_load ~/.conky/draw_bg.lua
    lua_draw_hook_pre draw_bg
    
    ####
    ## Load Lua for bargraphs (required).
    ## Set the path to your script here.
    #
    lua_load ~/.conky/bargraph_small.lua
    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 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}P4${offset 3}Extreme${offset 3}Edition${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}b${voffset -1}${font}${color6}${offset 5}Updates${alignr}${execi 5 aptitude search "~U" | wc -l | tail} 
    ##################
    ##  PROCESSORS  ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}PROCESSORS${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 4}${font StyleBats:size=10}${color2}k${voffset -2}${font}${color6}${offset 2}CPU1${offset 5}${cpu cpu1}%${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}${cpubar 4,153 cpu1}
    ##################
    ##    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}${if_match ${memperc}<=50}${color green}${else}${if_match ${memperc}<=70}${color orange}${else}${if_match ${memperc}>70}${color red}${endif}${endif}${endif}${membar 4,230}
    ##################
    ##     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}ROOT${goto 95}${fs_used /}${goto 133}/${offset 5}${fs_size /}${alignr}${fs_free_perc /}%
    ${color7}${alignr 2}${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_bar 4,230 /}
    
    ${voffset 4}${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}${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_bar 4,230 /home}
    ##################
    # 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    ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${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}${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}
    ##################
    ##   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=NZXX0069}${font}
    #${voffset 0}${font Ubuntu:size=24}${color4}${alignc}${execi 1800 conkyForecast --location=NZXX0069 --datatype=CT}${font}
    #${voffset 15}${goto 20}${font ConkyWindNESW:style=Bold:size=38}${color2}${execi 1800 conkyForecast --location=NZXX0069 --datatype=BS}${font}${voffset -40}#${goto 95}${font ConkyWeather:style=Bold:size=45}${execi 1800 conkyForecast --location=NZXX0069 --datatype=WF}${font}${voffset -36}${goto 185}${font MoonPhases:size=30}${execi 1800 conkyForecast --location=NZXX0069 --datatype=MF}${font}
    #${voffset 6}${goto 28}${font}${color6}${execpi 1800 conkyForecast --location=NZXX0069 --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=NZXX0069 --imperial --datatype=LT --centeredwidth=4 -iu}${execpi 1800 conkyForecast --location=NZXX0069 --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=NZXX0069 --datatype=DW --startday=1 --shortweekday}${goto 89}${execi 1800 conkyForecast --location=NZXX0069 --datatype=DW --startday=2 --shortweekday}${goto 142}${execi 1800 conkyForecast --location=NZXX0069 --datatype=DW --startday=3 --shortweekday}${goto 196}${execi 1800 conkyForecast --location=NZXX0069 --datatype=DW --startday=4 --shortweekday}
    #${voffset 0}${goto 25}${font ConkyWeather:size=32}${color2}${execi 1800 conkyForecast --location=NZXX0069 --datatype=WF --startday=1 --endday=4 --spaces=1}${font}
    #${voffset 0}${goto 25}${font}${color6}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=HT --startday=1 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=LT --startday=1 --hideunits --centeredwidth=4 -iu}${goto 79}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=HT --startday=2 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=LT --startday=2 --hideunits --centeredwidth=4 -iu}${goto 133}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=HT --startday=3 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=LT --startday=3 --hideunits --centeredwidth=4 -iu}${goto 187}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=HT --startday=4 --hideunits --centeredwidth=4 -iu}/${offset 4}${execi 1800 conkyForecast --location=NZXX0069 --imperial --datatype=LT --startday=4 --hideunits --centeredwidth=4 -iu}
    ##################
    ##     TIME     ##
    ##################
    ${voffset 6}${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=32}${color3}${alignc 7}${time %l:%M%p}${font}${else}${if_match ${time %l}>=10}${voffset -4}${font RadioSpace:size=32}${color3}${alignc -1}${time %l:%M%p}${font}${endif}${endif}
    ${voffset 0}${font LiberationSans:bold:size=10}${color4}${alignc}${offset 30}DAD${offset -30}${voffset 15}${tztime Australia/Queensland %H:%M}${color3}${offset 12}|${voffset -15}${offset -4}|${offset 10}${color4}Hoggad${offset -40}${voffset 15}${tztime America/Rainy_River %H:%M}${font}
    ##################
    ##   CALENDAR   ##
    ##################
    ${voffset 6}${font WenQuanYiMicroHei:bold:size=8.75}${color4}DATE${offset 8}${color8}${voffset -2}${hr 2}${font}
    ${voffset 18}${font LiberationMono:size=8}${color3}${alignc 67}${time %A}${font}
    ${voffset -3}${font LiberationMono:size=22}${color4}${alignc 67}${time %d}${font}
    ${voffset -1}${font LiberationMono:size=8}${color3}${alignc 67}${time %B}${font}
    ${voffset -3}${font LiberationMono:size=8}${color3}${alignc 67}${time %Y}${font}
    ${voffset -79}${font CutOutsFor3DFX:size=64}${color3}${alignc 105}2${font}
    ${voffset -69}${font LiberationMono:size=8}${color3}${execpi 1800 VinDSL_Cal_4= cal -h | sed '1d' | sed s/^/"\$\{offset 97"\}/ | sed '/^ *$/d' | sed 's/\<'"$(date +%-d)"'\>/${color4}&${color3}/'}${font}
    ~/.conky/bargraph_small.lua
    Code:
    --[[
    BARGRAPH WIDGET
    v2.1 by wlourf (07 Jan. 2011)
    this widget draws a bargraph with different effects 
    http://u-scripts.blogspot.com/2010/07/bargraph-widget.html
        
    To call the script in a conky, use, before TEXT
        lua_load /path/to/the/script/bargraph.lua
        lua_draw_hook_pre main_rings
    and add one line (blank or not) after TEXT
        
    Parameters are :
    3 parameters are mandatory
    name - the name of the conky variable to display, for example for {$cpu cpu0}, just write name="cpu"
    arg  - the argument of the above variable, for example for {$cpu cpu0}, just write arg="cpu0"
           arg can be a numerical value if name=""
    max  - the maximum value the above variable can reach, for example, for {$cpu cpu0}, just write max=100
        
    Optional parameters:
    x,y      - coordinates of the starting point of the bar, default = middle of the conky window
    cap      - end of cap line, ossibles values are r,b,s (for round, butt, square), default="b"
            http://www.cairographics.org/samples/set_line_cap/
    angle      - angle of rotation of the bar in degress, default = 0 (i.e. a vertical bar)
            set to 90 for an horizontal bar
    skew_x      - skew bar around x axis, default = 0
    skew_y      - skew bar around y axis, default = 0
    blocks    - number of blocks to display for a bar (values >0) , default= 10
    height      - height of a block, default=10 pixels
    width      - width of a block, default=20 pixels
    space      - space between 2 blocks, default=2 pixels
    angle_bar - this angle is used to draw a bar on a circular way (ok, this is no more a bar !) default=0
    radius      - for cicular bars, internal radius, default=0
            with radius, parameter width has no more effect.
    
    Colours below are defined into braces {colour in hexadecimal, alpha}
    fg_colour    - colour of a block ON, default= {0x00FF00,1}
    bg_colour    - colour of a block OFF, default = {0x00FF00,0.5}
    alarm         - threshold, values after this threshold will use alarm_colour colour , default=max
    alarm_colour - colour of a block greater than alarm, default=fg_colour
    smooth         - (true or false), create a gradient from fg_colour to bg_colour, default=false 
    mid_colour   - colours to add to gradient, with this syntax {position into the gradient (0 to1), colour hexa, alpha}
               for example, this table {{0.25,0xff0000,1},{0.5,0x00ff00,1},{0.75,0x0000ff,1}} will add
               3 colours to gradient created by fg_colour and alarm_colour, default=no mid_colour
    led_effect   - add LED effects to each block, default=no led_effect
               if smooth=true, led_effect is not used
               possibles values : "r","a","e" for radial, parallel, perdendicular to the bar (just try!)
               led_effect has to be used with theses colours :
    fg_led         - middle colour of a block ON, default = fg_colour
    bg_led         - middle colour of a block OFF, default = bg_colour
    alarm_led    - middle colour of a block > ALARM,  default = alarm_colour
    
    reflection parameters, not available for circular bars
    reflection_alpha  - add a reflection effect (values from 0 to 1) default = 0 = no reflection
                other values = starting opacity
    reflection_scale  - scale of the reflection (default = 1 = height of text)
    reflection_length - length of reflection, define where the opacity will be set to zero
                values from 0 to 1, default =1
    reflection      - position of reflection, relative to a vertical bar, default="b"
                possibles values are : "b","t","l","r" for bottom, top, left, right
    draw_me           - if set to false, text is not drawn (default = true or 1)
                it can be used with a conky string, if the string returns 1, the text is drawn :
                example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",
    
    v1.0 (10 Feb. 2010) original release
    v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value    
    v1.2 (28 Feb. 2010) just renamed the widget to bargraph
    v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way
    v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables
    v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"
    
    --      This program is free software; you can redistribute it and/or modify
    --      it under the terms of the GNU General Public License as published by
    --      the Free Software Foundation version 3 (GPLv3)
    --     
    --      This program is distributed in the hope that it will be useful,
    --      but WITHOUT ANY WARRANTY; without even the implied warranty of
    --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    --      GNU General Public License for more details.
    --     
    --      You should have received a copy of the GNU General Public License
    --      along with this program; if not, write to the Free Software
    --      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    --      MA 02110-1301, USA.        
    
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    
    function conky_main_bars()
        local bars_settings={
            {    --[ Graph for CPU1 ]--
                name="cpu",
                arg="cpu1",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=78,y=157,
                blocks=56,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for CPU2 ]--
                name="cpu",
                arg="cpu2",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=78,y=171,
                blocks=56,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for Memory ]--
                name="memperc",
                arg="",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=220,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for Root ]--
                            name="fs_used_perc",
                arg="/",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=267,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },    
            {    --[ Graph for Home ]--
                name="fs_used_perc",
                arg="/home",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=295,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },    
                {    --[ Graph for Swap ]--
                            name="swapperc",
                arg="",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=323,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
             }    
        
    -----------END OF PARAMETERS--------------
    
    
        
        if conky_window == nil then return end
        
        local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
        
        cr = cairo_create(cs)    
        --prevent segmentation error when reading cpu state
        if tonumber(conky_parse('${updates}'))>3 then
            for i in pairs(bars_settings) do
                
                draw_multi_bar_graph(bars_settings[i])
                
            end
        end
        cairo_destroy(cr)
        cairo_surface_destroy(cs)
        cr=nil
    
    end
    
    
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        if t.draw_me == true then t.draw_me = nil end
        if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end    
        if t.name==nil and t.arg==nil then 
            print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ") 
            return
        end
        if t.max==nil then
            print ("No maximum value defined, use 'max'")
            return
        end
        if t.name==nil then t.name="" end
        if t.arg==nil then t.arg="" end
    
        --set default values    
        if t.x == nil        then t.x = conky_window.width/2 end
        if t.y == nil        then t.y = conky_window.height/2 end
        if t.blocks == nil    then t.blocks=10 end
        if t.height == nil    then t.height=10 end
        if t.angle == nil     then t.angle=0 end
        t.angle = t.angle*math.pi/180
        --line cap style
        if t.cap==nil        then t.cap = "b" end
        local cap="b"
        for i,v in ipairs({"s","r","b"}) do 
            if v==t.cap then cap=v end
        end
        local delta=0
        if t.cap=="r" or t.cap=="s" then delta = t.height end
        if cap=="s" then     cap = CAIRO_LINE_CAP_SQUARE
        elseif cap=="r" then
            cap = CAIRO_LINE_CAP_ROUND
        elseif cap=="b" then
            cap = CAIRO_LINE_CAP_BUTT
        end
        --end line cap style
        --if t.led_effect == nil    then t.led_effect="r" end
        if t.width == nil    then t.width=20 end
        if t.space == nil    then t.space=2 end
        if t.radius == nil    then t.radius=0 end
        if t.angle_bar == nil    then t.angle_bar=0 end
        t.angle_bar = t.angle_bar*math.pi/360 --halt angle
        
        --colours
        if t.bg_colour == nil     then t.bg_colour = {0x00FF00,0.5} end
        if #t.bg_colour~=2         then t.bg_colour = {0x00FF00,0.5} end
        if t.fg_colour == nil     then t.fg_colour = {0x00FF00,1} end
        if #t.fg_colour~=2         then t.fg_colour = {0x00FF00,1} end
        if t.alarm_colour == nil     then t.alarm_colour = t.fg_colour end
        if #t.alarm_colour~=2         then t.alarm_colour = t.fg_colour end
    
        if t.mid_colour ~= nil then    
            for i=1, #t.mid_colour do    
                if #t.mid_colour[i]~=3 then 
                    print ("error in mid_color table")
                    t.mid_colour[i]={1,0xFFFFFF,1} 
                end
            end
        end
        
        if t.bg_led ~= nil and #t.bg_led~=2    then t.bg_led = t.bg_colour end
        if t.fg_led ~= nil and #t.fg_led~=2    then t.fg_led = t.fg_colour end
        if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end
        
        if t.led_effect~=nil then
            if t.bg_led == nil then t.bg_led = t.bg_colour end
            if t.fg_led == nil     then t.fg_led = t.fg_colour end
            if t.alarm_led == nil  then t.alarm_led = t.fg_led end
        end
        
    
        if t.alarm==nil then t.alarm = t.max end --0.8*t.max end
        if t.smooth == nil then t.smooth = false end
    
        if t.skew_x == nil then 
            t.skew_x=0 
        else
            t.skew_x = math.pi*t.skew_x/180    
        end
        if t.skew_y == nil then 
            t.skew_y=0
        else
            t.skew_y = math.pi*t.skew_y/180    
        end
        
        if t.reflection_alpha==nil then t.reflection_alpha=0 end
        if t.reflection_length==nil then t.reflection_length=1 end
        if t.reflection_scale==nil then t.reflection_scale=1 end
        
        --end of default values
        
    
         local function rgb_to_r_g_b(col_a)
            return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2]
        end
        
        
        --functions used to create patterns
    
        local function create_smooth_linear_gradient(x0,y0,x1,y1)
            local pat = cairo_pattern_create_linear (x0,y0,x1,y1)
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
            if t.mid_colour ~=nil then
                for i=1, #t.mid_colour do
                    cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
                end
            end
            return pat
        end
    
        local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1)
            local pat =  cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
            if t.mid_colour ~=nil then
                for i=1, #t.mid_colour do
                    cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
                end
            end
            return pat
        end
        
        local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led)
            local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0)
            cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp))
            cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
            cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp))
            return pat
        end
    
        local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode)
            local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
            if mode==3 then
                cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp))                
                cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
                cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
            else
                cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led))
                cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
            end
            return pat
        end
    
    
    
    
    
    
        local function draw_single_bar()
            --this fucntion is used for bars with a single block (blocks=1) but 
            --the drawing is cut in 3 blocks : value/alarm/background
            --not zvzimzblr for circular bar
            local function create_pattern(col_alp,col_led,bg)
                local pat
                
                if not t.smooth then
                    if t.led_effect=="e" then
                        pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                    elseif t.led_effect=="a" then
                        pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led)
                    elseif  t.led_effect=="r" then
                        pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2)
                    else
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                    end
                else
                    if bg then
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                    else
                        pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height)
                    end
                end
                return pat
            end
            
            local y1=-t.height*pct/100
            local y2,y3
            if pct>(100*t.alarm/t.max) then 
                y1 = -t.height*t.alarm/100
                y2 = -t.height*pct/100
                if t.smooth then y1=y2 end
            end
            
            if t.angle_bar==0 then
            
                --block for fg value
                local pat = create_pattern(t.fg_colour,t.fg_led,false)
                cairo_set_source(cr,pat)
                cairo_rectangle(cr,0,0,t.width,y1)
                cairo_fill(cr)
                cairo_pattern_destroy(pat)
            
                -- block for alarm value            
                if not t.smooth and y2 ~=nil then 
                    pat = create_pattern(t.alarm_colour,t.alarm_led,false)
                    cairo_set_source(cr,pat)
                    cairo_rectangle(cr,0,y1,t.width,y2-y1)
                    cairo_fill(cr)
                    y3=y2
                    cairo_pattern_destroy(pat)
                else
                    y2,y3=y1,y1
                end
                -- block for bg value
                cairo_rectangle(cr,0,y2,t.width,-t.height-y3)
                pat = create_pattern(t.bg_colour,t.bg_led,true)
                cairo_set_source(cr,pat)
                cairo_pattern_destroy(pat)
                cairo_fill(cr)
            end        
        end  --end single bar
        
    
    
    
    
    
        local function draw_multi_bar()
            --function used for bars with 2 or more blocks
            for pt = 1,t.blocks do 
                --set block y
                local y1 = -(pt-1)*(t.height+t.space)
                local light_on=false
                
                --set colors
                local col_alp = t.bg_colour
                local col_led = t.bg_led
                if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block
                    if pct>=(pcb*(pt-1))  then 
                        light_on = true
                        col_alp = t.fg_colour
                        col_led = t.fg_led
                        if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then 
                            col_alp = t.alarm_colour 
                            col_led = t.alarm_led 
                        end
                    end
                end
    
                --set colors
                --have to try to create gradients outside the loop ?
                local pat 
                
                if not t.smooth then
                    if t.angle_bar==0 then
                        if t.led_effect=="e" then
                            pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                        elseif t.led_effect=="a" then
                            pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led)                    
                        elseif  t.led_effect=="r" then
                            pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2)    
                        else
                            pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                        end
                    else
                         if t.led_effect=="a"  then
                             pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1),
                                                             0, 0, t.radius+(t.height+t.space)*(pt),                         
                                                 col_alp,col_led,3)    
                        else
                            pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))                    
                        end
                        
                    end
                else
                    
                    if light_on then
                        if t.angle_bar==0 then
                            pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space))
                        else
                            pat = create_smooth_radial_gradient(0, 0, (t.height+t.space),  0,0,(t.blocks+1)*(t.height+t.space),2)
                        end
                    else        
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                    end
                end
                cairo_set_source (cr, pat)
                cairo_pattern_destroy(pat)
    
                --draw a block
                if t.angle_bar==0 then
                    cairo_move_to(cr,0,y1)
                    cairo_line_to(cr,t.width,y1)
                else        
                    cairo_arc( cr,0,0,
                        t.radius+(t.height+t.space)*(pt)-t.height/2,
                         -t.angle_bar -math.pi/2 ,
                         t.angle_bar -math.pi/2)
                end
                cairo_stroke(cr)
            end    
        end
        
        
        
        
        local function setup_bar_graph()
            --function used to retrieve the value to display and to set the cairo structure
            if t.blocks ~=1 then t.y=t.y-t.height/2 end
            
            local value = 0
            if t.name ~="" then
                value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
                --$to_bytes doesn't work when value has a decimal point,
                --https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f
                --http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310
                --conky bug?
                --value = (conky_parse(string.format('${%s %s}', t.name, t.arg)))
                --if string.match(value,"%w") then
                --    value = conky_parse(string.format('${to_bytes %s}',value))
                --end
            else
                value = tonumber(t.arg)
            end
    
            if value==nil then value =0 end
            
            pct = 100*value/t.max
            pcb = 100/t.blocks
            
            cairo_set_line_width (cr, t.height)
            cairo_set_line_cap  (cr, cap)
            cairo_translate(cr,t.x,t.y)
            cairo_rotate(cr,t.angle)
    
            local matrix0 = cairo_matrix_t:create()
            tolua.takeownership(matrix0)
            cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)
            cairo_transform(cr,matrix0)
    
        
            
            --call the drawing function for blocks
            if t.blocks==1 and t.angle_bar==0 then
                draw_single_bar()
                if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end
            else
                draw_multi_bar()
            end
    
            --dot for reminder
            --[[
            if t.blocks ~=1 then
                cairo_set_source_rgba(cr,1,0,0,1)
                cairo_arc(cr,0,t.height/2,3,0,2*math.pi)
                cairo_fill(cr)
            else
                cairo_set_source_rgba(cr,1,0,0,1)
                cairo_arc(cr,0,0,3,0,2*math.pi)
                cairo_fill(cr)
            end]]
            
            --call the drawing function for reflection and prepare the mask used        
            if t.reflection_alpha>0 and t.angle_bar==0 then
                local pat2
                local matrix1 = cairo_matrix_t:create()
                tolua.takeownership(matrix1)
                if t.angle_bar==0 then
                    pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)}
                    if t.reflection=="t" then
                        cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2)
                        pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2)
                    elseif t.reflection=="r" then
                        cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0)
                        pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0)
                    elseif t.reflection=="l" then
                        cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0)
                        pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0)
                    else --bottom
                        cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2)
                        pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks))
                    end
                end
                cairo_transform(cr,matrix1)
    
                if t.blocks==1 and t.angle_bar==0 then
                    draw_single_bar()
                    cairo_translate(cr,0,-t.height/2) 
                else
                    draw_multi_bar()
                end
                
                
                cairo_set_line_width(cr,0.01)
                cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha)
                cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)
                if t.angle_bar==0 then
                    cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4])
                end
                cairo_clip_preserve(cr)
                cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
                cairo_stroke(cr)
                cairo_mask(cr,pat2)
                cairo_pattern_destroy(pat2)
                cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
                
            end --reflection
            pct,pcb=nil
        end --setup_bar_graph()
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    Ubuntu 12.04
    “To mess up a Linux box, you need to work at it; to mess up your Windows
    box, you just need to work on it”.
    TrinhamTechnologies.com.au

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

    Re: Post your .conkyrc files w/ screenshots

    you need the mother of all combined lua scripts
    Code:
    --[[
    This script combines the background drawing lua script and the ring drawing lua script both by londonali1010 and the bargraph widget by Wlourf!
    To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.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 = 50
    
    -- 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 = -205
    --##################################################################################################
    --[[
    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='cpu',
            -- "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.1,
            -- "fg_colour" is the colour of the indicator part of the ring.
            fg_colour=0xffffff,
            -- "fg_alpha" is the alpha value of the indicator part of the ring.
            fg_alpha=0.2,
            -- "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=100, y=100,
            -- "radius" is the radius of the ring.
            radius=30,
            -- "thickness" is the thickness of the ring, centred around the radius.
            thickness=10,
            -- "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='cpu',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0xffffff,
            fg_alpha=0.4,
            x=100, y=200,
            radius=30,
            thickness=10,
            start_angle=0,
            end_angle=360
        },
        {
            name='memperc',
            arg='',
            max=100,
            bg_colour=0xffffff,
            bg_alpha=0.1,
            fg_colour=0xffffff,
            fg_alpha=0.8,
            x=100, y=300,
            radius=30,
            thickness=10,
            start_angle=0,
            end_angle=360
        },
    }
    
    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()
    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)
    local updates=tonumber(conky_parse('${updates}'))
    if updates > 5 then
    --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)
    --WLOURFS BARGRAPH WIDGET SETUP  ################################################
    local bars_settings={
            {    --[ Graph for CPU1 ]--
                name="cpu",
                arg="cpu",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=78,y=157,
                blocks=56,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for CPU2 ]--
                name="cpu",
                arg="cpu",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=78,y=171,
                blocks=56,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for Memory ]--
                name="memperc",
                arg="",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=220,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
            {    --[ Graph for Root ]--
                            name="fs_used_perc",
                arg="/",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=267,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },    
            {    --[ Graph for Home ]--
                name="fs_used_perc",
                arg="/home",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=295,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },    
                {    --[ Graph for Swap ]--
                            name="swapperc",
                arg="",
                max=100,
                alarm=50,
                alarm_colour={0xFF0000,0.72},
                bg_colour={0xFFFFFF,0.25},
                fg_colour={0x00FF00,0.55},
                mid_colour={{0.45,0xFFFF00,0.70}},
                x=15,y=323,
                blocks=77,
                space=1,
                height=2,width=5,
                angle=90,
                smooth=true
                },
             }    
        
    -----------END OF PARAMETERS--------------
    for i in pairs(bars_settings) do
    draw_multi_bar_graph(bars_settings[i])
    end
    
    --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
    end
    
    function draw_multi_bar_graph(t)
        cairo_save(cr)
        --check values
        if t.draw_me == true then t.draw_me = nil end
        if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end    
        if t.name==nil and t.arg==nil then 
            print ("No input values ... use parameters 'name' with 'arg' or only parameter 'arg' ") 
            return
        end
        if t.max==nil then
            print ("No maximum value defined, use 'max'")
            return
        end
        if t.name==nil then t.name="" end
        if t.arg==nil then t.arg="" end
    
        --set default values    
        if t.x == nil        then t.x = conky_window.width/2 end
        if t.y == nil        then t.y = conky_window.height/2 end
        if t.blocks == nil    then t.blocks=10 end
        if t.height == nil    then t.height=10 end
        if t.angle == nil     then t.angle=0 end
        t.angle = t.angle*math.pi/180
        --line cap style
        if t.cap==nil        then t.cap = "b" end
        local cap="b"
        for i,v in ipairs({"s","r","b"}) do 
            if v==t.cap then cap=v end
        end
        local delta=0
        if t.cap=="r" or t.cap=="s" then delta = t.height end
        if cap=="s" then     cap = CAIRO_LINE_CAP_SQUARE
        elseif cap=="r" then
            cap = CAIRO_LINE_CAP_ROUND
        elseif cap=="b" then
            cap = CAIRO_LINE_CAP_BUTT
        end
        --end line cap style
        --if t.led_effect == nil    then t.led_effect="r" end
        if t.width == nil    then t.width=20 end
        if t.space == nil    then t.space=2 end
        if t.radius == nil    then t.radius=0 end
        if t.angle_bar == nil    then t.angle_bar=0 end
        t.angle_bar = t.angle_bar*math.pi/360 --halt angle
        
        --colours
        if t.bg_colour == nil     then t.bg_colour = {0x00FF00,0.5} end
        if #t.bg_colour~=2         then t.bg_colour = {0x00FF00,0.5} end
        if t.fg_colour == nil     then t.fg_colour = {0x00FF00,1} end
        if #t.fg_colour~=2         then t.fg_colour = {0x00FF00,1} end
        if t.alarm_colour == nil     then t.alarm_colour = t.fg_colour end
        if #t.alarm_colour~=2         then t.alarm_colour = t.fg_colour end
    
        if t.mid_colour ~= nil then    
            for i=1, #t.mid_colour do    
                if #t.mid_colour[i]~=3 then 
                    print ("error in mid_color table")
                    t.mid_colour[i]={1,0xFFFFFF,1} 
                end
            end
        end
        
        if t.bg_led ~= nil and #t.bg_led~=2    then t.bg_led = t.bg_colour end
        if t.fg_led ~= nil and #t.fg_led~=2    then t.fg_led = t.fg_colour end
        if t.alarm_led~= nil and #t.alarm_led~=2 then t.alarm_led = t.fg_led end
        
        if t.led_effect~=nil then
            if t.bg_led == nil then t.bg_led = t.bg_colour end
            if t.fg_led == nil     then t.fg_led = t.fg_colour end
            if t.alarm_led == nil  then t.alarm_led = t.fg_led end
        end
        
    
        if t.alarm==nil then t.alarm = t.max end --0.8*t.max end
        if t.smooth == nil then t.smooth = false end
    
        if t.skew_x == nil then 
            t.skew_x=0 
        else
            t.skew_x = math.pi*t.skew_x/180    
        end
        if t.skew_y == nil then 
            t.skew_y=0
        else
            t.skew_y = math.pi*t.skew_y/180    
        end
        
        if t.reflection_alpha==nil then t.reflection_alpha=0 end
        if t.reflection_length==nil then t.reflection_length=1 end
        if t.reflection_scale==nil then t.reflection_scale=1 end
        
        --end of default values
        
    
         local function rgb_to_r_g_b(col_a)
            return ((col_a[1] / 0x10000) % 0x100) / 255., ((col_a[1] / 0x100) % 0x100) / 255., (col_a[1] % 0x100) / 255., col_a[2]
        end
        
        
        --functions used to create patterns
    
        local function create_smooth_linear_gradient(x0,y0,x1,y1)
            local pat = cairo_pattern_create_linear (x0,y0,x1,y1)
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
            if t.mid_colour ~=nil then
                for i=1, #t.mid_colour do
                    cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
                end
            end
            return pat
        end
    
        local function create_smooth_radial_gradient(x0,y0,r0,x1,y1,r1)
            local pat =  cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
            cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(t.fg_colour))
            cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(t.alarm_colour))
            if t.mid_colour ~=nil then
                for i=1, #t.mid_colour do
                    cairo_pattern_add_color_stop_rgba (pat, t.mid_colour[i][1], rgb_to_r_g_b({t.mid_colour[i][2],t.mid_colour[i][3]}))
                end
            end
            return pat
        end
        
        local function create_led_linear_gradient(x0,y0,x1,y1,col_alp,col_led)
            local pat = cairo_pattern_create_linear (x0,y0,x1,y1) ---delta, 0,delta+ t.width,0)
            cairo_pattern_add_color_stop_rgba (pat, 0.0, rgb_to_r_g_b(col_alp))
            cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
            cairo_pattern_add_color_stop_rgba (pat, 1.0, rgb_to_r_g_b(col_alp))
            return pat
        end
    
        local function create_led_radial_gradient(x0,y0,r0,x1,y1,r1,col_alp,col_led,mode)
            local pat = cairo_pattern_create_radial (x0,y0,r0,x1,y1,r1)
            if mode==3 then
                cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_alp))                
                cairo_pattern_add_color_stop_rgba (pat, 0.5, rgb_to_r_g_b(col_led))
                cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
            else
                cairo_pattern_add_color_stop_rgba (pat, 0, rgb_to_r_g_b(col_led))
                cairo_pattern_add_color_stop_rgba (pat, 1, rgb_to_r_g_b(col_alp))                
            end
            return pat
        end
    
    
    
    
    
    
        local function draw_single_bar()
            --this fucntion is used for bars with a single block (blocks=1) but 
            --the drawing is cut in 3 blocks : value/alarm/background
            --not zvzimzblr for circular bar
            local function create_pattern(col_alp,col_led,bg)
                local pat
                
                if not t.smooth then
                    if t.led_effect=="e" then
                        pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                    elseif t.led_effect=="a" then
                        pat = create_led_linear_gradient (t.width/2, 0,t.width/2,-t.height,col_alp,col_led)
                    elseif  t.led_effect=="r" then
                        pat = create_led_radial_gradient (t.width/2, -t.height/2, 0, t.width/2,-t.height/2,t.height/1.5,col_alp,col_led,2)
                    else
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                    end
                else
                    if bg then
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                    else
                        pat = create_smooth_linear_gradient(t.width/2, 0, t.width/2,-t.height)
                    end
                end
                return pat
            end
            
            local y1=-t.height*pct/100
            local y2,y3
            if pct>(100*t.alarm/t.max) then 
                y1 = -t.height*t.alarm/100
                y2 = -t.height*pct/100
                if t.smooth then y1=y2 end
            end
            
            if t.angle_bar==0 then
            
                --block for fg value
                local pat = create_pattern(t.fg_colour,t.fg_led,false)
                cairo_set_source(cr,pat)
                cairo_rectangle(cr,0,0,t.width,y1)
                cairo_fill(cr)
                cairo_pattern_destroy(pat)
            
                -- block for alarm value            
                if not t.smooth and y2 ~=nil then 
                    pat = create_pattern(t.alarm_colour,t.alarm_led,false)
                    cairo_set_source(cr,pat)
                    cairo_rectangle(cr,0,y1,t.width,y2-y1)
                    cairo_fill(cr)
                    y3=y2
                    cairo_pattern_destroy(pat)
                else
                    y2,y3=y1,y1
                end
                -- block for bg value
                cairo_rectangle(cr,0,y2,t.width,-t.height-y3)
                pat = create_pattern(t.bg_colour,t.bg_led,true)
                cairo_set_source(cr,pat)
                cairo_pattern_destroy(pat)
                cairo_fill(cr)
            end        
        end  --end single bar
        
    
    
    
    
    
        local function draw_multi_bar()
            --function used for bars with 2 or more blocks
            for pt = 1,t.blocks do 
                --set block y
                local y1 = -(pt-1)*(t.height+t.space)
                local light_on=false
                
                --set colors
                local col_alp = t.bg_colour
                local col_led = t.bg_led
                if pct>=(100/t.blocks) or pct>0 then --ligth on or not the block
                    if pct>=(pcb*(pt-1))  then 
                        light_on = true
                        col_alp = t.fg_colour
                        col_led = t.fg_led
                        if pct>=(100*t.alarm/t.max) and (pcb*pt)>(100*t.alarm/t.max) then 
                            col_alp = t.alarm_colour 
                            col_led = t.alarm_led 
                        end
                    end
                end
    
                --set colors
                --have to try to create gradients outside the loop ?
                local pat 
                
                if not t.smooth then
                    if t.angle_bar==0 then
                        if t.led_effect=="e" then
                            pat = create_led_linear_gradient (-delta, 0,delta+ t.width,0,col_alp,col_led)
                        elseif t.led_effect=="a" then
                            pat = create_led_linear_gradient (t.width/2, -t.height/2+y1,t.width/2,0+t.height/2+y1,col_alp,col_led)                    
                        elseif  t.led_effect=="r" then
                            pat = create_led_radial_gradient (t.width/2, y1, 0, t.width/2,y1,t.width/1.5,col_alp,col_led,2)    
                        else
                            pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))
                        end
                    else
                         if t.led_effect=="a"  then
                             pat = create_led_radial_gradient (0, 0, t.radius+(t.height+t.space)*(pt-1),
                                                             0, 0, t.radius+(t.height+t.space)*(pt),                         
                                                 col_alp,col_led,3)    
                        else
                            pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(col_alp))                    
                        end
                        
                    end
                else
                    
                    if light_on then
                        if t.angle_bar==0 then
                            pat = create_smooth_linear_gradient(t.width/2, t.height/2, t.width/2,-(t.blocks-0.5)*(t.height+t.space))
                        else
                            pat = create_smooth_radial_gradient(0, 0, (t.height+t.space),  0,0,(t.blocks+1)*(t.height+t.space),2)
                        end
                    else        
                        pat = cairo_pattern_create_rgba  (rgb_to_r_g_b(t.bg_colour))
                    end
                end
                cairo_set_source (cr, pat)
                cairo_pattern_destroy(pat)
    
                --draw a block
                if t.angle_bar==0 then
                    cairo_move_to(cr,0,y1)
                    cairo_line_to(cr,t.width,y1)
                else        
                    cairo_arc( cr,0,0,
                        t.radius+(t.height+t.space)*(pt)-t.height/2,
                         -t.angle_bar -math.pi/2 ,
                         t.angle_bar -math.pi/2)
                end
                cairo_stroke(cr)
            end    
        end
        
        
        
        
        local function setup_bar_graph()
            --function used to retrieve the value to display and to set the cairo structure
            if t.blocks ~=1 then t.y=t.y-t.height/2 end
            
            local value = 0
            if t.name ~="" then
                value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
                --$to_bytes doesn't work when value has a decimal point,
                --https://garage.maemo.org/plugins/ggit/browse.php/?p=monky;a=commitdiff;h=174c256c81a027a2ea406f5f37dc036fac0a524b;hp=d75e2db5ed3fc788fb8514121f67316ac3e5f29f
                --http://sourceforge.net/tracker/index.php?func=detail&aid=3000865&group_id=143975&atid=757310
                --conky bug?
                --value = (conky_parse(string.format('${%s %s}', t.name, t.arg)))
                --if string.match(value,"%w") then
                --    value = conky_parse(string.format('${to_bytes %s}',value))
                --end
            else
                value = tonumber(t.arg)
            end
    
            if value==nil then value =0 end
            
            pct = 100*value/t.max
            pcb = 100/t.blocks
            
            cairo_set_line_width (cr, t.height)
            cairo_set_line_cap  (cr, cap)
            cairo_translate(cr,t.x,t.y)
            cairo_rotate(cr,t.angle)
    
            local matrix0 = cairo_matrix_t:create()
            tolua.takeownership(matrix0)
            cairo_matrix_init (matrix0, 1,t.skew_y,t.skew_x,1,0,0)
            cairo_transform(cr,matrix0)
    
        
            
            --call the drawing function for blocks
            if t.blocks==1 and t.angle_bar==0 then
                draw_single_bar()
                if t.reflection=="t" or t.reflection=="b" then cairo_translate(cr,0,-t.height) end
            else
                draw_multi_bar()
            end
    
            --dot for reminder
            --[[
            if t.blocks ~=1 then
                cairo_set_source_rgba(cr,1,0,0,1)
                cairo_arc(cr,0,t.height/2,3,0,2*math.pi)
                cairo_fill(cr)
            else
                cairo_set_source_rgba(cr,1,0,0,1)
                cairo_arc(cr,0,0,3,0,2*math.pi)
                cairo_fill(cr)
            end]]
            
            --call the drawing function for reflection and prepare the mask used        
            if t.reflection_alpha>0 and t.angle_bar==0 then
                local pat2
                local matrix1 = cairo_matrix_t:create()
                tolua.takeownership(matrix1)
                if t.angle_bar==0 then
                    pts={-delta/2,(t.height+t.space)/2,t.width+delta,-(t.height+t.space)*(t.blocks)}
                    if t.reflection=="t" then
                        cairo_matrix_init (matrix1,1,0,0,-t.reflection_scale,0,-(t.height+t.space)*(t.blocks-0.5)*2*(t.reflection_scale+1)/2)
                        pat2 = cairo_pattern_create_linear (t.width/2,-(t.height+t.space)*(t.blocks),t.width/2,(t.height+t.space)/2)
                    elseif t.reflection=="r" then
                        cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,delta+2*t.width,0)
                        pat2 = cairo_pattern_create_linear (delta/2+t.width,0,-delta/2,0)
                    elseif t.reflection=="l" then
                        cairo_matrix_init (matrix1,-t.reflection_scale,0,0,1,-delta,0)
                        pat2 = cairo_pattern_create_linear (-delta/2,0,delta/2+t.width,-0)
                    else --bottom
                        cairo_matrix_init (matrix1,1,0,0,-1*t.reflection_scale,0,(t.height+t.space)*(t.reflection_scale+1)/2)
                        pat2 = cairo_pattern_create_linear (t.width/2,(t.height+t.space)/2,t.width/2,-(t.height+t.space)*(t.blocks))
                    end
                end
                cairo_transform(cr,matrix1)
    
                if t.blocks==1 and t.angle_bar==0 then
                    draw_single_bar()
                    cairo_translate(cr,0,-t.height/2) 
                else
                    draw_multi_bar()
                end
                
                
                cairo_set_line_width(cr,0.01)
                cairo_pattern_add_color_stop_rgba (pat2, 0,0,0,0,1-t.reflection_alpha)
                cairo_pattern_add_color_stop_rgba (pat2, t.reflection_length,0,0,0,1)
                if t.angle_bar==0 then
                    cairo_rectangle(cr,pts[1],pts[2],pts[3],pts[4])
                end
                cairo_clip_preserve(cr)
                cairo_set_operator(cr,CAIRO_OPERATOR_CLEAR)
                cairo_stroke(cr)
                cairo_mask(cr,pat2)
                cairo_pattern_destroy(pat2)
                cairo_set_operator(cr,CAIRO_OPERATOR_OVER)
                
            end --reflection
            pct,pcb=nil
        end --setup_bar_graph()
        
        --start here !
        setup_bar_graph()
        cairo_restore(cr)
    end
    its not pretty, and it contains some redundancy but it works
    a lua script has a main function...the one that is called in your conky rc.. in this case its called "combined"
    this is the function that conky runs each cycle...
    when you amalgamate scripts you need to identify which bits to put into the main function and which functions are outside and being called by the main function...
    Last edited by mrpeachy; February 21st, 2011 at 07:42 AM.

  10. #16110
    Join Date
    Oct 2009
    Location
    Under a rock
    Beans
    Hidden!

    Re: Post your .conkyrc files w/ screenshots

    slight mod to the calendar script
    you can now have the date highlight in a different font and fontsize like so

    script updated in original post
    fonts
    titles=321impact
    numbers=rebecca
    highlight=qubix
    Last edited by mrpeachy; February 21st, 2011 at 07:58 AM.

Page 1611 of 2294 FirstFirst ... 6111111151115611601160916101611161216131621166117112111 ... 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
  •