Page 5 of 5

Re: Conky Helps and Stuff

Posted: Fri May 25, 2018 8:19 am
by male
asqwerth wrote:.. but generally conky 1.10 can read old syntax (ver 1.9) conky scripts.
Even that he can't do correctly as long as it's not a pure text-conky. :mad:

Re: Conky Helps and Stuff

Posted: Fri May 25, 2018 8:25 am
by asqwerth
male wrote:
Fri May 25, 2018 8:19 am
asqwerth wrote:.. but generally conky 1.10 can read old syntax (ver 1.9) conky scripts.
Even that he can't do correctly as long as it's not a pure text-conky. :mad:
Could you give an example of something that is NOT pure text-conky?

Re: Conky Helps and Stuff

Posted: Fri May 25, 2018 4:20 pm
by male
Example of an old test series with Sector11
1_10vers1_9.jpg
We did not manage to conjure round corners on the conky1.10, which works fine with conky 1.9 :frown:

more negative points:
- the right click on the Conky window to display the desktop menu is ignored
- the pre_exec command has been removed (well, I can do it with texeci 86400 ... replace )
I don't want to talk about the many Lua scripts for displaying graphs, rings, etc. pp. They would all have to be rewritten. :blindfold:

Re: Conky Helps and Stuff

Posted: Sat May 26, 2018 11:35 pm
by KoO
male wrote:
Mon May 21, 2018 5:31 am
KoO wrote: Have you seen Sector11 conky test script looks interesting.
Yeah, I know almost all about him :bagoverhead:

Fluxbox has a pseudo transparency, which can be done by right-clicking through the Fluxbox settings and right - left keystroke again.
If you want to have a real transparency, then the installation of the package compton is recommended.

Congratulations on solving your problem. :happy:
@male just been playing around with xcompmgr for transparency seems to be working ok too. Just need to adjust settings to suit.

https://www.linux.com/blog/fluxbox-tran ... y-xcompmgr

Re: Conky Helps and Stuff

Posted: Sun May 27, 2018 2:23 pm
by male
@KoO ;)

Code: Select all

apt show compton
Package: compton
Version: 0.1~beta2+20150922-1
Priority: optional
Section: x11
Maintainer: Scott Leggett <scott@sl.id.au>
Installed-Size: 286 kB
Depends: libc6 (>= 2.15), libconfig9, libdbus-1-3 (>= 1.9.14), libgl1-mesa-glx | libgl1, libpcre3, libx11-6, libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6 (>= 2:1.3.0), libxfixes3, libxinerama1, libxrandr2 (>= 4.3), libxrender1
Homepage: https://github.com/chjj/compton
Tag: role::program, x11::composite-manager
Download-Size: 106 kB
APT-Manual-Installed: yes
APT-Sources: http://httpredir.debian.org/debian unstable/main i386 Packages
Description: compositor for X11, based on xcompmgr
 compton is a compositor for X11, based on xcompmgr. In addition to shadows,
 fading and translucency, compton implements window frame opacity control,
 inactive window transparency, and shadows on argb windows.

Re: Conky Helps and Stuff

Posted: Mon May 28, 2018 2:30 am
by KoO
@male
okey dokey lol I get the message use compton. :p

Re: Conky Helps and Stuff

Posted: Wed Jun 13, 2018 11:28 am
by male
Since I just stumbled over it again...

A pure text-conky:
sensors_meine.jpg
this is displayed in the syntax of conky1.9 and in the syntax of conky1.10 without problems
sensors9

Code: Select all

#Idee von hier: https://forums.bunsenlabs.org/viewtopic.php?pid=40052#p40052
###  Begin Window Settings  ##################################################
# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,skip_taskbar,skip_pager
#own_window_colour black
own_window_class Conky
own_window_title Sensors

# Use the Xdbe extension? (eliminates flicker)
# It is highly recommended to use own window with this one
# so double buffer won't be so big.
double_buffer yes

### ARGB can be used for real transparency
### NOTE that a composite manager is required for real transparency.
### This option will not work as desired (in most cases) in conjunction with
### own_window_type override
own_window_argb_visual yes

### When ARGB visuals are enabled, this use this to modify the alpha value
### Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity.
#own_window_argb_value 200

minimum_size 80 0 ## width, height
#maximum_width 1600  ## width, usually a good idea to be '=' or '>' minimum width

gap_x 5 # left-right
gap_y 45 # up-down

#alignment top_middle
#alignment top_left
#alignment top_right
#alignment middle_left
#alignment middle_right
alignment bottom_left
#alignment bottom_right
###################################################  End Window Settings  ###
###  Font Settings  #########################################################
# Use Xft (anti-aliased font and stuff)
use_xft yes
xftfont monofur:size=10

