Welcome!
Important information
-- Required MX 15/16 Repository Changes
-- Information on torrent hosting changes
-- Information on MX15/16 GPG Keys
-- Spectre and Meltdown vulnerabilities

News
-- Introducing our new Website
-- MX Linux on social media: here

Current releases
-- MX-18.3 Point Release release info here
-- Migration Information to MX-18 here
-- antiX-17.4.1 release info here

New users
-- Please read this first, and don't forget to add system and hardware information to posts!
-- Here are the Forum Rules

want to detect battery for conky

Help for Current Versions of MX
User avatar
richb
Administrator
Posts: 18805
Joined: Wed Jul 12, 2006 2:17 pm

Re: want to detect battery for conky

#21

Post by richb » Mon Jan 14, 2019 7:53 am

Jerry3904 wrote:
Mon Jan 14, 2019 7:46 am
Possibly by me. I was working with some 40 conkies, trying to get them functonal for MX-17 at the time.
Surprised you kepi your sanity. Working with one drives me up the wall. In some cases making one change cascades into many changes needed when working with an hdpi screen and enlarging fonts.
Forum Rules
Guide - How to Ask for Help

Rich
SSD Production: MX 18.1
AMD A8 7600 FM2+ CPU R7 Graphics, 16 GIG Mem. Three Samsung EVO SSD's 250 GB, 350 GB HD

User avatar
KoO
Forum Regular
Forum Regular
Posts: 502
Joined: Fri Feb 10, 2017 1:21 am

Re: want to detect battery for conky

#22

Post by KoO » Mon Jan 14, 2019 8:25 am

Jerry :worship:
Thanks all your work with Git MX-Linux/mx-conky-data and the conkys within. If you ever need a conky tested let me know...

I was wrong about the BAT0 files they only shows up on my laptop. On my desktop the power_supply folder is empty.
Image


---------------------------------This code work fine on my laptop with % an color changing bar.

Code: Select all

${font Open Sans:Bold:size=10}${color0}BATTERY ${color1}${hr 2}${font}${color}
${alignc}${if_match "${battery_short BAT0}" == "N"}${else}${battery_percent BAT0}%${endif}
${if_match ${battery_percent BAT0} >= 45}${color FFFF00}${battery_bar 6 BAT0}${else} ${if_match ${battery_percent BAT0} >= 25}${color 2600ff}${battery_bar 6 BAT0}${else}${color B22222}${if_match ${battery_percent} =< 10} ${battery_bar 6 BAT0}${endif}
Main : Debian buster antiX17 (i3) , Liquorix 5.1.0-7.2 , Intel Xeon E3-1241 v3 , 16gb , GTX970 . :linuxlove:
Lenovo T430 : antiX17 (i3) , 4.20.12 , i5 , 8gb .
Lenovo X220 : antiX17 (i3) , 4.19.170 , i5 , 8gb . BiosMod 1.46

User avatar
Jerry3904
Forum Veteran
Forum Veteran
Posts: 24581
Joined: Wed Jul 19, 2006 6:13 am

Re: want to detect battery for conky

#23

Post by Jerry3904 » Mon Jan 14, 2019 8:40 am

I based my original on this:

Code: Select all

jb@xps13mx:~
$ ls /sys/class/power_supply/
AC  BAT0  hidpp_battery_1
So my if_match just asked if there were any "BAT" in that location.
Production: 4.15.0-1-amd64, MX-17.1, AMD FX-4130 Quad-Core, GeForce GT 630/PCIe/SSE2, 8 GB, SSD 120 GB, Data 1TB
Testing: AAO 722: 4.15.0-1-386. MX-17.1, AMD C-60 APU, 4 GB
Personal: XPS 13, 4.18.0-19.3-liquorix, 4 GB

User avatar
richb
Administrator
Posts: 18805
Joined: Wed Jul 12, 2006 2:17 pm

Re: want to detect battery for conky

#24

Post by richb » Mon Jan 14, 2019 8:47 am

I do not know if this is helpful as it probably gets the battery info from what has been previously stated.

Code: Select all

Inxi -B
Forum Rules
Guide - How to Ask for Help

Rich
SSD Production: MX 18.1
AMD A8 7600 FM2+ CPU R7 Graphics, 16 GIG Mem. Three Samsung EVO SSD's 250 GB, 350 GB HD

User avatar
i_ri
Forum Regular
Forum Regular
Posts: 355
Joined: Tue Jun 30, 2015 12:26 am

Re: want to detect battery for conky

#25

Post by i_ri » Mon Jan 14, 2019 11:32 am

