#51 Le 10/07/2010, à 16:57
- Vermouth
Re : Postez vos scripts Lua pour Conky !
j'ai observé sont code lua et je n'est rien de différent, mais mes anneaux pour ces disques non monté me retourne la même occupation que ma racine
En parcourant (très) rapidement le script, je pense avoir trouver le problème.
Tu(le script) fait un "fs_used_perc" sur une partition non monté donc conky (le script lua utilise conky_parse, soit les mêmes valeurs que celle afficher dans conky avec les mêmes commandes) renvoie la valeur pour la racine.
Donc il faut que tu enlève ou ajoute dans settings_table les paramètres des partitions selon si elle sont monter ou non (pour celle susceptible de ne pas être monté).
Ce script est un poil trop "static" a mon goût.
Au mieux, tu met pas les partitions potentiellement non monté dans settings_table et tu fait un appel à setup_rings(dans conky_ring_stats) en passant le tableaux des paramètres qui faut (élément de settings_table correspondant à la partition).
Android !
\_/°<
coin coin...
Hors ligne
#52 Le 10/07/2010, à 20:02
- GrindeR
Re : Postez vos scripts Lua pour Conky !
je te le dis franchement j'ai pas tous compris!
Donc il faut que tu enlève ou ajoute dans settings_table les paramètres des partitions selon si elle sont monter ou non (pour celle susceptible de ne pas être monté).
j'en déduis qu'il faudrait que je rajoute un "if_mounted" quelque part dans les paramètre du dit anneaux, sauf que je viens d'éssayer plusieurs manière et sa me fait sauter tous les anneaux qui suivent dans la settings_table.
et la console me crache que lua n'arrive pas à calculer (pas étonnant)
Au mieux, tu met pas les partitions potentiellement non monté dans settings_table et tu fait un appel à setup_rings(dans conky_ring_stats) en passant le tableaux des paramètres qui faut (élément de settings_table correspondant à la partition).
ok je séche!
mais je comprend que je ne declare pas mes anneaux pour mes disques non monté dans la settings_table et que je les dessine au besoin si "monté" oui?
mais comment dans le code lua tu réalise ce test, car il faut bien testé , avant de dessiné sinon le preoblème reste le même!
en esperant que c'est clair ce coup si
Informaticien où Troll, j'ai choisis les deux!
MountyHall, la Terre des Trõlls
Hors ligne
#53 Le 10/07/2010, à 20:49
- Vermouth
Re : Postez vos scripts Lua pour Conky !
Je suis d'accord mes explications ne sont pas très clair !
Je suppose que la partition qui pose problème et /home/grinder
Bref, utilise la settings_table suivante (modif: on enlève grinder):
settings_table = {
{
name='memperc',
arg='',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x8B008B,
fg_alpha=0.7,
x=75, y=90,
radius=50,
thickness=10,
start_angle=91,
end_angle=270,
},
{
name="execpi 8 awk '/Cached/ {print $2/1024}' /proc/meminfo | head -1",
arg='',
max=2048,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x9932CC,
fg_alpha=0.7,
x=75, y=90,
radius=59,
thickness=5,
start_angle=91,
end_angle=180,
},
{
name="execpi 8 awk '/Buffers/ {print $2/(1024)}' /proc/meminfo",
arg='',
max=2048,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x9932CC,
fg_alpha=0.7,
x=75, y=90,
radius=59,
thickness=5,
start_angle=181,
end_angle=270,
},
{
name='swapperc',
arg='',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0xBA55D3,
fg_alpha=0.7,
x=75, y=90,
radius=65,
thickness=5,
start_angle=91,
end_angle=270,
},
{
name='execpi 8 sensors | grep -i "cpu temp" | cut -c 22-23',
arg='',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0xC71585,
fg_alpha=0.7,
x=185, y=90,
radius=40,
thickness=2,
start_angle=50,
end_angle=170,
},
{
name='execpi 8 sensors | grep -i "mb Temp" | cut -c 22-23',
arg='',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x9370DB,
fg_alpha=0.7,
x=185, y=90,
radius=40,
thickness=2,
start_angle=-70,
end_angle=50,
},
{
name='cpu',
arg='cpu1',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0xBA55D3,
fg_alpha=0.7,
x=185, y=90,
radius=45,
thickness=5,
start_angle=-89,
end_angle=89,
},
{
name='cpu',
arg='cpu2',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x9932CC,
fg_alpha=0.7,
x=185, y=90,
radius=51,
thickness=5,
start_angle=-89,
end_angle=89,
},
{
name='cpu',
arg='cpu0',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x8B008B,
fg_alpha=0.7,
x=185, y=90,
radius=60,
thickness=10,
start_angle=-89,
end_angle=89,
},
{
name='fs_used_perc',
arg='/',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x8B008B,
fg_alpha=0.7,
x=295, y=90,
radius=50,
thickness=10,
start_angle=91,
end_angle=269,
},
{
name='fs_used_perc',
arg='/media/Ubuntu',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x9932CC,
fg_alpha=0.7,
x=295, y=90,
radius=59,
thickness=5,
start_angle=91,
end_angle=269,
},
{
name='fs_used_perc',
arg='/media/WIN-XP',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0xBA55D3,
fg_alpha=0.7,
x=295, y=90,
radius=65,
thickness=5,
start_angle=91,
end_angle=269,
},
}
Et dans conky_ring_stats tu rajoute:
local grinder = {
name='fs_used_perc',
arg='/home/grinder',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x8B008B,
fg_alpha=0.7,
x=405, y=90,
radius=60,
thickness=10,
start_angle=-89,
end_angle=89,
}
if conky_parse("${if_mounted /home/grinder}y${else}n${endif}") == "y" then
draw_ring(cr, grinder)
end
Et ça devrais marcher...
Tu répète l'opération pour toute les partitions pouvant ne pas être monter.
Android !
\_/°<
coin coin...
Hors ligne
#54 Le 11/07/2010, à 09:13
- wlourf
Re : Postez vos scripts Lua pour Conky !
Salut,
Une autre solution : à la place d'afficher ou non l'anneau, tu peux mettre sa valeur à 0 (ou 100% ou autre chose, ça dépend de tes goûts ), tu gardes ta table initiale et tu changes la fonction conky_rings_stats par celle-ci
function conky_ring_stats()
local function setup_rings(cr,pt)
local str=''
local value=0
if pt.name~="" then
str=string.format('${%s %s}',pt['name'],pt['arg'])
value=tonumber(conky_parse(str))
else
value=tonumber(pt.arg)
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>6 then
if conky_parse("${if_mounted /home/grinder}y${else}n${endif}") == "n" then
for i,t in pairs(settings_table) do
if t.arg == "/home/grinder" then
t.name,t.arg="",0
break
end
end
end
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
Explications : (j'arrive pas à metre en gras dans la balise code alors je recopie) :
if conky_parse("${if_mounted /home/grinder}y${else}n${endif}") == "n" then
for i,t in pairs(settings_table) do
if t.arg == "/home/grinder" then
t.name,t.arg="",0
break
end
end
end
on vérifie si la partition est montée, si pas monté : on parcourt la table settings_table pour trouver la sous-table qui a arg="/home/grinder". Quand elle est trouvée, on modifie la valeur de arg et de name avec t.name="" et t.arg=0.
puis :
if pt.name~="" then
str=string.format('${%s %s}',pt['name'],pt['arg'])
value=tonumber(conky_parse(str))
else
value=tonumber(pt.arg)
end
on modifie la fonction pour afficher une valeur (arg) à la place d'une variable conky.
a+
Edit: si tu as plusieurs disques à vérifier, tu recopie la boucle "if_mounted", on pourrait faire qu'une seule boucle pour vérifier tout les disques mais bon, pour 2 petites vérifications, ça vaut peut-être pas le coup !
Dernière modification par wlourf (Le 11/07/2010, à 09:19)
Hors ligne
#55 Le 11/07/2010, à 10:23
- Vermouth
Re : Postez vos scripts Lua pour Conky !
Explications : (j'arrive pas à metre en gras dans la balise code alors je recopie) :
Code:if conky_parse("${if_mounted /home/grinder}y${else}n${endif}") == "n" then
for i,t in pairs(settings_table) do
if t.arg == "/home/grinder" then
t.name,t.arg="",0
break
end
end
endon vérifie si la partition est montée, si pas monté : on parcourt la table settings_table pour trouver la sous-table qui a arg="/home/grinder". Quand elle est trouvée, on modifie la valeur de arg et de name avec t.name="" et t.arg=0.
Mouai c'est bisare ta technique je trouve !
J'aurai fait plus simple dans le même esprit:
for i,t in pairs(settings_table) do
if t.name == "fs_used_perc" and conky_parse("${if_mounted " .. t.arg .. "}y${else}n${endif}") == "n" then
t.name,t.arg="",0
end
end
Comme ça ça vérifie toute les partitions.
Mais là le problème c'est que faite:
t.name,t.arg="",0
... va modifier settings_table donc en faite c'est pas une bonne idée (la mienne ou la tienne).
Le mieux serait:
function conky_ring_stats()
local function setup_rings(cr,pt)
local str=''
local value=0
if t.name == "fs_used_perc" and conky_parse("${if_mounted " .. t.arg .. "}y${else}n${endif}") == "n" then
draw_ring(cr,0,pt)
return;
end
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
if conky_window==nil then return end
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
avec juste l'ajout de:
if t.name == "fs_used_perc" and conky_parse("${if_mounted " .. t.arg .. "}y${else}n${endif}") == "n" then
draw_ring(cr,0,pt)
return;
end
..;dans setup_ring.
Dernière modification par Vermouth (Le 11/07/2010, à 10:24)
Android !
\_/°<
coin coin...
Hors ligne
#56 Le 11/07/2010, à 11:08
- wlourf
Re : Postez vos scripts Lua pour Conky !
ah mais ça ne me pose pas de problème de modifier la table settings personnellement, par contre bien ta façon de vérifier toutes les partitions mais dans ce cas tu vas appeler plusieurs fois (13 fois ici) conky_parse et ça doit pas être top
J'aurai plutôt mis :
if t.name == "fs_used_perc" then
if conky_parse("${if_mounted " .. t.arg .. "}y${else}n${endif}") == "n" then
draw_ring(cr,0,pt)
return;
end
end
et encore, on a souvent des partitions qui sont obligatoirement montées, donc j'aurai ajouté un paramètre facultatif dans les tables : "verif" pour ne vérifier que les partitions necessaires :
{
name='fs_used_perc',
arg='/data',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0xBA55D3,
fg_alpha=0.7,
x=295, y=90,
radius=65,
thickness=5,
start_angle=91,
end_angle=269,
verif=1,
},
{
name='fs_used_perc',
arg='/home',
max=100,
bg_colour=0xFFFFFF,
bg_alpha=0.05,
fg_colour=0x8B008B,
fg_alpha=0.7,
x=405, y=90,
radius=60,
thickness=10,
start_angle=-89,
end_angle=89,
},
si verif est présent avec n'importe quelle valeur, on vérifie si le disque est monté, sinon, on applique la procédure normale (j'en profite pour raccourcir la ligne conky_parse)
if pt.verif ~=nil then
if conky_parse("${if_mounted " .. pt.arg .. "}y${endif}") ~= "y" then
draw_ring(cr,0,pt)
return;
end
end
au final , ça donnerai :
function conky_ring_stats()
local function setup_rings(cr,pt)
local str=''
local value=0
if pt.verif ~=nil then
if conky_parse("${if_mounted " .. pt.arg .. "}y${endif}") ~= "y" then
draw_ring(cr,0,pt)
return;
end
end
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
if conky_window==nil then return end
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
j'espère que grinder va s'y retrouver
Hors ligne
#57 Le 11/07/2010, à 11:57
- Vermouth
Re : Postez vos scripts Lua pour Conky !
ah mais ça ne me pose pas de problème de modifier la table settings personnellement
Oui mais une fois que tu a mis name à "", tu perd la commande original. Donc même si la partition est monté plus tard...
ah mais ça ne me pose pas de problème de modifier la table settings personnellement, par contre bien ta façon de vérifier toutes les partitions mais dans ce cas tu vas appeler plusieurs fois (13 fois ici) conky_parse et ça doit pas être top tongue
J'aurai plutôt mis :
Non car si le premier teste est faux, le deuxième n'est même pas fait (car faux et quelque_chose est toujours faux).
et encore, on a souvent des partitions qui sont obligatoirement montées, donc j'aurai ajouté un paramètre facultatif dans les tables : "verif" pour ne vérifier que les partitions necessaires :
Bonne solution aussi.
Android !
\_/°<
coin coin...
Hors ligne
#58 Le 11/07/2010, à 13:08
- wlourf
Re : Postez vos scripts Lua pour Conky !
ok merci de tes conseils
Hors ligne
#59 Le 11/07/2010, à 18:56
- GrindeR
Re : Postez vos scripts Lua pour Conky !
vous n'avez pas perdus de temps!!
j'en retiens de vos propositions plein de chose intéressante
tout particulierement le coup de
et encore, on a souvent des partitions qui sont obligatoirement montées, donc j'aurai ajouté un paramètre facultatif dans les tables : "verif" pour ne vérifier que les partitions nécessaires
maintenant j'ai essayer à la suite vos différentes propositions et je n'avais toujours pas le résultat attendus bien que tous paraissent logiques...
et la eurêka!
j'avais agrémenter mon "fstab" d'entrées pour gérer les différentes partitions supplémentaires, et donc j'avais créer les points de montages.
j'ai restaurer mon fstab d'origine et quand j'accède a la volée sur les dites partitions le point de montage ce créer/détruit tout seul et la plus de problème!
je me sens bête du coup...
Dernière modification par GrindeR (Le 11/07/2010, à 18:57)
Informaticien où Troll, j'ai choisis les deux!
MountyHall, la Terre des Trõlls
Hors ligne
#60 Le 15/07/2010, à 18:25
- wlourf
Re : Postez vos scripts Lua pour Conky !
bonjour,
J'ai fait une mise à jour d'un vieux script qui affiche des barres ... il est plus simple d'utilisation (on passe par des tables) et j'ai ajouté quelques effets comme la réflexion.
Le script est téléchargeable sur deviantArt.
Je ne suis pas le premier ni le dernier à faire des bargraphs mais voici un exemple de config sympatique avec ce script je posterai un conky un peu plus tard
{
name="",
arg=70,
max=100,
bg_colour={0x00ff33,0},
fg_colour={0xffff00,0},
bg_led={0x00ff33,0.5},
fg_led={0xffff00,1},
blocks=20,
height=10,width=40,
angle=90,
led_effect="r",
reflection_alpha=1,
reflection="r"
},
Dernière modification par wlourf (Le 12/01/2011, à 20:03)
Hors ligne
#61 Le 15/07/2010, à 19:50
- Fenouille84
Re : Postez vos scripts Lua pour Conky !
@ wlourf
Cool ton script, et vraiment très simple d'usage !! Bravo !!
Par contre, comment faire pour y intégrer le correctif pour hddtemp ?
Toutes les modif ont été postées pour des anneaux, pas des barres...
Oui, je n'y connais rien au Lua
Edit :
J'ai trouvé une solution, ultra basique, mais qui fonctionne et supprime le clignotement ^^
name="exec",
arg="hddtemp /dev/sda | cut -c 24-25"
Dernière modification par Fenouille84 (Le 15/07/2010, à 20:13)
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#62 Le 15/07/2010, à 20:33
- wlourf
Re : Postez vos scripts Lua pour Conky !
mince alors, j'allais poster *exactement* la même réponse quand j'ai vu ton edit ! car chez moi non plus hddtemp dans conky ne fonctionne pas, n'oublie pas le max=100, voire moins !
Hors ligne
#63 Le 15/07/2010, à 20:37
- Fenouille84
Re : Postez vos scripts Lua pour Conky !
@wlourf
Oui, j'ai mis un max=50.
C'est pas trop bon si les disques durs dépassent les 50-55 degrés...
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#64 Le 22/07/2010, à 12:14
- GrindeR
Re : Postez vos scripts Lua pour Conky !
J'ai été faire un tour sur le fofo russe la où vous avez trouvés le calendrier/boussole en début de topic
ils ont faits plusieurs scripts très intéressants et je suis en train d'essayer de mixer le texte en cerle avec mon script mais ça fonctionne pas vraiment.
au début ça allais comme j'utilisais le code greffon à l'état brut, mais j'ai voulus le modifier pour pouvoir utiliser une table de paramètre et la patatras!! ça veux pas!
si on peut utiliser un table de paramètre on doit pouvoir en utiliser plusieurs, non?
le résultat en console :
grinder@Obuntu||~$
Conky: desktop window (15a) is root window
Conky: window type - desktop
Conky: drawing to created window (0x1000001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_textes_rings execution failed: /home/grinder/.conky/scripts/mod_rings.lua:354: attempt to index local 'pt' (a nil value)
Conky: llua_do_call: function conky_textes_rings execution failed: /home/grinder/.conky/scripts/mod_rings.lua:354: attempt to index local 'pt' (a nil value)
il y'a pas plus clair, j'ai un problème de déclaration, sauf que je ne comprend pas pourquoi! j'ai vérifier et revérifier toutes mes substitutions et je trouve rien qui cloche!
et le code lua
--[[
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_widget
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)
]]
--[[START RINGS SETTINGS]]
rings_settings={
-- FIRST RINGS GROUP
{
name='memperc', arg='',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=90,
radius=40, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='swapperc', arg='',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=90,
radius=55, thickness=15,
start_angle=-75, end_angle=115,
},
{
name="execpi 8 awk '/Cached/ {print $2/1024}' /proc/meminfo | head -1", arg='',
max=2048,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=90,
radius=70, thickness=15,
start_angle=-75, end_angle=115,
},
{
name="execpi 8 awk '/Buffers/ {print $2/(1024)}' /proc/meminfo", arg='',
max=2048,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=90,
radius=85, thickness=15,
start_angle=-75, end_angle=115,
},
-- SECOND RINGS GROUP
{
name='cpu', arg='cpu2',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=235,
radius=40, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='cpu', arg='cpu1',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=235,
radius=55, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='cpu', arg='cpu0',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=235,
radius=70, thickness=15,
start_angle=-75, end_angle=115,
},
-- THIRD RINGS GROUP
{
name='fs_used_perc', arg='/',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=388,
radius=40, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='fs_used_perc', arg='/media/disk',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=388,
radius=55, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='fs_used_perc', arg='/media/WIN-XP',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=388,
radius=70, thickness=15,
start_angle=-75, end_angle=115,
},
-- FOURTH RINGS GROUP
{
name='fs_used_perc', arg='/home/grinder',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=541,
radius=40, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='fs_used_perc', arg='/media/DOCTECHINFO',
max=100,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=541,
radius=55, thickness=15,
start_angle=-75, end_angle=115,
},
-- FIFTH RINGS GROUP
{
name='downspeedf', arg='',
max=4096,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=694,
radius=40, thickness=15,
start_angle=-75, end_angle=115,
},
{
name='upspeedf', arg='',
max=8192,
bg_colour=0xFFFFFF, bg_alpha=0.07,
fg_colour=0x1E90FF, fg_alpha=0.5,
x=100, y=694,
radius=55, thickness=15,
start_angle=-75, end_angle=115,
},
}
--[[END RINGS SETTINGS]]
--[[START TEXT RINGS SETTINGS]]
textes_settings={
-- FIRST TEXT RINGS GROUP
{
preffix='Mem',
name='memperc',
arg='',
suffix='%',
font='Monospace',
fontsize=10,
radius=35,
x=87.5,
y=82,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
{
preffix='Swap',
name='swapperc',
arg='',
suffix='%',
font='Monospace',
fontsize=10,
radius=48,
positionx=87.5,
positiony=82,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
{
preffix='Cache',
name='cached',
arg='',
suffix='',
font='Monospace',
fontsize=10,
radius=61,
x=87,5,
y=82,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
{
preffix='Buff',
name='buffers',
arg='',
suffix='',
font='Monospace',
fontsize=10,
radius=74,
x=87.5,
y=82,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
-- SECOND TEXT RINGS GROUP
{
preffix='Cpu',
name='cpu',
arg='cpu0',
suffix='%',
font='Monospace',
fontsize=10,
radius=61,
x=87.5,
y=235,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
{
preffix='Core0',
name='cpu',
arg='cpu1',
suffix='%',
font='Monospace',
fontsize=10,
radius=48,
x=87.5,
y=235,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
{
preffix='Core1',
name='cpu',
arg='cpu2',
suffix='%',
font='Monospace',
fontsize=10,
radius=35,
x=87.5,
y=235,
fg_colour=0xffffff,
fg_alpha=1,
start=-90,
angle_end=50,
letterposition=0.5,
},
-- THIRD TEXT RINGS GROUP
{
preffix='FileSys',
name='fs_used_perc',
arg='/',
suffix='%',
font='Monospace',
fontsize=10,
radius=75,
x=87.5,
y=300,
fg_colour=0xffffff,
fg_alpha=1,
angle_start=-90,
angle_end=50,
letterposition=0.5,
},
}
--[[END TEXT RINGS SETTINGS]]
require 'cairo'
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-- ----------------------------------------------------------------------
--[[ START RING WIDGET ]]
function draw_ring(cr,t,pt)
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_cap (cr, CAIRO_LINE_CAP_ROUND)
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_stats_rings()
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)
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
-- Check that Conky has been running for at least 5s
if conky_window==nil then return end
local w,h=conky_window.width,conky_window.height
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, w, h)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(rings_settings) do
setup_rings(cr,rings_settings[i])
end
end
end
--[[ END RING WIDGET ]]
-- ----------------------------------------------------------------------
--[[ CIRCLTEXT WIDGET ]]
function draw_text(cr,pt)
local xt,yt,text_r,text_w,ast,aet,let_pos=pt['x'],pt['y'],pt['radius'],pt['fontsize'],pt['angle_start'],pt['angle_end'],pt['letterposition']
local fgc, fga=pt['fg_colour'],pt['fg_alpha']
function addzero100(num)
if tonumber(num) == nil then return end
if tonumber(num) < 10 then
return " " .. num
elseif tonumber(num) <100 then
return " " .. num
else
return num
end
end
function string:split(delimiter)
local result = { }
local from = 1
local delim_from, delim_to = string.find( self, delimiter, from )
while delim_from do
table.insert( result, string.sub( self, from , delim_from-1 ) )
from = delim_to + 1
delim_from, delim_to = string.find( self, delimiter, from )
end
table.insert( result, string.sub( self, from ) )
return result
end
str = string.format('${%s %s}', name, arg)
str = conky_parse(str)
value = tonumber(str)
if value == nil then
text=(preffix .. str .. suffix)
else
text=(preffix .. (addzero100(value)) .. suffix)
end
local inum=string.len(text)
range=ae
deg=(aet-ast)/(inum-1)
degrads=1*(math.pi/180)
local textcut=string.gsub(text, ".", "%1@@@")
texttable=string.split(textcut, "@@@")
for i = 1,inum do
ival=i
interval=(degrads*(ast+(deg*(i-1))))+let_pos
interval2=degrads*(ast+(deg*(i-1)))
txs=0+text_r*(math.sin(interval))
tys=0-text_r*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, text_w);
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_move_to (cr, txs+xt, tys+yt);
cairo_rotate (cr, interval2)
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2)
end
end
-- -----------------------------------------------------------------------
function conky_textes_rings()
if conky_window == nil then return end
local w,h=conky_window.width,conky_window.height
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual,w,h)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(textes_settings) do
--print ("i",i)
draw_text(textes_settings[i])
end
--cairo_destroy(cr)
end
end
--[[ END CIRCLTEXT WIDGET ]]
Informaticien où Troll, j'ai choisis les deux!
MountyHall, la Terre des Trõlls
Hors ligne
#65 Le 22/07/2010, à 13:51
- Vermouth
Re : Postez vos scripts Lua pour Conky !
Ligne 430:
draw_text(textes_settings[i])
draw_text prend 2 paramètres dont le premier est un cairo_context je suppose...
Android !
\_/°<
coin coin...
Hors ligne
#66 Le 11/08/2010, à 15:28
- Pacito
Re : Postez vos scripts Lua pour Conky !
Salut !
Conky et lua m'interresse mais je debute tout juste.
Sinon j'ai adapte un script lua pour avoir des compteurs (sur la ram, swap, etc) mais j'ai deux problemes :
-> j ai place du texte a l interieur des rond via le .conkyrc. Est il possible de place le texte en absolu
(car tout doit etre place a la main avec des espaces)
-> et l affichage de la temperature plante (malgre l astuce de Fenouille84) : les trois derniers cercles clignotent
par contre tout va bien quand je supprime le compteur de temperature
settings_table = {
-- RAM
{
name='memperc',
arg='perc',
max=60,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0x003F95,
fg_alpha=0.8,
x=50, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=450
},
-- SWAP
{
name='swapperc',
arg='',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0x0AA300,
fg_alpha=0.8,
x=150, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=360
},
-- CPU1
{
name='cpu',
arg='cpu1',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0xFF7600,
fg_alpha=0.8,
x=250, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=360
},
-- CPU2
{
name='cpu',
arg='cpu2',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0xFF7600,
fg_alpha=0.8,
x=350, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=360
},
-- TEMPERATURE
--[[ {
name='exec',
arg='hddtemp /dev/sda | cut -c 24-25',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0xC00000,
fg_alpha=0.8,
x=450, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=360
},]]
-- PARTITION /
{
name='fs_used_perc',
arg='/',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0x7C008C,
fg_alpha=0.8,
x=550, y=50,
radius=40,
thickness=7,
start_angle=0,
end_angle=360
},
-- PARTITION /home
{
name='fs_used_perc',
arg='/home',
max=100,
bg_colour=0x000000,
bg_alpha=0.2,
fg_colour=0x590364,
fg_alpha=0.8,
x=650, y=50,
radius=40,
thickness=7,
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_compteurs()
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)
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
if conky_window==nil then return end
local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
setup_rings(cr,settings_table[i])
end
end
end
Merci !!!
Dernière modification par Pacito (Le 26/08/2010, à 14:07)
Hors ligne
#67 Le 11/08/2010, à 17:02
- Fenouille84
Re : Postez vos scripts Lua pour Conky !
Est il possible de place le texte en absolu
(car tout doit etre place a la main avec des espaces)
Essaye avec la variable goto :
${goto 150}Ton texte1 ${goto 320}texte n°2
Sinon pour la température, je ne sais pas...
Dernière modification par Fenouille84 (Le 11/08/2010, à 17:03)
Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --
Hors ligne
#68 Le 11/08/2010, à 17:30
- chepioq
Re : Postez vos scripts Lua pour Conky !
@Pacito
Peux tu nous mettre ton conkyrc, que je le teste aussi.
Tout est dans tout et réciproquement....
Hors ligne
#69 Le 11/08/2010, à 17:31
- Pacito
Re : Postez vos scripts Lua pour Conky !
Les goto fonctionnent parfaitement !
J ai supprimer la temperature de mon conky pour l instant, ca me parait pas etre une information capitale.
Hors ligne
#70 Le 11/08/2010, à 18:48
- wlourf
Re : Postez vos scripts Lua pour Conky !
-> j ai place du texte a l interieur des rond via le .conkyrc. Est il possible de place le texte en absolu
(car tout doit etre place a la main avec des espaces)
Pacito, autre méthode en Lua pour placer ton texte :
au post 15 de ce topic, il y a un script Lua qui te permet de placer précisément le texte, mais il n'est pas multiligne. Il se configure de la même manière que les anneaux, avec des tables :
{
text=conky_parse("${time %H:%M}"),
x=100,
y=100,
h_align="c", --c pour centre
v_align="m", --m pour milieu
colour={{0,0xFF0000,1}}, --1 table insérée dans une table : 0 = position pour le gradient (absent ici), couleur, opacité
},
le bout de code ci-dessus affichera l'heure en rouge centré horizontalement et verticalement autour du point 100,100, donc pile-poil au milieu du cercle si son centre est le point 100,100.Après à toi de voir si c'est pas excessif comme méthode pour tes besoins !
Hors ligne
#71 Le 11/08/2010, à 19:04
- Pacito
Re : Postez vos scripts Lua pour Conky !
Ok bah merci pour le code, se sera plus propre et le texte sera toujours centre (sinon ca depend de la taille du texte qui varie)
Donc je place tout ca dans settings_table
Hors ligne
#72 Le 11/08/2010, à 19:15
- wlourf
Re : Postez vos scripts Lua pour Conky !
Ok bah merci pour le code, se sera plus propre et le texte sera toujours centre (sinon ca depend de la taille du texte qui varie)
Donc je place tout ca dans settings_table
Attention, il faut le placer dans setting table du script du post 15! pas dans le script des anneaux.
le plus simple, si tu n'est pas à l'aise en Lua c'est d'avoir un appel avec le script Anneaux comme tu dois le faire actuellement avec :
lua_load ~/scripts/rings.lua
lua_draw_hook_pre main_rings --cet un exemple, utilise le nom réel de la fonction
et ajouter un appel vers le script Text qui sera dans un autre fichier
lua_load ~/scripts/text.lua
lua_draw_hook_post draw_text
Par la suite, tu pourras mettre les deux dans le même fichier
Hors ligne
#73 Le 11/08/2010, à 21:31
- Pacito
Re : Postez vos scripts Lua pour Conky !
quand je ne charge que rings.lua, j obtiens ca en console, et ca fonctionne :
~$ conky
Conky: desktop window (1e000a9) is subwindow of root window (11a)
Conky: window type - override
Conky: drawing to created window (0x2e00001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_rings execution failed: /home/pacito/.conky/rings.lua:135: attempt to perform arithmetic on local 'value' (a nil value)
Conky: llua_do_call: function conky_rings execution failed: /home/pacito/.conky/rings.lua:135: attempt to perform arithmetic on local 'value' (a nil value)
quand j incere ;
# -- Lua Load -- #
lua_load ~/.conky/rings.lua
lua_draw_hook_pre rings
lua_load ~/.conky/load_text.lua
lua_draw_hook_post load_text
les anneaux arrivent en retard et il n y a pas de texte (apres TEXT c est vide : juste une ligne vide) et j ai des erreurs :
~$ conky
Conky: desktop window (1e000a9) is subwindow of root window (11a)
Conky: window type - override
Conky: drawing to created window (0x2e00001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_rings execution failed: /home/pacito/.conky/rings.lua:135: attempt to perform arithmetic on local 'value' (a nil value)
Conky: llua_do_call: function conky_rings execution failed: /home/pacito/.conky/rings.lua:135: attempt to perform arithmetic on local 'value' (a nil value)
mon load_text.lua
function conky_load_text()
text_settings = {
{
text=conky_parse("RAM"),
x=50,
y=50,
h_align="c", --c pour centre
v_align="m", --m pour milieu
colour={{0,0xFF0000,1}}, --1 table insérée dans une table : 0 = position pour le gradient (absent ici), couleur, opacité
bold=true,
},
}
end
pourtant j ai pas touche toute cette partie du script (je comprend pas encore ce qu il s y passe !!!)
Hors ligne
#74 Le 11/08/2010, à 22:55
- wlourf
Re : Postez vos scripts Lua pour Conky !
Si, je crois que tu as mangé une partie de la fonction du texte, ça devrait être (tout ce qu'il y a après "FIN DES PARAMETRES" avit disparu):
function conky_load_text()
--DEBUT DES PARAMETRES
text_settings = {
{
text=conky_parse("RAM"),
x=50,
y=50,
h_align="c", --c pour centre
v_align="m", --m pour milieu
colour={{0,0xFF0000,1}}, --1 table insérée dans une table : 0 = position pour le gradient (absent ici), couleur, opacité
bold=true,
},
}
--------------FIN DES PARAMETERES----------------
if conky_window == nil then return end
if tonumber(conky_parse("$updates"))<3 then return end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
for i,v in pairs(text_settings) do
cr = cairo_create (cs)
display_text(v)
cairo_destroy(cr)
end
cairo_surface_destroy(cs)
end
Les erreurs proviennent du script ring, d'ailleurs tu les as déjà quand tu appelles ce script tout seul (probablement une variable conky qui affiche #N/A par intermittence, ce qui devrait faire clignoter un anneau, "probablement" hein).
Tu peux aussi charger tes 2 fichiers sur une seule ligne
lua_load ~/.conky/rings.lua ~/.conky/load_text.lua
lua_draw_hook_pre lancera ta fonction avant l'exécution du conky
lua_draw_hook_post lancera ta fonction après l'exécution du conky, ce qui explique qu'il y ait un décalage dans l'affichage, tu ne peux actuellement pas avoir plusieurs lua_draw_hook_pre ou post dans un même conky ... enfin si tu peux, mais seul le dernier appelé fonctionnera.
Comme ça tu ne peux appeler que deux fonctions, pour en appeler plus il faudrait créer une fonction Lua qui appelle les autres fonctions.
Bon courage
Hors ligne
#75 Le 12/08/2010, à 15:00
- Pacito
Re : Postez vos scripts Lua pour Conky !
J ai encore quelques reglages a peaufiner :
Quand j appelle load_text
# -- Lua Load -- #
lua_load ~/.conky/rings.lua ~/.conky/load_text.lua
lua_draw_hook_pre ring_stats
lua_draw_hook_post load_text
J obtiens cette erreur
Conky: llua_do_call: function conky_load_text execution failed: /home/pacito/.conky/load_text.lua:23:attempt to call global 'display_text' (a nil value)
Pour le script rings.lua j ai l erreur
Conky: llua_do_call: function conky_ring_stats execution failed: /home/pacito/.conky/rings.lua:88: attempt to perform arithmetic on local 'value' (a nil value)
qui renvoie a : pct=value/pt['max']
quand j utilise les anneaux pour afficher les heures, minutes, secondes pas de probleme
Par contre pour memperc, swapperc ou le cpu, j ai l erreur
name='cpu',
arg='cpu1',
Pourtant cpu et memtest renvoient bien un pourcentage et c est en indication dans le script de depart
Hors ligne