# Alpha of Xft font. Must be a value at or between 1 and 0 ###
xftalpha 0
# Force UTF8? requires XFT ###
override_utf8_locale yes

draw_shades no
default_shade_color black

draw_outline no # amplifies text if yes
default_outline_color black

uppercase no
######################################################  End Font Settings  ###
###  Color Settings  #########################################################
default_shade_color grey
default_outline_color black

default_color DCDCDC #220 220 220    Gainsboro
color0 8FBC8F #143 188 143    DarkSeaGreen
color1 778899 #119 136 153    LightSlateGray #
color2 FF8C00 #255 140   0    DarkOrange
color3 7FFF00 #127 255   0    Chartreuse
color4 FFA07A #255 160 122    LightSalmon
color5 FFDEAD #255 222 173    NavajoWhite    #
color6 00BFFF #  0 191 255    DeepSkyBlue
color7 00FFFF #  0 255 255    Cyan
color8 FFFFFF #               Withe          #FFFF00 #255 255   0    Yellow
color9 B22222 #178  34  34    FireBrick
#####################################################  End Color Settings  ###
###  Borders Section  ########################################################
draw_borders no
# Stippled borders?
stippled_borders 0
# border margins
border_inner_margin 0
border_outer_margin 0
# border width
border_width 0
# graph borders
draw_graph_borders no #yes
default_graph_size 15 40
#####################################################  End Borders Secton  ###
###  Miscellaneous Section  ##################################################

# Boolean value, if true, Conky will be forked to background when started.
background no

# Adds spaces around certain objects to stop them from moving other things
# around, this only helps if you are using a mono font
# Options: right, left or none
use_spacer none

# Default and Minimum size is 256 - needs more for single commands that
# "call" a lot of text IE: bash scripts
text_buffer_size 256

# Subtract (file system) buffers from used memory?
no_buffers yes

# change GiB to G and MiB to M
short_units yes

# Like it says, ot pads the decimals on % values
# doesn't seem to work since v1.7.1
pad_percents 2

update_interval 1

TEXT
${alignc}${color5}Sensors
${color1}${swapbar 0}${color}
${color5}${alignc}TEMPS
${color6}CPU${color}    ${hwmon 2 temp 2}°
${color6}MB ${color}    ${hwmon 0 temp 2}°
${color2}GPU${color}    ${hwmon 1 temp 1}°
${color6}HDD${color}    ${execi 600 hddtemp -n /dev/sda}° 
${color1}${swapbar 0}${color}
${alignc}${color5}CPU MHz
${color6}1${color}      ${freq 1}
${color6}2${color}      ${freq 2}
${color6}3${color}      ${freq 3}
${color6}4${color}      ${freq 4}
${color1}${swapbar 0}${color}
${alignc}${color5}FAN${color}
${color6}CPU Fan ${color5}${hwmon 0 fan 1}
${color6}CHASS 1 ${color5}${hwmon 0 fan 2}
${color6}CHASS 2 ${color5}${hwmon 0 fan 3}
${color6}POWER   ${color5}${hwmon 0 fan 4}
${color1}${swapbar 0}${color}
${alignc}${color5}CPU %
${alignc}${color6}1${color} ${if_match ${cpu cpu0} < 10}  ${cpu cpu0}\
${else}${if_match ${cpu cpu0} < 100} ${cpu cpu0}\
${else}${color9}${cpu cpu0}${color}${endif}${endif}
${alignc}${color6}2${color} ${if_match ${cpu cpu1} < 10}  ${cpu cpu1}\
${else}${if_match ${cpu cpu1} < 100} ${cpu cpu1}\
${else}${color9}${cpu cpu1}${color}${endif}${endif}
${alignc}${color6}3${color} ${if_match ${cpu cpu2} < 10}  ${cpu cpu2}\
${else}${if_match ${cpu cpu2} < 100} ${cpu cpu2}\
${else}${color9}${cpu cpu2}${color}${endif}${endif}
${alignc}${color6}4${color} ${if_match ${cpu cpu3} < 10}  ${cpu cpu3}\
${else}${if_match ${cpu cpu3} < 100} ${cpu cpu3}\
${else}${color9}${cpu cpu3}${color}${endif}${endif}
${color1}${swapbar 0}${color}
${alignc}${color5}Memory${color}
${alignc}${mem}${color6}/${color}${memmax}
after conversion

Code: Select all

lua convert.lua sensors9 sensors10
sensors10

Code: Select all