thanks Jerry3904 for a project, but is busy monday and I need time to wrestle with these notes. sharing these notes in case someone who really knows code can trial the ideas. I am not a coder. i will try as soon as i can. not encouraging to see male write that if it is possible then it would be done available. oh well. trials.
found a configuration of conky named
update_interval_on_battery(so if it can know that where does the information come from?)
if this given a larger number > than the update_interval, then the interval integers could be compared argument greater than in order to determine to show or not show the BAT0 display? of --Jerry3904 battery conky print code
or just if update_interval_on_battery=(not your known value) then print BAT0 jerrystuff.
maybe if battery_short = N or E then print blank?
or
if battery_short= (C,D,F,U)
else print blank
if battery_short==N then
--Jerry3904battery conky print code
elseif battery_short==E then
--Jerry3904battery conky print code
end

or
if batterry_short~= C,D,F,U then --elseif ladder
--jerry3904 battery conky print code
end
if then
elseif then
else
{Desktop}
end

and what about? what is?
if_smapi_bat_installed BAT0 (what does INDEX mean?)
--Jerry3904 battery conky print code
endif
IT IS NOT real code so i don't think code tags are right for my notes(?)
I might be exposing that i really stepped in it this time with all failures ahead; silly me
trial these ideas with proper code for Jerry3904 using what conky?
and you seem to have #8 post found a solution i could trial as well.

User avatar
Jerry3904
Forum Veteran
Forum Veteran
Posts: 24581
Joined: Wed Jul 19, 2006 6:13 am

Re: want to detect battery for conky

#26

Post by Jerry3904 » Mon Jan 14, 2019 11:53 am

using what conky?
I am trying to see if I can get one called Conky-light into serviceable form for inclusion with the MX conky collection. I have solved some of the problems (get battery to show correctly by directly editing the lua file), but can not get Net to show correctly on the circles. I will probably just eliminate the battery item altogether, as I did the weather, since we have apps available that do a very good job.

If anyone is interested, here is my current version of the conky

Code: Select all

# Conky settings #
background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
#imlib_cache_size 0

temperature_unit celsius

# Window specifications #
own_window_class Conky
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0

minimum_size 520 600
maximum_width 520

alignment middle_right
gap_x 0
gap_y -130

# Graphics settings #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

default_color gray
default_shade_color red
default_outline_color green

# Text settings #
use_xft yes
override_utf8_locale yes
xftfont Play:normal:size=7
xftalpha 0.9
uppercase no

default_color 333333
color0 FFFFFF
color1 FFFFFF
color2 1994D1
#color3 1994D1 

# Lua Load  ##${voffset 750}
lua_load ./rings-v1.3.1_mx.lua
#lua_draw_hook_pre ring_stats
lua_draw_hook_pre conky_main

own_window_argb_visual no
own_window_argb_value 0
own_window_colour 000000
TEXT
${font Play:normal:size=7}${voffset 16}${color1}${goto 120}${freq_g cpu0} Ghz${alignr 330}${acpitemp} °C
${font Play:normal:size=7}${voffset 0}${goto 120}${color1}CPU 1 ${alignr 330}${color1}${cpu cpu0}%
${font Play:normal:size=7}${voffset 2}${goto 120}${color1}CPU 2${alignr 330}${color1}${cpu cpu1}%
${font Play:normal:size=7}${voffset 2}${goto 120}${color1}CPU 3${alignr 330}${color1}${cpu cpu2}%
${font Play:normal:size=7}${voffset 2}${goto 120}${color1}CPU 4${alignr 330}${color1}${cpu cpu3}%
${goto 50}${voffset 16}${font Play:normal:size=7}${color1}${top name 1}${alignr 306}${top cpu 1}%
${goto 50}${font Play:normal:size=7}${color1}${top name 2}${alignr 306}${top cpu 2}%
${goto 50}${font Play:normal:size=7}${color1}${top name 3}${alignr 306}${top cpu 3}%
${font Michroma:size=10}${color0}${goto 80}${voffset 4}CPU 
${font Michroma:size=10}${color0}${goto 394}${voffset 44}MEM
${goto 324}${voffset -6}${font Play:normal:size=7}${color1}${top_mem name 1}${alignr 40}${top_mem mem 1}%
${goto 324}${font Play:normal:size=7}${color1}${top_mem name 2}${alignr 40}${top_mem mem 2}%
${goto 324}${font Play:normal:size=7}${color1}${top_mem name 3}${alignr 40}${top_mem mem 3}%
${font Play:normal:size=7}${voffset 14}${goto 348}${color1}SWAP${alignr 40}${color1}${swap} / ${color1}${swapmax}
${font Play:normal:size=7}${voffset 4}${goto 348}${color1}RAM ${alignr 40}${color1}${mem} / ${color1}${memmax}
${font Play:normal:size=7}${goto 80}${voffset -68}Root${color1}${alignr 310}${fs_used /} / ${fs_size /}
${font Play:normal:size=7}${goto 80}${voffset 0}Home${alignr 310}${color1}${fs_used /home} / ${fs_size /home}
${font Play:normal:size=7}${goto 80}${voffset 0}Usr${alignr 310}${color1}${fs_used /usr} / ${fs_size /usr}
${font Michroma:size=10}${color0}${goto 66}${voffset 10}HDD
${font Michroma:size=10}${color0}${voffset 26}${goto 324}NET  
# EDITION FINIR WLAN
${if_existing /proc/net/route wlan0}${font Play:normal:size=7}${color1}${alignr 54}${voffset -8}WiFi  ${color1}${wireless_essid wlan0}
${font Play:normal:size=7}${color1}${goto 298}${voffset 2}Up${goto 370}${color1}${totalup wlan0} / ${color1}${upspeed wlan0}
${font Play:normal:size=7}${goto 298}${color1}Down${goto 370}${color1}${totaldown wlan0} / ${color1}${downspeed wlan0}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr wlan0}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
${font Michroma:size=9}${goto 90}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color1}${voffset -4}${time %I}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERY
${font Play:size=8}${color0}${goto 278}${voffset 5}${color1}${battery_percent BAT0}%
# |--ETH0
${else}${if_existing /proc/net/route eth0}${font Play:normal:size=7}${color1}${goto 298}${voffset 6}Up${goto 370}${color1}${totalup eth0} / ${color1}${upspeed eth0}
${font Play:normal:size=7}${goto 298}${color1}Down${goto 370}${color1}${totaldown eth0} / ${color1}${downspeed eth0}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr eth0}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
${font Michroma:size=9}${alignr 298}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color1}${voffset -4}${time %I}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERY
${font Play:size=8}${color0}${goto 278}${voffset 4}${color1}${battery_percent BAT0}%${endif}${endif}
${font Michroma:size=12}${color3}${voffset 20}${alignr 150}${goto 50}${exec cat /etc/mx-version} 
and 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 near the end of the script 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.1.lua
	lua_draw_hook_pre ring_stats
	
