Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: How to remove bar border in Conky ?

  1. #1
    Join Date
    Jun 2019
    Beans
    13

    Question How to remove bar border in Conky ?

    Hi,

    How can I remove bar border in Conky ? So that this orange bar is not outlined by a black border anymore:



    thank you

  2. #2
    Join Date
    Mar 2017
    Location
    Gubertino
    Beans
    1,018
    Distro
    Xubuntu 18.04 Bionic Beaver

    Re: How to remove bar border in Conky ?

    Post your conky config....please.

  3. #3
    Join Date
    Jun 2019
    Beans
    13

    Re: How to remove bar border in Conky ?

    Quote Originally Posted by guber2 View Post
    Post your conky config....please.
    Code:
    alignment top_right
    background yes
    border_width 14
    border_inner_margin 0
    border_outer_margin 0
    cpu_avg_samples 0
    default_color white
    default_outline_color black
    default_shade_color black
    default_bar_size 0 7
    double_buffer yes
    draw_borders no
    draw_graph_borders no
    draw_outline no
    draw_shades no
    use_xft yes
    xftfont terminus:size=9
    gap_x 20
    gap_y 19,5
    minimum_size 200 100
    maximum_width 226
    net_avg_samples 2
    no_buffers yes
    out_to_console no
    out_to_stderr no
    extra_newline no
    own_window yes
    own_window_class Conky
    own_window_transparent no
    own_window_type override
    own_window_colour 474747
    stippled_borders 0
    update_interval 0.2
    uppercase no
    use_none spacer
    show_graph_scale no
    show_graph_range no
    top_cpu_separate false
    top_name_width 12
    
    ${voffset -29}
    ${offset -16}${color #d56002}${fs_bar 2,999}${color}
    ${voffset -10}
    ${font Terminus:size=9}/RAM Usage: $memperc%  $mem/$memmax 
    ${color #000000}${hr 7}
    ${voffset -27}
    ${color #d56002}${membar}${color}${offset -226}${color #000000}${cpubar cpu5}${color}
    ${font Terminus:size=9}/Swap Usage: $swapperc%  $swap/$swapmax 
    ${color #000000}${hr 7}
    ${voffset -27}
    ${color #d56002}${swapbar}${color}${offset -226}${color #000000}${cpubar cpu5}${color}

  4. #4
    Join Date
    Mar 2017
    Location
    Gubertino
    Beans
    1,018
    Distro
    Xubuntu 18.04 Bionic Beaver

    Re: How to remove bar border in Conky ?

    What you see is three conky objects on top of each other using $offset and $voffset
    1. Horizontal line height 7px ....${color #000000}${hr 7}
    2. membar .....${color #d56002}${membar}
    3. cpubar.....${color #000000}${cpubar cpu5}


    If you separate them out you will see the cpubar is drawing the black border....
    Code:
    TEXT
    ${color green}Horizontal line height 7px
    ${color #000000}${hr 7}
    
    ${color green}membar
    ${color #d56002}${membar}${color}
    
    ${color green}cpubar
    ${color #000000}${cpubar cpu}${color}
    Attachment 283544


    This config is using just $hr and $membar with a negative $voffset to overlay.
    Code:
    TEXT
    ${color green}Horizontal line & membar
    ${color #000000}${hr 7}
    ${voffset -28} 
    ${color #d56002}${membar}${color}
    Attachment 283545


    The colour of the bar graph border and the actual bar is the same and get's it's value from the config setting default_color
    or by preceeding with a color then returning to the default text color in the config section below "TEXT"
    eg ${color #d56002}${membar}${color}
    Last edited by guber2; July 3rd, 2019 at 04:03 AM.

  5. #5
    Join Date
    Jun 2019
    Beans
    13

    Re: How to remove bar border in Conky ?

    I did that because I needed to fill the bar with a black background.
    In any case, I have expressed myself wrongly, what I should have ask is how do I get this bar:



    do I need to start all over or can I get this result with what I've started ?
    Last edited by brianlopwe; July 3rd, 2019 at 04:54 AM.

  6. #6
    Join Date
    Mar 2017
    Location
    Gubertino
    Beans
    1,018
    Distro
    Xubuntu 18.04 Bionic Beaver

    Re: How to remove bar border in Conky ?

    Your pics aren't clear/large enough for me to see what you mean.
    You can attach pics when you reply in advanced mode.

    The border color and bar color are always the same unless you overlay another bar.
    Then the entire border will be the color of the overlay as in your first pic.
    Have you looked at lua to draw your graphs in conky?

  7. #7
    Join Date
    Jun 2019
    Beans
    13

    Re: How to remove bar border in Conky ?

    Here is the full picture:

    20180718_154239.jpg

    Just like mine except that the (orange) bar stay orange and is not outlined by the bar background.

    No I did not look at lua.

  8. #8
    Join Date
    Mar 2017
    Location
    Gubertino
    Beans
    1,018
    Distro
    Xubuntu 18.04 Bionic Beaver

    Re: How to remove bar border in Conky ?

    I use a lua script to draw bars for cpu and uploads/downloads.
    I don't understand lua but it's easy to adapt someone else's script.
    eg this script will draw bars for cpu and memperc.

    you just add this above the "TEXT" section of a conky config.
    Code:
    lua_load ~/Desktop/bargraph_cpu_mem.lua
    lua_draw_hook_post main_bars
    Using your path to the lua file.

    Then you start your conky and edit "x=35,y=9," line of bargraph_cpu_mem.lua in the relevant section to position the bar within your conky window.

    Here's an example.
    Save as luabars.conkyrc
    Code:
    ####
    ## Use XFT? Required to Force UTF8 (see below).
    #
    use_xft yes
    xftfont GE Inspira:bold:size=10
    xftalpha 0.8
    text_buffer_size 1024
    
    ####
    ## Force UTF8? Requires XFT (see above).
    ## Displays degree symbol, instead of °, etc.
    #
    override_utf8_locale yes
    
    ####
    ## Daemonize Conky, aka 'fork to background'.
    #
    background no
    
    ####
    ## Update interval in seconds.
    #
    update_interval 1.0
    
    ####
    ## This is the number of times Conky will update before quitting.
    ## Set to zero to run forever.
    #
    total_run_times 0
    
    ####
    ## Create own window instead of using desktop (required in nautilus)?
    #
    own_window yes
    own_window_colour 2D2D2D  # 252525
    own_window_title conky
    own_window_type normal
    own_window_transparent no
    own_window_hints undecorated,sticky,skip_taskbar,skip_pager,below
    default_color ACBACE
    own_window_argb_visual yes
    own_window_argb_value 195
    
    ####
    ## Use double buffering? Reduces flicker.
    #
    double_buffer yes
    
    ####
    ## Draw shades?
    #
    draw_shades no
    default_shade_color 000000
    
    ####
    ## Draw outlines?
    #
    draw_outline no
    #default_outline_color 000000
    
    ####
    ## 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 tr
    
    ####
    ## Minimum size of text area.
    #
    minimum_size 660
    maximum_width 300 
    
    ####
    ## Gap between text and screen borders.
    #
    gap_x 5
    gap_y 2
    
    ####
    ## 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 0
    border_outer_margin 0
    border_width 2
    
    ####
    ## 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 FF4040
    color5 FBE6B7 #text colour
    color6 Gray
    color7 AntiqueWhite4
    color8 F9A41E
    #color9 red
    color9 6A90EF #icon
    
    
    lua_load ~/Desktop/bargraph_cpu_mem.lua 
    lua_draw_hook_post main_bars
    
    
    
    TEXT
    CPU
    
    MEM
    Save as bargraph_cpu_mem.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 colurs to gradient created by fg_colour and alarm_colour, default=no mid_colour
    led_effect	- add LED effects to each block, default=no led_effect
    			  if smooth=true, led_effect is not used
    			  possibles values : "r","a","e" for radial, parallelel, perdendicular to the bar (just try!)
    			  led_effect has to be used with theses colours :
    fg_led		- middle colour of a block ON, default = fg_colour
    bg_led		- middle colour of a block OFF, default = bg_colour
    alarm_led	- middle colour of a block > ALARM,  default = alarm_colour
    
    reflection parameters, not avaimable for circular bars
    reflection_alpha    - add a reflection effect (values from 0 to 1) default = 0 = no reflection
                          other values = starting opacity
    reflection_scale    - scale of the reflection (default = 1 = height of text)
    reflection_length   - length of reflection, define where the opacity will be set to zero
    					  calues from 0 to 1, default =1
    reflection			- position of reflection, relative to a vertical bar, default="b"
    					  possibles values are : "b","t","l","r" for bottom, top, left, right
    draw_me     - if set to false, text is not drawn (default = true or 1)
                  it can be used with a conky string, if the string returns 1, the text is drawn :
                  example : "${if_empty ${wireless_essid wlan0}}${else}1$endif",
    
    v1.0 (10 Feb. 2010) original release
    v1.1 (13 Feb. 2010) numeric values can be passed instead conky stats with parameters name="", arg = numeric_value	
    v1.2 (28 Feb. 2010) just renamed the widget to bargraph
    v1.3 (03 Mar. 2010) added parameters radius & angle_bar to draw the bar in a circular way
    v2.0 (12 Jul. 2010) rewrite script + add reflection effects and parameters are now set into tables
    v2.1 (07 Jan. 2011) Add draw_me parameter and correct memory leaks, thanks to "Creamy Goodness"
    
    --      This program is free software; you can redistribute it and/or modify
    --      it under the terms of the GNU General Public License as published by
    --      the Free Software Foundation version 3 (GPLv3)
    --     
    --      This program is distributed in the hope that it will be useful,
    --      but WITHOUT ANY WARRANTY; without even the implied warranty of
    --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    --      GNU General Public License for more details.
    --     
    --      You should have received a copy of the GNU General Public License
    --      along with this program; if not, write to the Free Software
    --      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    --      MA 02110-1301, USA.		
    
    ]]
    
    require 'cairo'
    
    ----------------START OF PARAMETERS ----------
    function conky_main_bars()
    	local bars_settings={
    		{	--[ Graph for CPU1 ]--
    			name="cpu",
    			arg="cpu0",
    			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=35,y=9,
    			blocks=25,
    			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=70,y=32,
    --			blocks=25,
    --			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=35,y=43,
    			blocks=45,
    			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=263,
    			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=292,
    			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=319,
    			blocks=77,
    			space=1,
    			height=2,width=5,
    			angle=90,
    			smooth=true
    			},  ]]	
    --	        {	--[ Graph for Downspeed ]--
    --                        name="downspeedf",
    --			arg="eth0",
    --			max=500,
    --			alarm=400,
    --			alarm_colour={0xFF0000,0.72},
    --			bg_colour={0xFFFFFF,0.25},
    --			fg_colour={0x00FF00,0.55},
    --			mid_colour={{0.45,0xFFFF00,0.70}},
    --			x=200,y=13,
    --			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
    If you place both files on your Desktop you can then run....
    Code:
    conky -c ~/Desktop/luabars.conkyrc
    Should see ...
    Attachment 283548

    You can then edit and save bargraph_cpu_mem.lua while conky is running to see what changes do.
    Has 7 sections to draw bars starting at line #89 in the "START OF PARAMETERS" section.
    All are commented out except the cpu and mem sections.
    lua uses "--" to comment a line, or you can enclose multiple lines between --[[ and ]]
    The lua script shows both commenting methods.


    eg I can achieve a memperc flat bar like below by changing these lines.
    Attachment 283550
    Code:
    {	--[ Graph for Memory ]--
    			name="memperc",
    			arg="",
    			max=100,
    			alarm=85,
    			alarm_colour={0xFF0000,0.72},
    			bg_colour={0x000000,0.9},
    			fg_colour={0xFFA400,0.85},
    			mid_colour={{0.45,0xFFFF00,0.70}},
    			x=35,y=43,
    			blocks=45,
    			space=0,
    			height=2,width=5,
    			angle=90,
    			smooth=false,
    			},
    Last edited by guber2; July 6th, 2019 at 02:59 AM.

  9. #9
    Join Date
    Jun 2019
    Beans
    13

    Re: How to remove bar border in Conky ?

    thanks will try

  10. #10
    Join Date
    Jun 2019
    Beans
    13

    Re: How to remove bar border in Conky ?

    Good stuff, its done, ty.

Page 1 of 2 12 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
  •