conky.config = {
--Idee von hier: https://forums.bunsenlabs.org/viewtopic.php?pid=40052#p40052
--##  Begin Window Settings  ##################################################
-- Create own window instead of using desktop (required in nautilus)
	own_window = true,
	own_window_type = 'normal',
	own_window_transparent = true,
	own_window_hints = 'undecorated,below,skip_taskbar,skip_pager',
--own_window_colour black
	own_window_class = 'Conky',
	own_window_title = 'Sensors',

-- Use the Xdbe extension? (eliminates flicker)
-- It is highly recommended to use own window with this one
-- so double buffer won't be so big.
	double_buffer = true,

--## ARGB can be used for real transparency
--## NOTE that a composite manager is required for real transparency.
--## This option will not work as desired (in most cases) in conjunction with
--## own_window_type override
	own_window_argb_visual = true,

--## When ARGB visuals are enabled, this use this to modify the alpha value
--## Valid range is 0-255, where 0 is 0% opacity, and 255 is 100% opacity.
own_window_argb_value = 200,

	minimum_width = 80, minimum_height = 0,--# width, height
--maximum_width 1600  ## width, usually a good idea to be '=' or '>' minimum width

	gap_x = 15,-- left-right
	gap_y = 180,-- up-down

--alignment top_middle
alignment = 'top_left',
--alignment top_right
--alignment = 'middle_left',
--alignment middle_right
--alignment = 'bottom_left',
--alignment bottom_right
--##################################################  End Window Settings  ###
--##  Font Settings  #########################################################
-- Use Xft (anti-aliased font and stuff)
	use_xft = true,
	font = 'monofur:size=10',

-- Alpha of Xft font. Must be a value at or between 1 and 0 ###
	xftalpha = 0,
-- Force UTF8? requires XFT ###
	override_utf8_locale = true,

	draw_shades = false,
	default_shade_color = 'black',

	draw_outline = false,-- amplifies text if yes
	default_outline_color = 'black',

	uppercase = false,
--#####################################################  End Font Settings  ###
--##  Color Settings  #########################################################
	default_shade_color = 'grey',
	default_outline_color = 'black',

	default_color = '#DCDCDC',--220 220 220    Gainsboro
	color0 = '#8FBC8F',--143 188 143    DarkSeaGreen
	color1 = '#778899',--119 136 153    LightSlateGray #
	color2 = '#FF8C00',--255 140   0    DarkOrange
	color3 = '#7FFF00',--127 255   0    Chartreuse
	color4 = '#FFA07A',--255 160 122    LightSalmon
	color5 = '#FFDEAD',--255 222 173    NavajoWhite    #
	color6 = '#00BFFF',--  0 191 255    DeepSkyBlue
	color7 = '#00FFFF',--  0 255 255    Cyan
	color8 = '#FFFFFF',--               Withe          #FFFF00 #255 255   0    Yellow
	color9 = '#B22222',--178  34  34    FireBrick
--####################################################  End Color Settings  ###
--##  Borders Section  ########################################################
	draw_borders = false,
-- Stippled borders?
	stippled_borders = 0,
-- border margins
	border_inner_margin = 0,
	border_outer_margin = 0,
-- border width
	border_width = 0,
-- graph borders
	draw_graph_borders = false,--yes
	default_graph_width = 15, default_graph_height = 40,
--####################################################  End Borders Secton  ###
--##  Miscellaneous Section  ##################################################

-- Boolean value, if true, Conky will be forked to background when started.
	background = false,

-- Adds spaces around certain objects to stop them from moving other things
-- around, this only helps if you are using a mono font
-- Options: right, left or none
	use_spacer = 'none',

-- Default and Minimum size is 256 - needs more for single commands that
-- "call" a lot of text IE: bash scripts
	text_buffer_size = 256,

-- Subtract (file system) buffers from used memory?
	no_buffers = true,

-- change GiB to G and MiB to M
	short_units = true,

-- Like it says, ot pads the decimals on % values
-- doesn't seem to work since v1.7.1
	pad_percents = 2,

	update_interval = 1,

};