Changelog:
+v. 20190110 -- changed BAT1 to the standard default BAT0
+ 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)

        arg=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        fg_colour=0xf0651f,
        fg_colour=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        conky_parse("${cpu}")
        name=conky_parse("${acpitemp}"),

]]

-- A TESTER
--set alarm value, this is the value at which bar color will change
--alarm_value=80
----set alarm bar color, 1,0,0,1 = red fully opaque
--ar,ag,ab,aa=1,0,0,1

-- couleurs 1
-- 1faaf0
-- f0651f
-- f01f42
-- couleurs 2 + flashy
-- 008cff
-- ff7200
-- ff000d

--normal_temp="0x1faaf0"
--warn_temp="0xf0651f"
--crit_temp="0xf01f42"
-- Un mélange des deux
normal="0x1faaf0"
warn="0xff7200"
crit="0xff000d"

-- seulement quand fond nécessaire
corner_r=35
bg_colour=0x333333
bg_alpha=0.2


settings_table = {
    
    {
        name='acpitemp',
        arg='',
        max=110,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=97,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=86,
        thickness=13,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.7,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=71,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu2',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=57,
        thickness=11,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu3',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.5,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=44,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=60,
        thickness=15,
        start_angle=180,
        end_angle=420
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=45,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    {
        name='fs_used_perc',
        arg='/',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=40,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/home',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=28,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/usr',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=16,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='downspeed',
        arg='',
        max=2000,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=30,
        thickness=12,
        start_angle=180,
        end_angle=420
    },
    {
        name='upspeed',
        arg='',
        max=200,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=18,
        thickness=8,
        start_angle=180,
        end_angle=420
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=30,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%M',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=18,
        thickness=8,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%H',
        max=24,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=10,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='battery_percent',
        arg='BAT0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=274, y=464,
        radius=18,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    {
        name='',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.6,
        x=274, y=464,
        radius=3,
        thickness=13,
        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_ring_stats()
	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
                display_temp=temp_watch()
		setup_rings(cr,settings_table[i])
	    end
	end
   cairo_surface_destroy(cs)
  cairo_destroy(cr)
end

-- Contrôle de l'espace disque
function disk_watch()

    warn_disk=93
    crit_disk=98

    -- poser une boucle plus tard... pas simple

    disk=tonumber(conky_parse("${fs_used_perc /}"))

    if disk<warn_disk then
        settings_table[8]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[8]['fg_colour']=warn
    else
        settings_table[8]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /home}"))

    if disk<warn_disk then
        settings_table[9]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[9]['fg_colour']=warn
    else
        settings_table[9]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /usr}"))

    if disk<warn_disk then
        settings_table[10]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[10]['fg_colour']=warn
    else
        settings_table[10]['fg_colour']=crit
    end
end

-- Contrôle de la température
function temp_watch()

    warn_value=70
    crit_value=80

    temperature=tonumber(conky_parse("${acpitemp}"))

    if temperature<warn_value then
        settings_table[1]['fg_colour']=normal
    elseif temperature<crit_value then
        settings_table[1]['fg_colour']=warn
    else
        settings_table[1]['fg_colour']=crit
    end
end

-- Contrôle de l'interface active
function iface_watch()

    iface=conky_parse("${if_existing /proc/net/route eth0}eth0${else}wlan0${endif}")

    settings_table[11]['arg']=iface
    settings_table[12]['arg']=iface
end

function conky_draw_bg()
    if conky_window==nil then return end
    local w=conky_window.width
    local h=conky_window.height
    local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
    cr=cairo_create(cs)
    
    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-corner_r)
    cairo_curve_to(cr,w,h,w,h,w-corner_r,h)
    cairo_line_to(cr,corner_r,h)
    cairo_curve_to(cr,0,h,0,h,0,h-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)
end


function conky_main()
    temp_watch()
    disk_watch()
    iface_watch()
    conky_ring_stats()
-- quand fond nécessaire
--    conky_draw_bg()
end
Didn't check whether the fonts Play and Michroma are available by default.
Production: 4.15.0-1-amd64, MX-17.1, AMD FX-4130 Quad-Core, GeForce GT 630/PCIe/SSE2, 8 GB, SSD 120 GB, Data 1TB
Testing: AAO 722: 4.15.0-1-386. MX-17.1, AMD C-60 APU, 4 GB
Personal: XPS 13, 4.18.0-19.3-liquorix, 4 GB

User avatar
male
Forum Regular
Forum Regular
Posts: 432
Joined: Thu Jan 23, 2014 8:38 am

Re: want to detect battery for conky

#27

Post by male » Mon Jan 14, 2019 5:16 pm

You could do it this way.

Image Image

- I pulled the original code.
- I have adjusted this as far as reasonable
- the writings were already on board here.
- the computer has no battery
- the temp of the CPU I show with hwmon (don't know if this fits every user)
- here there is no separation from root ; /home; /usr
- if something is shifted, ALWAYS start the correction from above

Then have fun :happy:

.conkyrc

Code: Select all

# Conky settings #
background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
#imlib_cache_size 0

temperature_unit celsius

# Window specifications #
own_window_class Conky
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorate,skip_taskbar,skip_pager,below   #sticky,

border_inner_margin 0
border_outer_margin 0

minimum_size 520 600
maximum_width 520

alignment tr
gap_x 10
gap_y 10 

# Graphics settings #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

default_color gray
default_shade_color red
default_outline_color green

# Text settings #
use_xft yes
override_utf8_locale yes
xftfont Play:normal:size=7
xftalpha 0.9
uppercase no

default_color 333333
color0 414569
color1 333333
color2 1994D1
#color3 1994D1 

# Lua Load  #
lua_load ~/.conky/conky_light/rings-v1.2.1.lua
#lua_draw_hook_pre ring_stats
lua_draw_hook_pre conky_main

TEXT
${voffset 16}${color1}${goto 120}${freq_g cpu0} Ghz${alignr 330}${hwmon 2 temp 2}°C
${voffset 0}${goto 120}${color1}CPU 1 ${alignr 330}${color1}${cpu cpu0}%
${voffset 2}${goto 120}${color1}CPU 2${alignr 330}${color1}${cpu cpu1}%
${voffset 2}${goto 120}${color1}CPU 3${alignr 330}${color1}${cpu cpu2}%
${voffset 2}${goto 120}${color1}CPU 4${alignr 330}${color1}${cpu cpu3}%
${goto 50}${voffset 16}${color1}${top name 1}${alignr 306}${top cpu 1}%
${goto 50}${color1}${top name 2}${alignr 306}${top cpu 2}%
${goto 50}${color1}${top name 3}${alignr 306}${top cpu 3}%
${font Michroma:size=10}${color0}${goto 80}${voffset 4}CPU 
${font Michroma:size=10}${color0}${goto 394}${voffset 44}MEMORY ${font}
${goto 324}${voffset 2}${color1}${top_mem name 1}${alignr 40}${top_mem mem 1}%
${goto 324}${color1}${top_mem name 2}${alignr 40}${top_mem mem 2}%
${goto 324}${color1}${top_mem name 3}${alignr 40}${top_mem mem 3}%
${voffset 14}${goto 348}${color1}SWAP${alignr 40}${color1}${swap} / ${color1}${swapmax}
${voffset 4}${goto 348}${color1}RAM ${alignr 40}${color1}${mem} / ${color1}${memmax}
${goto 80}${voffset -68}Root${color1}${alignr 310}${fs_used /} / ${fs_size /}
${goto 80}${voffset 0}Home${alignr 310}${color1}${fs_used /home} / ${fs_size /home}
${goto 80}${voffset 0}Usr${alignr 310}${color1}${fs_used /usr} / ${fs_size /usr}
${font Michroma:size=10}${color0}${goto 66}${voffset 10}HARD  DRIVE ${font}
${font Michroma:size=10}${color0}${voffset 26}${goto 324}INTERNET  INFO ${font}
# EDITION FINIR WLAN
${if_existing /proc/net/route wlan0}${color1}${alignr 54}${voffset -8}WiFi  ${color1}${wireless_essid wlan0}
${color1}${goto 298}${voffset 2}Up${goto 370}${color1}${totalup wlan0} / ${color1}${upspeed wlan0}
${goto 298}${color1}Down${goto 370}${color1}${totaldown wlan0} / ${color1}${downspeed wlan0}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr wlan0}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 curl -w '\n' ident.me}
${font Michroma:size=9}${goto 90}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color1}${voffset -4}${time %H}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERIE ${font}
${font Play:size=8}${color0}${goto 278}${voffset 5}${color1}${battery_percent BAT1}%
# |--ETH0
${else}${if_existing /proc/net/route eth0}${color1}${goto 298}${voffset 6}Up${goto 370}${color1}${totalup eth0} / ${color1}${upspeed eth0}
${goto 298}${color1}Down${goto 370}${color1}${totaldown eth0} / ${color1}${downspeed eth0}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr eth0}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 curl -w '\n' ident.me}
${font Michroma:size=9}${alignr 298}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color1}${voffset -4}${time %H}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERIE ${font}
${font Play:size=8}${color0}${goto 278}${voffset 4}${color1}${battery_percent BAT1}%${endif}${endif}
#${goto 180}Uptime${color1}${alignr 100}${uptime_short}
${font Michroma:size=11}${color0}${voffset 70}${alignc}${execi 86400 cat /etc/mx-version}  ${machine}${font}
#${execpi 53 $HOME/conky/nagios.sh}
rings-v1.2.1.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 near the end of the script 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.1.lua
	lua_draw_hook_pre ring_stats
	
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)

        arg=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        fg_colour=0xf0651f,
        fg_colour=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        conky_parse("${cpu}")
        name=conky_parse("${acpitemp}"),
]]