conky.text = [[
${color8}${alignc}${kernel}
${color1}${swapbar 1}${color}
${color8}${alignc}TEMPS
${color6}CPU${color}    ${hwmon 1 temp 2}°
${color6}MB ${color}    ${hwmon 0 temp 2}°
${color2}GPU${color}    ${hwmon 2 temp 1}°
${color6}HDD${color}    ${execi 600 hddtemp -n /dev/sda}° 
${color1}${swapbar 0}${color}
${alignc}${color8}CPU MHz
${alignc}${color6}1${color}    ${freq 1}
${alignc}${color6}2${color}    ${freq 2}
${alignc}${color6}3${color}    ${freq 3}
${alignc}${color6}4${color}    ${freq 4}
${color1}${swapbar 0}${color}
${alignc}${color8}FAN${color}
${color6}CPU Fan ${color8}${hwmon 0 fan 1}
${color6}CHASS 1 ${color8}${hwmon 0 fan 2}
${color6}CHASS 2 ${color8}${hwmon 0 fan 3}
${color6}POWER  ${color8}${hwmon 0 fan 4}
${color1}${swapbar 0}${color}
${alignc}${color8}CPU %
${alignc}${color6}1${color} ${if_match ${cpu cpu0} < 10}  ${cpu cpu0}\
${else}${if_match ${cpu cpu0} < 100} ${cpu cpu0}\
${else}${color9}${cpu cpu0}${color}${endif}${endif}
${alignc}${color6}2${color} ${if_match ${cpu cpu1} < 10}  ${cpu cpu1}\
${else}${if_match ${cpu cpu1} < 100} ${cpu cpu1}\
${else}${color9}${cpu cpu1}${color}${endif}${endif}
${alignc}${color6}3${color} ${if_match ${cpu cpu2} < 10}  ${cpu cpu2}\
${else}${if_match ${cpu cpu2} < 100} ${cpu cpu2}\
${else}${color9}${cpu cpu2}${color}${endif}${endif}
${alignc}${color6}4${color} ${if_match ${cpu cpu3} < 10}  ${cpu cpu3}\
${else}${if_match ${cpu cpu3} < 100} ${cpu cpu3}\
${else}${color9}${cpu cpu3}${color}${endif}${endif}
${color1}${swapbar 0}${color}
${alignc}${color8}Used${color}
${alignc}${fs_used /}${color6}/${color}${fs_size /}
${color1}${swapbar 0}${color}
${alignc}${color8}Memory${color}
${alignc}${mem}${color6}/${color}${memmax}
${color1}${swapbar 1}${color}
]];

Re: Conky Helps and Stuff

Posted: Wed Jun 13, 2018 11:37 am
by male
a nice conky of my friend loutch, who uses a LUA script from @londonali1010 to display the rings
works only with the syntax of conky1.9 (although I can also convert it to the syntax of conky1.10)
tousLOUTCH.jpg
tous9

Code: Select all

#pkill -xf "conky -c /media/DATEN/francescoPC/Conky/weather/loutch/bar/tous" &
#aufbereitet Juli 2017
background yes
use_xft yes
xftfont Sans:size=10
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent no  #yes
#own_window_color 000000
own_window_argb_visual yes
own_window_argb_value 0
own_window_type normal
own_window_hints undecorated,below,skip_taskbar,skip_pager
double_buffer yes
minimum_size 1150
maximum_width 1150
text_buffer_size 1024
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color white
default_outline_color white
alignment top_left
gap_x 330
gap_y 10
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale yes
#
color1 white
#
color2 orange
#
color3 6495ee
#
color4 green
#cornflowerblue
color5 red
color6 yellow
# Lua Load
#lua_load ~/.conky/draw_bg.lua
#lua_draw_hook_pre draw_bg
#lua_load ~/.conky/conky_grey.lua
#lua_draw_hook_pre main
lua_load /media/DATEN/francescoPC/Conky/weather/loutch/bar/tous.lua 
lua_draw_hook_post main_rings 
#chemin du .lua
#ordre de lancement si demande de plusieurs lua
#
TEXT


${color4}${goto 68}${cpu cpu0}%${Goto 188}${cpu cpu1}% ${color4}${goto 308}${memperc}% ${color4}${goto 430}${fs_used_perc /}% ${color4}${goto 550}${fs_used_perc /media/Distris}% ${color4}${goto 660}${downspeedf enp2s0}k/s ${color5}${goto 780}${upspeedf enp2s0}k/s

${color3}${goto 60}${voffset -10}Core 1 ${color3}${goto 180}Core 2 ${color3}${goto 299} Ram ${color3}${goto 410} /Root ${color3}${goto 530} /Distris ${color3}${goto 650} /Down ${color3}${goto 780} /Up${goto 885}${voffset 15}${color ff8000}${font Sans:size=12}${time %H}${color 00ff00}${time :%M}${color 6495EE}${time :%S}
${font Sans:size=10}${voffset -10}${goto 415}${color2}${fs_used /}${goto 535}${fs_used /media/Distris}
${color5}${goto 68}${voffset 4}${font Sans:size=10}${exec expr `cat /sys/class/hwmon/hwmon1/temp2_input` / 1000}°C${color5}${goto 188}${exec expr `cat /sys/class/hwmon/hwmon1/temp5_input` / 1000}°C ${color5}${goto 312}${swapperc}% ${goto 415}${color2}${fs_size /}${goto 535}${fs_size /media/Distris}${goto 655}${color4}${totaldown enp2s0}${goto 775}${color5}${totalup enp2s0}


#${color1}PROCESSUS ${goto 400}INTERNET ${goto 700} GPU ${goto 890} ORDINATEUR
#${color3}NOM ${goto 210}CPU ${goto 260}RAM ${color3}${goto 340}URL NB PORTS OUVERTS:${tcp_portmon 1 65535 count}
#${color1} ${top name 1} ${goto 200}${top cpu 1} ${goto 250}${top mem 1} ${color2}${goto 340}${tcp_portmon 1 65535 rip 1}${goto 455}${tcp_portmon 1 65535 rport 1} ${goto 600}${color3}Carte Graphique: ${color2}${execi 1800 nvidia-settings -q gpus |grep '0] (' | cut -d '(' -f 2,2 | sed -e 's/.\{1\}$//'} ${goto 860}${font Sans:size=8}${color3}Kernel: ${color2}3.8.18
#${color1} ${top name 2} ${goto 200}${top cpu 2} ${goto 250}${top mem 2} ${color2}${goto 340}${tcp_portmon 1 65535 rip 2}${goto 455}${tcp_portmon 1 65535 rport 2} ${goto 600}${color3}Pilote NVidia: ${color2}${execi 1800 nvidia-settings -q NvidiaDriverVersion -t} ${goto 860}${color3}Uptime:${color2} $uptime
#${color1} ${top name 3} ${goto 200}${top cpu 3} ${goto 250}${top mem 3} ${color2}${goto 340}${tcp_portmon 1 65535 rip 3}${goto 455}${tcp_portmon 1 65535 rport 3} ${goto 600}${color3}Température GPU: ${color2}${exec nvidia-settings -q gpucoretemp | grep '):' | awk '{print $4}'}°C ${goto 860}${color3}KDE: ${color2}${exec expr ` konsole -v | grep KDE | cut -d":" -f2 | sed s/" "/""/`}
#${color1} ${top name 4} ${goto 200}${top cpu 4} ${goto 250}${top mem 4} ${color2}${goto 340}${tcp_portmon 1 65535 rip 4}${goto 455}${tcp_portmon 1 65535 rport 4} ${goto 600}${color3}Fréquence gpu: ${color2}${execi 60 nvidia-settings -query 0/GPUCurrentClockFreqs |grep Attribute |awk '{print $4}' |cut -c1-7} Mhz
#${color1} ${top name 5} ${goto 200}${top cpu 5} ${goto 250}${top mem 5} ${color2}${goto 340}${tcp_portmon 1 65535 rip 5}${goto 455}${tcp_portmon 1 65535 rport 5} 
tous.lua

Code: Select all

--[[
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.

To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
lua_load ~/scripts/rings-v1.2.lua
lua_draw_hook_pre ring_stats

Changelog:
+ 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)
]]

require 'cairo'

function conky_main_rings()

if (os.date("%l"))=='12' then
heure=(os.date("%M")/60)
else
heure=(os.date("%l"))+(os.date("%M")/60)
end