-- A TESTER
--set alarm value, this is the value at which bar color will change
--alarm_value=80
----set alarm bar color, 1,0,0,1 = red fully opaque
--ar,ag,ab,aa=1,0,0,1

-- couleurs 1
-- 1faaf0
-- f0651f
-- f01f42
-- couleurs 2 + flashy
-- 008cff
-- ff7200
-- ff000d

--normal_temp="0x1faaf0"
--warn_temp="0xf0651f"
--crit_temp="0xf01f42"
-- Un mélange des deux
normal="0x1faaf0"
warn="0xff7200"
crit="0xff000d"

-- seulement quand fond nécessaire
corner_r=35
bg_colour=0x333333
bg_alpha=0.2


settings_table = {
    
    {
        name='hwmon',
        arg='2 temp 2',
        max=110,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=97,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=86,
        thickness=13,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.7,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=71,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu2',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=57,
        thickness=11,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu3',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.5,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=44,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=60,
        thickness=15,
        start_angle=180,
        end_angle=420
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=45,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    {
        name='fs_used_perc',
        arg='/',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=40,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/home',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=28,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/usr',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=16,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='downspeedf',
        arg='eth0',
        max=2000,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=30,
        thickness=12,
        start_angle=180,
        end_angle=420
    },
    {
        name='upspeedf',
        arg='eth0',
        max=200,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=18,
        thickness=8,
        start_angle=180,
        end_angle=420
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=30,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%M',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=18,
        thickness=8,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%H',
        max=24,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=10,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='battery_percent',
        arg='BAT1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=274, y=464,
        radius=18,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    {
        name='',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.6,
        x=274, y=464,
        radius=3,
        thickness=13,
        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_ring_stats()
	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
                display_temp=temp_watch()
		setup_rings(cr,settings_table[i])
	    end
	end
   cairo_surface_destroy(cs)
  cairo_destroy(cr)
end

-- Contrôle de l'espace disque
function disk_watch()

    warn_disk=93
    crit_disk=98

    -- poser une boucle plus tard... pas simple

    disk=tonumber(conky_parse("${fs_used_perc /}"))

    if disk<warn_disk then
        settings_table[8]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[8]['fg_colour']=warn
    else
        settings_table[8]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /home}"))

    if disk<warn_disk then
        settings_table[9]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[9]['fg_colour']=warn
    else
        settings_table[9]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /usr}"))

    if disk<warn_disk then
        settings_table[10]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[10]['fg_colour']=warn
    else
        settings_table[10]['fg_colour']=crit
    end
end

-- Contrôle de la température
function temp_watch()

    warn_value=70
    crit_value=80

    temperature=tonumber(conky_parse("${acpitemp}"))

    if temperature<warn_value then
        settings_table[1]['fg_colour']=normal
    elseif temperature<crit_value then
        settings_table[1]['fg_colour']=warn
    else
        settings_table[1]['fg_colour']=crit
    end
end

-- Contrôle de l'interface active
function iface_watch()

    iface=conky_parse("${if_existing /proc/net/route eth0}eth0${else}wlan0${endif}")

    settings_table[11]['arg']=iface
    settings_table[12]['arg']=iface
end

function conky_draw_bg()
    if conky_window==nil then return end
    local w=conky_window.width
    local h=conky_window.height
    local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
    cr=cairo_create(cs)
    
    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-corner_r)
    cairo_curve_to(cr,w,h,w,h,w-corner_r,h)
    cairo_line_to(cr,corner_r,h)
    cairo_curve_to(cr,0,h,0,h,0,h-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)
end


function conky_main()
    temp_watch()
    disk_watch()
    iface_watch()
    conky_ring_stats()
-- quand fond nécessaire
--    conky_draw_bg()
end
Male is the capital of the Maldives and its wonderful people.

User avatar
Jerry3904
Forum Veteran
Forum Veteran
Posts: 24581
Joined: Wed Jul 19, 2006 6:13 am

Re: want to detect battery for conky

#28

Post by Jerry3904 » Tue Jan 15, 2019 9:16 am

Thanks. I tried this on wlan0, but it did not seem to work even after changing the lua document.

Will test later on eth0 here.
Production: 4.15.0-1-amd64, MX-17.1, AMD FX-4130 Quad-Core, GeForce GT 630/PCIe/SSE2, 8 GB, SSD 120 GB, Data 1TB
Testing: AAO 722: 4.15.0-1-386. MX-17.1, AMD C-60 APU, 4 GB
Personal: XPS 13, 4.18.0-19.3-liquorix, 4 GB

User avatar
Eadwine Rose
Forum Veteran
Forum Veteran
Posts: 8201
Joined: Wed Jul 12, 2006 2:10 am

Re: want to detect battery for conky

#29

Post by Eadwine Rose » Tue Jan 15, 2019 1:56 pm

Ok I haven't followed this but I DO know that positions of the output can differ on various machines.. so.. it could seem like not working where maybe position indication numbers need changing.
MX-18.3_x64 May 26 2019 * 4.19.0-5-amd64 ext4 Xfce 4.12.3 * 8-core AMD Ryzen 7 2700
Asus TUF B450-Plus Gaming UEFI * Asus GTX 1050 Ti Nvidia 390.116 * 2x16Gb DDR4 2666 Kingston HyperX Predator
Samsung 860EVO * Samsung S24D330 & P2250 * HP Envy5030

User avatar
male
Forum Regular
Forum Regular
Posts: 432
Joined: Thu Jan 23, 2014 8:38 am

Re: want to detect battery for conky

#30

Post by male » Wed Jan 16, 2019 6:19 am

Image Image

The fact that wlan is not displayed in the Lua rings is because the wrong call is started in the .conkyrc.

Code: Select all

lua_draw_hook_pre conky_main
instead of

Code: Select all

lua_draw_hook_pre ring_stats

The note can also be found in the Lua script.

Code: Select all

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.1.lua
	lua_draw_hook_pre ring_stats
Here again the complete configurations.
conkyrc

Code: Select all

# Conky settings #
background no
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
#imlib_cache_size 0

temperature_unit celsius

# Window specifications #
own_window_class Conky
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,skip_taskbar,skip_pager,below   #sticky,

border_inner_margin 0
border_outer_margin 0

minimum_size 520 600
maximum_width 520

alignment tl
gap_x 10
gap_y 60 

# Graphics settings #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

default_color gray
default_shade_color red
default_outline_color green

# Text settings #
use_xft yes
override_utf8_locale yes
xftfont Play:normal:size=7
xftalpha 0.9
uppercase no

default_color 333333
color0 778899  #414569
color1 dcdcdc
color2 1994D1
color3 000000  #ffffff 

# Lua Load  #
lua_load ~/.conky/conky_light/rings-v1.2.1.lua
lua_draw_hook_pre ring_stats
#lua_draw_hook_pre conky_main

TEXT
${voffset 18}${color3}${goto 120}${freq_g cpu0} Ghz${alignr 330}${platform thinkpad_hwmon temp 1}°C
${voffset 0}${goto 120}${color3}CPU 1 ${alignr 330}${color3}${cpu cpu0}%
${voffset 2}${goto 120}${color3}CPU 2${alignr 330}${color3}${cpu cpu1}%
${voffset 2}${goto 120}${color3}CPU 3${alignr 330}${color3}${cpu cpu0}%
${voffset 2}${goto 120}${color3}CPU 4${alignr 330}${color3}${cpu cpu1}%
${goto 50}${voffset 16}${color3}${top name 1}${alignr 306}${top cpu 1}%
${goto 50}${color3}${top name 2}${alignr 306}${top cpu 2}%
${goto 50}${color3}${top name 3}${alignr 306}${top cpu 1}%
${font Michroma:size=10}${color0}${goto 80}${voffset 4}CPU 
${font Michroma:size=10}${color0}${goto 394}${voffset 54}MEMORY ${font}
${goto 324}${voffset 10}${color3}${top_mem name 1}${alignr 40}${top_mem mem 1}%
${goto 324}${color3}${top_mem name 2}${alignr 40}${top_mem mem 2}%
${goto 324}${color3}${top_mem name 3}${alignr 40}${top_mem mem 3}%
${voffset 24}${goto 348}${color3}SWAP${alignr 40}${color3}${swap} / ${color3}${swapmax}
${voffset 4}${goto 348}${color3}RAM ${alignr 40}${color3}${mem} / ${color3}${memmax}
${goto 80}${voffset -68}Root${color3}${alignr 310}${fs_used /} / ${fs_size /}
${goto 80}${voffset 0}Home${alignr 310}${color3}${fs_used /home} / ${fs_size /home}
${goto 80}${voffset 0}Usr${alignr 310}${color3}${fs_used /usr} / ${fs_size /usr}
${font Michroma:size=10}${color0}${goto 66}${voffset 10}HARD  DRIVE ${font}
${font Michroma:size=10}${color0}${voffset 26}${goto 324}INTERNET  INFO ${font}
# EDITION FINIR WLAN
${if_existing /proc/net/route wlp2s2}${color3}${alignr 54}${voffset 4}WiFi  ${color3}${wireless_essid wlp2s2}
${color3}${goto 298}${voffset 2}Up${goto 370}${color3}${totalup wlp2s2} / ${color3}${upspeed wlp2s2}
${goto 298}${color3}Down${goto 370}${color3}${totaldown wlp2s2} / ${color3}${downspeed wlp2s2}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr wlp2s2}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 curl -w '\n' ident.me}
${font Michroma:size=9}${goto 90}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color3}${voffset -4}${time %H}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERIE ${font}
${font Play:size=8}${color0}${goto 278}${voffset 15}${color3}${battery_percent BAT0}%
# |--enp3s0
${else}${if_existing /proc/net/route enp3s0}${color3}${goto 298}${voffset 6}Up${goto 370}${color3}${totalup enp3s0} / ${color3}${upspeed enp3s0}
${goto 298}${color3}Down${goto 370}${color3}${totaldown enp3s0} / ${color3}${downspeed enp3s0}
${font Play:normal:size=8}${goto 300}${voffset 2}Local IP${goto 370}${addr enp3s0}
${font Play:normal:size=8}${goto 300}${voffset 1}Public IP${goto 370}${execi 3600 curl -w '\n' ident.me}
${font Michroma:size=9}${alignr 298}${voffset -42}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${goto 118}${color3}${voffset -4}${time %H}:${time %M}
${font Michroma:size=8}${color0}${goto 296}${voffset 18}BATTERIE ${font}
${font Play:size=8}${color0}${goto 278}${voffset 4}${color3}${battery_percent BAT0}%${endif}${endif}
#${goto 180}Uptime${color3}${alignr 100}${uptime_short}
${font Michroma:size=11}${color0}${voffset 70}${alignc}${execi 86400 cat /etc/mx-version}  ${machine}${font}
#${execpi 53 $HOME/conky/nagios.sh}
rings-v1.2.1.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 near the end of the script 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.1.lua
	lua_draw_hook_pre ring_stats
	
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)

        arg=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        fg_colour=0xf0651f,
        fg_colour=conky_parse("${if_up wlan0}wlan0${else}eth0${endif}"),
        conky_parse("${cpu}")
        name=conky_parse("${acpitemp}"),
]]