-- START PARAMETERS HERE
local rings_settings={

{
name="cpu",
arg="cpu0",
max=100,
xc=80,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="exec",
arg="exec expr `cat /sys/class/hwmon/hwmon1/temp2_input` / 1000",
max=100,
xc=80,
yc=80,
radius=53,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},
},
{
name="cpu",
arg="cpu3",
max=100,
xc=200,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="exec",
arg="exec expr `cat /sys/class/hwmon/hwmon1/temp5_input` / 1000",
max=100,
xc=200,
yc=80,
radius=53,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},
},
{
name="memperc",
arg="",
max=100,
xc=320,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="swapperc",
arg="",
max=100,
xc=320,
yc=80,
radius=53,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},
},
{
name="fs_used_perc",
arg="/",
max=100,
xc=440,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="fs_used_perc",
arg="/media/Distris",
max=100,
xc=560,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="downspeedf",
arg="enp2s0",
max=500,
xc=680,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
fg_colour2={{0,0X00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="upspeedf",
arg="enp2s0",
max=100,
xc=800,
yc=80,
radius=57,
thickness=5,
gap_sectors=2,
sectors=10,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0xFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
bd_colour1={{0,0XFF0000,1},{0.5,0xFF0000,1}, {1,0xFF0000,1}},
},
{
name="",
arg=heure,
max=11.99,
xc=920,
yc=80,
radius=57,
thickness=5,
gap_sectors=5,
sectors=12,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0xFF8000,0},{0.5,0xFF8000,1}, {1,0xFF8000,0}},
fg_colour2={{0,0XFF8000,0},{0.5,0xFF8000,1}, {1,0xFF8000,0}},
bd_colour1={{0,0XFF8000,1},{0.5,0xFF8000,1}, {1,0xFF8000,1}},
},
{
name="",
arg=(os.date("%M"))+(os.date("%S")/60),
max=59.99,
xc=920,
yc=80,
radius=50,
thickness=5,
start_angle=0,
end_angle=360,
gap_sectors=1,
sectors=60,
fill_sector=false,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{0,0X00FF00,0},{0.5,0X00FF00,1}, {1,0X00FF00,1}},
fg_colour2={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
},
{
name="time",
arg="%S",
max=60,
xc=920,
yc=80,
radius=43,
thickness=5,
start_angle=0,
end_angle=360,
sectors=60,
fill_sector=false,
bg_colour1={{0,0x999999,0},{0.5,0x999999,0.3}, {1,0x999999,0}},
fg_colour1={{1,0X6495EE,1},{1,0x6495EE,1}, {1,0x6495EE,1}},
fg_colour2={{1,0X6495EE,1},{1,0x6495EE,1}, {1,0x6495EE,1}},
bd_colour1={{0,0X6495EE,1},{0.5,0x6495EE,1}, {1,0x6495EE,1}},
},

}

--END OF PARAMETERS HERE

--main function

--if conky_window==nil then return end

local cs=cairo_xlib_surface_create(conky_window.display,
conky_window.drawable,
conky_window.visual, conky_window.width, conky_window.height)
local cr=cairo_create(cs)

if tonumber(conky_parse('${updates}'))>3 then
for i in pairs(rings_settings) do
draw_ring(cr,rings_settings[i])
end
end

cairo_destroy(cr)
end



function draw_ring(cr, t)