-- A TESTER
--set alarm value, this is the value at which bar color will change
--alarm_value=80
----set alarm bar color, 1,0,0,1 = red fully opaque
--ar,ag,ab,aa=1,0,0,1

-- couleurs 1
-- 1faaf0
-- f0651f
-- f01f42
-- couleurs 2 + flashy
-- 008cff
-- ff7200
-- ff000d

--normal_temp="0x1faaf0"
--warn_temp="0xf0651f"
--crit_temp="0xf01f42"
-- Un mélange des deux
normal="0x1faaf0"
warn="0xff7200"
crit="0xff000d"

-- seulement quand fond nécessaire
corner_r=35
bg_colour=0x333333
bg_alpha=0.2


settings_table = {
    
    {
        name='platform thinkpad_hwmon',
        arg='temp 1',
        max=110,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=97,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=86,
        thickness=13,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.7,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=71,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=57,
        thickness=11,
        start_angle=0,
        end_angle=240
    },
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.5,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=200, y=120,
        radius=44,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=60,
        thickness=15,
        start_angle=180,
        end_angle=420
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=340, y=234,
        radius=45,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    {
        name='fs_used_perc',
        arg='/',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=40,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/home',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=28,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='fs_used_perc',
        arg='/usr',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=220, y=280,
        radius=16,
        thickness=10,
        start_angle=0,
        end_angle=240
    },
    {
        name='downspeedf',
        arg='wlp2s2',
        max=2000,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=30,
        thickness=12,
        start_angle=180,
        end_angle=420
    },
    {
        name='upspeedf',
        arg='wlp2s2',
        max=200,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=290, y=346,
        radius=18,
        thickness=8,
        start_angle=180,
        end_angle=420
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.8,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=30,
        thickness=12,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%M',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=18,
        thickness=8,
        start_angle=0,
        end_angle=240
    },
    {
        name='time',
        arg='%H',
        max=24,
        bg_colour=0x000000,
        bg_alpha=0.4,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=230, y=410,
        radius=10,
        thickness=4,
        start_angle=0,
        end_angle=240
    },
    {
        name='battery_percent',
        arg='BAT0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.8,
        x=274, y=464,
        radius=18,
        thickness=10,
        start_angle=180,
        end_angle=420
    },
    --[[{
        name='',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.6,
        fg_colour=0x1faaf0,
        fg_alpha=0.6,
        x=274, y=464,
        radius=3,
        thickness=13,
        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_ring_stats()
	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
                display_temp=temp_watch()
		setup_rings(cr,settings_table[i])
	    end
	end
   cairo_surface_destroy(cs)
  cairo_destroy(cr)
end

-- Contrôle de l'espace disque
function disk_watch()

    warn_disk=93
    crit_disk=98

    -- poser une boucle plus tard... pas simple

    disk=tonumber(conky_parse("${fs_used_perc /}"))

    if disk<warn_disk then
        settings_table[8]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[8]['fg_colour']=warn
    else
        settings_table[8]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /home}"))

    if disk<warn_disk then
        settings_table[9]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[9]['fg_colour']=warn
    else
        settings_table[9]['fg_colour']=crit
    end

    disk=tonumber(conky_parse("${fs_used_perc /usr}"))

    if disk<warn_disk then
        settings_table[10]['fg_colour']=normal
    elseif disk<crit_disk then
        settings_table[10]['fg_colour']=warn
    else
        settings_table[10]['fg_colour']=crit
    end
end

-- Contrôle de la température
function temp_watch()

    warn_value=70
    crit_value=80

    temperature=tonumber(conky_parse("${acpitemp}"))

    if temperature<warn_value then
        settings_table[1]['fg_colour']=normal
    elseif temperature<crit_value then
        settings_table[1]['fg_colour']=warn
    else
        settings_table[1]['fg_colour']=crit
    end
end

-- Contrôle de l'interface active
function iface_watch()

    iface=conky_parse("${if_existing /proc/net/route eth0}eth0${else}wlan0${endif}")

    settings_table[11]['arg']=iface
    settings_table[12]['arg']=iface
end

function conky_draw_bg()
    if conky_window==nil then return end
    local w=conky_window.width
    local h=conky_window.height
    local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
    cr=cairo_create(cs)
    
    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-corner_r)
    cairo_curve_to(cr,w,h,w,h,w-corner_r,h)
    cairo_line_to(cr,corner_r,h)
    cairo_curve_to(cr,0,h,0,h,0,h-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)
end


function conky_main()
    temp_watch()
    disk_watch()
    iface_watch()
    conky_ring_stats()
-- quand fond nécessaire
--    conky_draw_bg()
end
Please note that this is tested on an old ThinkPad which has only two cores. So I had to do some tricks and put them under him twice in the configuration. Otherwise the whole configuration moves and it looks strange. ;)

And again, have fun :happy:


Edit: @Eadwine, what do you mean?
Male is the capital of the Maldives and its wonderful people.

Post Reply

Return to “MX Help”