local function rgba_to_r_g_b_a(tcolour)
local colour,alpha=tcolour[2],tcolour[3]
return ((colour / 0x10000) % 0x100) / 255.,
((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end


local function calc_delta(tcol1,tcol2)
--calculate deltas P R G B A to table_colour 1

for x = 1, #tcol1 do
tcol1[x].dA = 0
tcol1[x].dP = 0
tcol1[x].dR = 0
tcol1[x].dG = 0
tcol1[x].dB = 0
if tcol2~=nil and #tcol1 == #tcol2 then
local r1,g1,b1,a1 = rgba_to_r_g_b_a(tcol1[x])
local r2,g2,b2,a2 = rgba_to_r_g_b_a(tcol2[x])
tcol1[x].dP = (tcol2[x][1]-tcol1[x][1])/t.sectors
tcol1[x].dR = (r2-r1)/t.sectors
tcol1[x].dG = (g2-g1)/t.sectors
tcol1[x].dB = (b2-b1)/t.sectors
tcol1[x].dA = (a2-a1)/t.sectors

end
end

return tcol1
end

--check values
local function setup(t)
if t.name==nil and t.arg==nil then
print ("No input values ... use parameters 'name'" +
" with 'arg' or only parameter 'arg' ")
return
end

if t.max==nil then
print ("No maximum value defined, use 'max'")
print ("for name=" .. t.name)
print ("with arg=" .. t.arg)
return
end
if t.name==nil then t.name="" end
if t.arg==nil then t.arg="" end

if t.xc==nil then t.xc=conky_window.width/2 end
if t.yc==nil then t.yc=conky_window.height/2 end
if t.thickness ==nil then t.thickness = 10 end
if t.radius ==nil then t.radius =conky_window.width/4 end
if t.start_angle==nil then t.start_angle =0 end
if t.end_angle==nil then t.end_angle=360 end
if t.bg_colour1==nil then
t.bg_colour1={{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
end
if t.fg_colour1==nil then
t.fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
end
if t.bd_colour1==nil then
t.bd_colour1={{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
end
if t.sectors==nil then t.sectors=10 end
if t.gap_sectors==nil then t.gap_sectors=1 end
if t.fill_sector==nil then t.fill_sector=false end
if t.sectors==1 then t.fill_sector=false end
if t.border_size==nil then t.border_size=0 end
if t.cap==nil then t.cap="p" end
--some checks
if t.thickness>t.radius then t.thickness=t.radius*0.1 end
t.int_radius = t.radius-t.thickness

--check colors tables
for i=1, #t.bg_colour1 do
if #t.bg_colour1[i]~=3 then t.bg_colour1[i]={1,0xFFFFFF,0.5} end
end
for i=1, #t.fg_colour1 do
if #t.fg_colour1[i]~=3 then t.fg_colour1[i]={1,0xFF0000,1} end
end
for i=1, #t.bd_colour1 do
if #t.bd_colour1[i]~=3 then t.bd_colour1[i]={1,0xFFFF00,1} end
end

if t.bg_colour2~=nil then
for i=1, #t.bg_colour2 do
if #t.bg_colour2[i]~=3 then t.bg_colour2[i]={1,0xFFFFFF,0.5} end
end
end
if t.fg_colour2~=nil then
for i=1, #t.fg_colour2 do
if #t.fg_colour2[i]~=3 then t.fg_colour2[i]={1,0xFF0000,1} end
end
end
if t.bd_colour2~=nil then
for i=1, #t.bd_colour2 do
if #t.bd_colour2[i]~=3 then t.bd_colour2[i]={1,0xFFFF00,1} end
end
end

if t.start_angle>=t.end_angle then
local tmp_angle=t.end_angle
t.end_angle= t.start_angle
t.start_angle = tmp_angle
-- print ("inversed angles")
if t.end_angle-t.start_angle>360 and t.start_angle>0 then
t.end_angle=360+t.start_angle
print ("reduce angles")
end

if t.end_angle+t.start_angle>360 and t.start_angle<=0 then
t.end_angle=360+t.start_angle
print ("reduce angles")
end

if t.int_radius<0 then t.int_radius =0 end
if t.int_radius>t.radius then
local tmp_radius=t.radius
t.radius=t.int_radius
t.int_radius=tmp_radius
print ("inversed radius")
end
if t.int_radius==t.radius then
t.int_radius=0
print ("int radius set to 0")
end
end

t.fg_colour1 = calc_delta(t.fg_colour1,t.fg_colour2)
t.bg_colour1 = calc_delta(t.bg_colour1,t.bg_colour2)
t.bd_colour1 = calc_delta(t.bd_colour1,t.bd_colour2)
end

if t.draw_me == true then t.draw_me = nil end
if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end
--initialize table
setup(t)

--initialize cairo context
cairo_save(cr)
cairo_translate(cr,t.xc,t.yc)
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND)
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)

--get value
local value = 0
if t.name ~="" then
value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
else
value = tonumber(t.arg)
end
if value==nil then value =0 end

--initialize sectors
--angle of a sector :
local angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180
--value of a sector :
local valueA = t.max/t.sectors
--first angle of a sector :
local lastAngle = t.start_angle*math.pi/180


local function draw_sector(type_arc,angle0,angle,valpc, idx)

--this function draws a portion of arc
--type of arc, angle0 = strating angle, angle= angle of sector,
--valpc = percentage inside the sector, idx = sctor number #
local tcolor
if type_arc=="bg" then --background
if valpc==1 then return end
tcolor=t.bg_colour1
elseif type_arc=="fg" then --foreground
if valpc==0 then return end
tcolor=t.fg_colour1
elseif type_arc=="bd" then --border
tcolor=t.bd_colour1
end

--angles equivalents to gap_sector
local ext_delta=math.atan(t.gap_sectors/(2*t.radius))
local int_delta=math.atan(t.gap_sectors/(2*t.int_radius))

--angles of arcs
local ext_angle=(angle-ext_delta*2)*valpc
local int_angle=(angle-int_delta*2)*valpc

--define colours to use for this sector
if #tcolor==1 then
--plain color
local vR,vG,vB,vA = rgba_to_r_g_b_a(tcolor[1])
cairo_set_source_rgba(cr,vR+tcolor[1].dR*idx,
vG+tcolor[1].dG*idx,
vB+tcolor[1].dB*idx,
vA+tcolor[1].dA*idx )
else
--radient color
local pat=cairo_pattern_create_radial(0,0,t.int_radius,0,0,t.radius)
for i=1, #tcolor do
local vP,vR,vG,vB,vA = tcolor[i][1], rgba_to_r_g_b_a(tcolor[i])
cairo_pattern_add_color_stop_rgba (pat,
vP+tcolor[i].dP*idx,
vR+tcolor[i].dR*idx,
vG+tcolor[i].dG*idx,
vB+tcolor[i].dB*idx,
vA+tcolor[i].dA*idx )
end
cairo_set_source (cr, pat)
cairo_pattern_destroy(pat)
end

--start drawing
cairo_save(cr)
--x axis is parrallel to start of sector
cairo_rotate(cr,angle0-math.pi/2)

local ri,re = t.int_radius ,t.radius

--point A
local angle_a

if t.cap == "p" then
angle_a = int_delta
if t.inverse_arc and type_arc ~="bg" then
angle_a = angle-int_angle-int_delta
end
if not(t.inverse_arc) and type_arc =="bg" then
angle_a = int_delta+int_angle
end
else --t.cap=="r"
angle_a = ext_delta
if t.inverse_arc and type_arc~="bg" then
angle_a = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_a = ext_delta+ext_angle
end
end
local ax,ay = ri*math.cos(angle_a),ri*math.sin(angle_a)


--point B
local angle_b = ext_delta
if t.cap == "p" then
if t.inverse_arc and type_arc ~="bg" then
angle_b = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_b = ext_delta+ext_angle
end
else
if t.inverse_arc and type_arc ~="bg" then
angle_b = angle-ext_angle-ext_delta
end
if not(t.inverse_arc) and type_arc=="bg" then
angle_b = ext_delta+ext_angle
end
end
local bx,by = re*math.cos(angle_b),re*math.sin(angle_b)

-- EXTERNAL ARC B --> C
local b0,b1
if t.inverse_arc then
if type_arc=="bg" then
b0,b1= ext_delta, angle-ext_delta-ext_angle
else
b0,b1= angle-ext_angle-ext_delta, angle-ext_delta
end
else
if type_arc=="bg" then
b0,b1= ext_delta+ext_angle, angle-ext_delta
else
b0,b1= ext_delta, ext_angle+ext_delta
end
end

---POINT D
local angle_c, angle_d
if t.cap == "p" then
angle_d = angle-int_delta
if t.inverse_arc and type_arc=="bg" then
angle_d = angle-int_delta-int_angle
end
if not(t.inverse_arc) and type_arc~="bg" then
angle_d=int_delta+int_angle
end
else
angle_d = angle-ext_delta
if t.inverse_arc and type_arc=="bg" then
angle_d =angle-ext_delta-ext_angle
end
if not(t.inverse_arc) and type_arc~="bg" then
angle_d = ext_angle+ext_delta
end
end
local dx,dy = ri*math.cos(angle_d),ri*math.sin(angle_d)

-- INTERNAL ARC D --> A
local d0,d1
if t.cap=="p" then
if t.inverse_arc then
if type_arc=="bg" then
d0,d1= angle-int_delta-int_angle,int_delta
else
d0,d1= angle-int_delta, angle- int_angle-int_delta
end
else
if type_arc=="bg" then
d0,d1= angle-int_delta, int_delta+int_angle
else
d0,d1= int_delta+int_angle, int_delta
end
end
else
if t.inverse_arc then
if type_arc=="bg" then
d0,d1= angle-ext_delta-ext_angle,ext_delta
else
d0,d1= angle-ext_delta, angle- ext_angle-ext_delta
end
else
if type_arc=="bg" then
d0,d1= angle-ext_delta,ext_delta+ext_angle
else
d0,d1= ext_angle+ext_delta, ext_delta
end
end
end

--draw sector
cairo_move_to(cr,ax,ay)
cairo_line_to(cr,bx,by)
cairo_arc(cr,0,0,re,b0,b1)
cairo_line_to(cr,dx,dy)
cairo_arc_negative(cr,0,0,ri,d0,d1)
cairo_close_path (cr);

--stroke or fill sector
if type_arc=="bd" then
cairo_set_line_width(cr,t.border_size)
cairo_stroke(cr)
else
cairo_fill(cr)
end

cairo_restore(cr)

end
--draw sectors
local n0,n1,n2 = 1,t.sectors,1
if t.inverse_arc then n0,n1,n2 = t.sectors,1,-1 end
local index = 0
for i = n0,n1,n2 do
index = index +1
local valueZ=1
local cstA, cstB = (i-1),i
if t.inverse_arc then cstA,cstB = (t.sectors-i), (t.sectors-i+1) end

if value>valueA *cstA and value<valueA*cstB then
if not t.fill_sector then
valueZ = (value-valueA*cstA)/valueA
end
else
if value<valueA*cstB then valueZ=0 end
end

local start_angle= lastAngle+(i-1)*angleA
if t.foreground ~= false then
draw_sector("fg",start_angle,angleA,valueZ, index)
end
if t.background ~= false then
draw_sector("bg",start_angle,angleA,valueZ, i)
end
if t.border_size>0 then draw_sector("bd",start_angle,angleA,1, i) end
end

cairo_restore(cr)
end

--[[END OF RING-SECTORS WIDGET]]