Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#101 Le 12/10/2010, à 20:15

chepioq

Re : Postez vos scripts Lua pour Conky !

Bonjour tout le monde...
En relisant ce sujet, et en particulier le post #15 sur le texte dans lua, je me posai une question:
Est-il possible, avec lua, d'avoir un texte qui suit une courbe, par exemple un texte qui soit comme un anneau?


Tout est dans tout et réciproquement....

Hors ligne

#102 Le 12/10/2010, à 21:41

wlourf

Re : Postez vos scripts Lua pour Conky !

salut chepioq,

regarde ce post : http://crunchbanglinux.org/forums/post/55708/#p55708
mais bon, c'est un peu lourd car le script calcul la rotation pour chaque lettre...
j'avais commencé quelquechose en utilisant les fonctions de cairo qui vont bien, en prenant exemple sur warpedtext.py , un script que tu dois trouver sur ton disque dur si tu as pycairo d'installé.
J'arrive à modifier ce script en python, mais pour le passer en Lua je bloque un peu en ce moment !

Lance le script ci-dessus et ça te créera une image warpedtext.png dans ton $HOME !

Hors ligne

#103 Le 13/10/2010, à 06:40

chepioq

Re : Postez vos scripts Lua pour Conky !

Bonjour wlourf,
J'ai essayé le script lua que tu m'a indiqué, et cela fonctionne:

--[[circlewriting by mrpeachy (2010)]]
require 'cairo'
function addzero100(num)
if num==nil then num=0 end
if tonumber(num) < 10 then
return "00" .. num
elseif tonumber(num) <100 then
return "0" .. 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
function circlewriting(cr, text, font, fsize, radi, horiz, verti, tred, tgreen, tblue, talpha, start, finish, var1)
local inum=string.len(text)
range=finish
deg=(finish-start)/(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*(start+(deg*(i-1))))+var1
interval2=degrads*(start+(deg*(i-1)))
txs=0+radi*(math.sin(interval))
tys=0-radi*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, fsize);
cairo_set_source_rgba (cr, tred, tgreen, tblue, talpha);
cairo_move_to (cr, txs+horiz, tys+verti);
cairo_rotate (cr, interval2)
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2)
end
end
function circlewritingdown(cr, text, font, fsize, radi, horiz, verti, tred, tgreen, tblue, talpha, start, finish, var1)
local inum=string.len(text)
deg=(start-finish)/(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*(start-(deg*(i-1))))+var1
interval2=degrads*(start-(deg*(i-1)))
txs=0+radi*(math.sin(interval))
tys=0-radi*(math.cos(interval))
cairo_select_font_face (cr, font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, fsize);
cairo_set_source_rgba (cr, tred, tgreen, tblue, talpha);
cairo_move_to (cr, txs+horiz, tys+verti);
cairo_rotate (cr, interval2+(180*math.pi/180))
cairo_show_text (cr, (texttable[i]))
cairo_rotate (cr, -interval2-(180*math.pi/180))
end
end
function conky_draw_text()
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num > 5 then
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)



--circlewriting variable
cpu=tonumber(conky_parse('${cpu}'))
--text must be in quotes
text=("CPU " .. (addzero100(cpu)) .. "%") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=80
positionx=100
positiony=150
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450.  Finish has to be greater than start.
start=0
finish=120
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewritingdown variables
mem=tonumber(conky_parse('${memperc}'))
--text must be in quotes
text=("MEMORY " .. (addzero100(mem)) .. "%")
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=90
positionx=230
positiony=270
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewritingdown, if the text will cross 0 degrees then you must calculate for 0-finish degrees
--eg if you want to go from 90 to 270, then you will input 90 to -90.  Start has to be greater than finish
start=300
finish=180
letterposition=0
circlewritingdown(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewritingdown variable
hdd=tonumber(conky_parse('${fs_used_perc /}'))
--text must be in quotes
text=("FILESYS " .. (addzero100(hdd)) .. "%") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=80
positionx=260
positiony=280
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewritingdown, if the text will cross 0 degrees then you must calculate for 0-finish degrees
--eg if you want to go from 90 to 270, then you will input 90 to -90.  Start has to be greater than finish
start=180
finish=0
letterposition=0.06
circlewritingdown(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)

--circlewriting variables
swap=tonumber(conky_parse('${swapperc}'))
--text must be in quotes
text=("SWAP " .. (addzero100(swap)) .. "% ") 
--font name must be in quotes
font="White Rabbit"
fontsize=18
radius=60
positionx=105
positiony=130
colorred=1
colorgreen=1
colorblue=1
coloralpha=1
--to set start and finish values for circlewriting, if the text will cross 0 degrees then you must calculate for 360+finish degrees
--eg if you want to go from 270 to 90, then you will input 270 to 450.  Finish has to be greater than start.
start=200
finish=340
letterposition=0
circlewriting(cr, text, font, fontsize, radius, positionx, positiony, colorred, colorgreen, colorblue, coloralpha, start, finish, letterposition)


end
end

cela s"affiche bien, mais j'ai une erreur, qui ne bloque pas le conky:

[dominique@localhost conky-texte]$ conky -c conkyrc
Conky: desktop window (1e01182) is subwindow of root window (15b)
Conky: window type - normal
Conky: drawing to created window (0x2200002)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_draw_text execution failed: /home/dominique/.conkyrc/conky-texte/text.lua:4: attempt to compare nil with number
Conky: llua_do_call: function conky_draw_text execution failed: /home/dominique/.conkyrc/conky-texte/text.lua:4: attempt to compare nil with number
^CConky: received SIGINT or SIGTERM to terminate. bye!
[dominique@localhost conky-texte]$ 

Dernière modification par chepioq (Le 13/10/2010, à 17:29)


Tout est dans tout et réciproquement....

Hors ligne

#104 Le 13/10/2010, à 17:28

chepioq

Re : Postez vos scripts Lua pour Conky !

Bon, en relisant tous les post précédents, j'ai vu la solution que tu as donné post 10, c'est à dire ajouter

if num==nil then num=0 end

après la ligne 3 "function addzero100(num)"
Et le conky se lance sans erreurs

Je l'ai ajouté dans le script du post précédent

Dernière modification par chepioq (Le 13/10/2010, à 17:31)


Tout est dans tout et réciproquement....

Hors ligne

#105 Le 20/10/2010, à 09:49

djipey

Re : Postez vos scripts Lua pour Conky !

Bonjour à vous.

J'avais besoin d'un script lua capable de créer un arrière plan un peu sombre pour pouvoir adapter mon conky sur tout type de fond d'écran.
J'en ai trouvé un, mais j'ai un petit problème.

Au début de la section TEXT de mon conky, il y a quelques lignes de code pour créer des images qui me servent dans mon conky. Le seul truc, c'est que ces lignes créent un espace vierge dans le conky final. Ce n'est pas un problème si le conky est transparent, mais dés que je veux créer un arrière plan, ça fait moche. Aussi je vous demande de l'aide pour adapter le script lua:

-- Tuto pris ici: http://conky-pitstop.wikidot.com/background-colour-with-lua-cairo
-- Un exemple: http://conky-pitstop.wdfiles.com/local--files/background-colour-with-lua-cairo/conky-lua-background.png



--[[
Background by londonali1010 (2009)

This script draws a background to the Conky window. It covers the whole of the Conky window, but you can specify rounded corners, if you wish.

To call this script in Conky, use (assuming you have saved this script to ~/scripts/):
    lua_load ~/scripts/draw_bg.lua
    lua_draw_hook_pre

Changelog:
+ v1.0 -- Original release (07.10.2009)
]]

-- Change these settings to affect your background.
-- "corner_r" is the radius, in pixels, of the rounded corners. If you don't want rounded corners, use 0.

corner_r=15

-- Set the colour and transparency (alpha) of your background.

bg_colour=0xffffff
bg_alpha=0.5

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

je voudrais faire  local h=conky_window.height - 200 par exemple, pour que la hauteur du cadre de l'arrière plan soit diminuée, mais ça ne marche pas.

Pourriez vous m'aider un peu s'il vous plait?

Hors ligne

#106 Le 20/10/2010, à 12:17

wlourf

Re : Postez vos scripts Lua pour Conky !

Je ne suis pas sûr de bien comprendre ! tu veux que ton arrière plan soit moins haut, donc avec

local h=conky_window.height -100

c'est bon, il sera moins haut

mais tu ne veux pas qu'il soit derrière tes images, donc il faut le baisser, utilise (pour le baisser de 100) :

cairo_translate(cr,0,100)

juste après

cr=cairo_create(cs)

Si c'est pas ça, envoie une capture de ce qui ne va pas !

Hors ligne

#107 Le 20/10/2010, à 12:51

djipey

Re : Postez vos scripts Lua pour Conky !

Non, en fait ce n'est pas exactement ça.

Je voudrais faire la première commande, mais elle ne marche pas.
regarde:

image

je veux juste baisser la hauteur du cadre, que le haut commence juste au dessus de Tux.

Hors ligne

#108 Le 20/10/2010, à 16:25

wlourf

Re : Postez vos scripts Lua pour Conky !

ok, alors utilise juste  cairo_translate(cr,0,100), ça décalera ton cadre de 100 pixels à partir du haut

Hors ligne

#109 Le 20/10/2010, à 22:17

djipey

Re : Postez vos scripts Lua pour Conky !

Lol, ça ne résout pas exactement le problème, mais le déplace wink

Il faut nécessairement que le cadre soit plus petit. Du genre: sur l'image il fait (je dis une bétise) 800, je voudrais le réduire à 600. Je voudrais supprimer l'espace vide de l'arrière plan au dessus de Tux.

Hors ligne

#110 Le 20/10/2010, à 22:50

wlourf

Re : Postez vos scripts Lua pour Conky !

alors lis bien toutes les lignes du post 106, ça devrait résoudre ton problème smile

Hors ligne

#111 Le 20/10/2010, à 22:56

djipey

Re : Postez vos scripts Lua pour Conky !

????? WTF?

Hier, je faisais exactement local h=conky_window.height - 200, (parce que j'ai pensé à ça en premier, comme dit dans mon premier post), mais ça ne marchait pas. Mais qu'est ce qu'il se passe?

Curieux. En tout cas ça marche maintenant. Et pas mal le coup de translater l'arrière plan, ça m'aura évité de poser une question supplémentaire. Merci à toi en tout cas pour ton aide.

Hors ligne

#112 Le 22/10/2010, à 11:31

djipey

Re : Postez vos scripts Lua pour Conky !

Je re-poste car j'ai encore et toujours un problème, je suis désolé.

L'idée de la translation ne marche pas en fait, car je perds les courbures des coins. Cela est dû à la taille de tout conky, et cela est insoluble de cette manière.

J'ai essayé de modifier le script pour que le haut du background commence 80 pixels plus bas, mais je n'y arrive pas totalement. Je voudrais aussi conserver les coins arrondis. Pourriez vous m'indiquer ce qui me manque s'il vous plait?

--[[
Background by londonali1010 (2009)

This script draws a background to the Conky window. It covers the whole of the Conky window, but you can specify rounded corners, if you wish.

To call this script in Conky, use (assuming you have saved this script to ~/scripts/):
    lua_load ~/scripts/draw_bg.lua
    lua_draw_hook_pre

Changelog:
+ v1.0 -- Original release (07.10.2009)
]]

-- Change these settings to affect your background.
-- "corner_r" is the radius, in pixels, of the rounded corners. If you don't want rounded corners, use 0.

corner_r=20

-- Set the colour and transparency (alpha) of your background.

bg_colour=0xffffff
bg_alpha=0.5

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 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_translate(cr,0,10)
    cairo_move_to(cr,corner_r-80,80)
    
    cairo_line_to(cr,w-corner_r,80)
    cairo_curve_to(cr,w,80,w,80,w,corner_r)--coin haut droit
    
    cairo_line_to(cr,w,h-corner_r)
    cairo_curve_to(cr,w,h,w,h,w-corner_r,h)--coin bas droit
    
    cairo_line_to(cr,corner_r,h)
    cairo_curve_to(cr,0,h,0,h,0,h-corner_r)--coin bas gauche
    
    cairo_line_to(cr,0,15)
    cairo_curve_to(cr,0,0,0,0,0,0)--coin haut gauche
    cairo_close_path(cr)
    

    cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha))
     
    cairo_fill(cr)
end

Hors ligne

#113 Le 22/10/2010, à 18:02

wlourf

Re : Postez vos scripts Lua pour Conky !

Salut,

Jje suppose que c'est les coins arrondis du bas qui ont disparu : quand tu translates ton fond en Lua, celui-ci sort de la fenêtre du conky donc tu ne vois plus les coins du bas, donc il faut bien utiliser cairo_translate et local h=conky_window.height -100 pour positionner ton cadre, à la limite, utilise plutôt local h=100 où '100' sera la taille qui te conviendra le mieux.

Hors ligne

#114 Le 22/10/2010, à 20:34

Fenouille84

Re : Postez vos scripts Lua pour Conky !

Je pense que le problème de djipey est résolu ici.

C'est pas le script LUA qui déconne, c'est plutôt son conky.
Il suffit de bien repositionner le texte de conky grâce aux voffset et offset et tout rentre dans l'ordre wink


Ma page Deviant Art : conky inside ;-)
.
-- DropBox (online backup) : 2Go + 250 Mo pour vous et moi par parrainage --

Hors ligne

#115 Le 23/10/2010, à 08:55

wlourf

Re : Postez vos scripts Lua pour Conky !

en effet, tu avais mieux cerné le problème que moi !

Hors ligne

#116 Le 27/10/2010, à 01:54

Nikita-06

Re : Postez vos scripts Lua pour Conky !

Salut à tous,

bon je me lance pour le fun. je suis novice en la matière mais j'ai tout de même quelques notions...

je suis parti de ce wall pour arriver à ce résultat.

bon je sais que ça ne ressemble pas à grand chose comme ça mais j'ai inclu l'utilisation core1 et core2 , la T° du processeur, la qualité du signal wifi, l'utilisation de la RAM etc... et je sais ou je les ai placé wink

mais j'ai un petit souci lorsque je fais

name='downspeed' ,
arg='wlan0' ,

je n'ai plus les aiguilles et le cercle n'apparait pas...

auriez vous une idée ?

Dernière modification par Nikita-06 (Le 27/10/2010, à 02:00)

Hors ligne

#117 Le 27/10/2010, à 11:18

Compte anonymisé

Re : Postez vos scripts Lua pour Conky !

Bonjour j'ai un probleme avec mon conky rien ne s'affiche a l'écanr j'ai :

conkyrc

# -- 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

# -- Window specifications -- #
own_window  yes
own_window_transparent yes
own_window_type  override
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

border_inner_margin 0
border_outer_margin 0

minimum_size 400 170
#maximum_width 400

alignment tm
gap_x -460
gap_y 50

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

# -- Text settings -- #
use_xft yes
xftfont Santana:size=12
xftalpha 0.8   

default_color 000000

# -- Lua Load -- #
lua_load ~/scripts/time.lua
lua_draw_hook_pre ring_stats

TEXT
${voffset 35}${font Santana:size=30}${alignr}${time %H.%M}${font}
${goto 140}${hr 1}
${font Santana:size=10}${alignr}${time %A, %d %B %Y}${font}]


time.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_stats
    
Changelog:
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]

settings_table = {
--[[ heure ]]
    {
        -- Edit this table to customise your rings.
        -- You can create more rings simply by adding more elements to settings_table.
        -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
        name='time',
        -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
        arg='%I.%M',
        -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
        max=12,
        -- "bg_colour" is the colour of the base ring.
        bg_colour=0x000000,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0x000000,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
        x=122, y=90,
        -- "radius" is the radius of the ring.
        radius=53,
        -- "thickness" is the thickness of the ring, centred around the radius.
        thickness=9,
        -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
        start_angle=90,
        -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.
        end_angle=450
    },
--[ minutes ]
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x000000,
        fg_alpha=0.8,
        x=122, y=90,
        radius=42,
        thickness=7,
        start_angle=90,
        end_angle=450
    },
-- [ secondes ]
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0,
        fg_colour=0x000000,
        fg_alpha=0.4,
        x=122, y=90,
        radius=27,
        thickness=17,
        start_angle=90,
        end_angle=450
    },
--[ jour ]
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x000000,
        fg_alpha=0.6,
        x=122, y=90,
        radius=67,
        thickness=2,
        start_angle=90,
        end_angle=450
    },
--[ mois ]
--[[
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=120, y=100,
        radius=56,
        thickness=5,
        start_angle=90,
        end_angle=450
    },
]]
}


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()

conky en ligne de commande

[remi@myhost ~]$ conky
Conky: desktop window (104) is root window
Conky: window type - override
Conky: drawing to created window (0x1e00001)
Conky: drawing to double buffer

Je ne vois pas ou est le probleme sad:(

   Merci d'avance big_smile

#118 Le 27/10/2010, à 17:03

wlourf

Re : Postez vos scripts Lua pour Conky !

@reremi, si tu as bien posté l'intégralité de ton fichier time.lua, alors il manque quelques lignes à la fin, après

function conky_ring_stats()

@Nikita-06, essaye

name='downspeedf' ,

sinon poste le script complet que tu utilises

Hors ligne

#119 Le 27/10/2010, à 17:13

Nikita-06

Re : Postez vos scripts Lua pour Conky !

@wlourf :

j'ai déjà essayé avec 'downspeedf' mais sans succès. pour le script j'utilise celui de Madbox :

--[[
Clock Rings by londonali1010 (2009) Edited by jpope

This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. This script is based off a combination of my clock.lua script and my rings.lua 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/clock_rings.lua
    lua_draw_hook_pre clock_rings

Changelog:
+ v1.0 -- Original release (30.09.2009)
   v1.1p -- Jpope edit (05.10.2009)
]]

settings_table = {
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x244f1d,
        bg_alpha=0.,
        fg_colour=0x000000,
        fg_alpha=0.8,
        x=122, y=90,
        radius=65,
        thickness=3,
        start_angle=-90,
        end_angle=90
     },
    {
        name='cpu',
        arg='cpu2',
        max=100,
        bg_colour=0x244f1d,
        bg_alpha=0.,
        fg_colour=0x000000,
        fg_alpha=0.8,
        x=122, y=90,
        radius=66,
        thickness=3,
        start_angle=90,
        end_angle=270
     },
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x696969,
        fg_alpha=0.6,
        x=122, y=90,
        radius=52,
        thickness=8,
        start_angle=-90,
        end_angle=90
    },
    {
        name='time',
        arg='%H',
        max=24,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x696969,
        fg_alpha=0.6,
        x=122, y=90,
        radius=52,
        thickness=8,
        start_angle=90,
        end_angle=270
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x244f1d,
        bg_alpha=0,
    fg_colour=0x696969,
    fg_alpha=0.3,
    x=122, y=90,
        radius=20,
        thickness=20,
        start_angle=180,
        end_angle=540
     },
    {
        name='acpitemp',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.2,
    fg_colour=0x000000,
    fg_alpha=0.3,
    x=122, y=90,
        radius=77,
        thickness=12,
        start_angle=250,
        end_angle=351
     },
    {
        name='wireless_link_qual',
        arg='wlan0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.2,
        fg_colour=0x000000,
        fg_alpha=0.3,
        x=122, y=90,
        radius=77,
        thickness=12,
        start_angle=0,
        end_angle=100
     },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.2,
        fg_colour=0x000000,
        fg_alpha=0.3,
        x=122, y=90,
        radius=77,
        thickness=12,
        start_angle=110,
        end_angle=241
     },
}

-- Use these settings to define the origin and extent of your clock.

clock_r=60

-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.

clock_x=122
clock_y=90

show_seconds=true

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 draw_clock_hands(cr,xc,yc)
    local secs,mins,hours,secs_arc,mins_arc,hours_arc
    local xh,yh,xm,ym,xs,ys

    secs=os.date("%S")
    mins=os.date("%M")
    hours=os.date("%I")

    secs_arc=(2*math.pi/60)*secs
    mins_arc=(2*math.pi/60)*mins+secs_arc/60
    hours_arc=(2*math.pi/12)*hours+mins_arc/12

    -- Draw hour hand

    xh=xc+0.7*clock_r*math.sin(hours_arc)
    yh=yc-0.7*clock_r*math.cos(hours_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xh,yh)

    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,4)
    cairo_set_source_rgba(cr,0,0,0,0.9)
    cairo_stroke(cr)

    -- Draw minute hand

    xm=xc+clock_r*math.sin(mins_arc)
    ym=yc-clock_r*math.cos(mins_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xm,ym)

    cairo_set_line_width(cr,3)
    cairo_stroke(cr)

    -- Draw seconds hand

    if show_seconds then
        xs=xc+clock_r*math.sin(secs_arc)
        ys=yc-clock_r*math.cos(secs_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xs,ys)

        cairo_set_line_width(cr,1)
        cairo_stroke(cr)
    end
end

function conky_clock_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)
        if pt['max'] == -1 then
            pct=1
        else
            pct=value/pt['max']
        end

        draw_ring(cr,pct,pt)
    end

    -- Check that Conky has been running for at least 5s

    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

    draw_clock_hands(cr,clock_x,clock_y)
end

merci de ta réponse en tout cas.

Hors ligne

#120 Le 27/10/2010, à 18:20

Compte anonymisé

Re : Postez vos scripts Lua pour Conky !

Oups non petit bug, le voici complet

--[[
Ring Meters by londonali1010 (2009)

This script draws percentage meters as rings. It is fully customisable; all options are described in the script.

IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num>5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num>3; conversely if you update Conky every 0.5s, you should use update_num>10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.

To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/rings-v1.2.lua
    lua_draw_hook_pre ring_stats
    
Changelog:
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]

settings_table = {
--[[ heure ]]
    {
        -- Edit this table to customise your rings.
        -- You can create more rings simply by adding more elements to settings_table.
        -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
        name='time',
        -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
        arg='%I.%M',
        -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
        max=12,
        -- "bg_colour" is the colour of the base ring.
        bg_colour=0x000000,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0x000000,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
        x=122, y=90,
        -- "radius" is the radius of the ring.
        radius=53,
        -- "thickness" is the thickness of the ring, centred around the radius.
        thickness=9,
        -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
        start_angle=90,
        -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.
        end_angle=450
    },
--[ minutes ]
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x000000,
        fg_alpha=0.8,
        x=122, y=90,
        radius=42,
        thickness=7,
        start_angle=90,
        end_angle=450
    },
-- [ secondes ]
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0,
        fg_colour=0x000000,
        fg_alpha=0.4,
        x=122, y=90,
        radius=27,
        thickness=17,
        start_angle=90,
        end_angle=450
    },
--[ jour ]
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0x000000,
        fg_alpha=0.6,
        x=122, y=90,
        radius=67,
        thickness=2,
        start_angle=90,
        end_angle=450
    },
--[ mois ]
--[[
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.8,
        x=120, y=100,
        radius=56,
        thickness=5,
        start_angle=90,
        end_angle=450
    },
]]
}


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)
        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

Edit: Wouaw mais quesque je suis con yikes Le conky etait noir et mon fond d'écran est . . .  noir -_-'

Dernière modification par Compte anonymisé (Le 27/10/2010, à 18:28)

#121 Le 01/11/2010, à 16:18

wlourf

Re : Postez vos scripts Lua pour Conky !

Hello,
Un petit script pour faire des graphiques :

t-graph_widget_for4cced9a40006ef77.png

En utilisation réelle :

f-barre4cced87b0006ef6e.png

(cliquez pour agrandir) .

Le script est téléchargeable sur dA : première image, 2ème image

Dernière modification par wlourf (Le 01/11/2010, à 18:43)

Hors ligne

#122 Le 19/11/2010, à 01:03

exzemat

Re : Postez vos scripts Lua pour Conky !

besoin d'un coup de main, ça commence à m'enerver!
1290124483.png
j'aimerai que la date soit bien alignée à droite, mais je veux conserver le jour écrit en plus gros
donc je peux pas mettre ça

${font Ubuntu:size=10}${alignr}${time %A, %d %B %Y}${font}

j'ai séparé du reste mon jour pour lui donner une taille plus grande, mais ça décale tout le reste.
si je passe par "offset +valeur" pour décaler mon jour ça marche....mais au jour suivant ça se décale!! (bah oui, mardi c'est plus court que vendredi)

je vois plus trop comment faire...je recommence tous les jours...et là, (à minuit passé) ça se redécale ...ça m'énerve!

# -- 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

# -- Window specifications -- #
own_window  yes
own_window_transparent yes
own_window_type  override
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

border_inner_margin 0
border_outer_margin 0

minimum_size 280 250
maximum_width 200

alignment top_right
gap_x 00
gap_y 125

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

# -- Text settings -- #
use_xft yes
xftfont Ubuntu:size=12
xftalpha 0.2 

default_color A09E9F
color0 d9d9d9
color1 9A9899

# -- Lua Load -- #
lua_load ~/.conky/ring.lua
lua_draw_hook_pre ring_stats

TEXT
${offset 50}${color0}${font URW Gothic L:size=60}${time %H}${voffset -30}${color1}${font URW Gothic L:size=32}${time %M}
${font Ubuntu:size=22}${time %A,}${font}${font Ubuntu:size=10}${alignr}${time %d %B %Y}${font}

xubuntu sur samsung nc10 [RIP, paix  à son âme]
ubuntu sur clevo w310cz
archlinux + kde sur pc fixe

Hors ligne

#123 Le 19/11/2010, à 06:31

chepioq

Re : Postez vos scripts Lua pour Conky !

@exzemat,
Essaye avec ce conky:

# -- 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

# -- Window specifications -- #
own_window  yes
own_window_transparent yes
own_window_type  override
own_window_hints undecorate,sticky,skip_taskbar,skip_pager

border_inner_margin 0
border_outer_margin 0

minimum_size 280 250
maximum_width 350

alignment top_right
gap_x 00
gap_y 125

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

# -- Text settings -- #
use_xft yes
xftfont Ubuntu:size=12
xftalpha 0.2 

default_color A09E9F
color0 d9d9d9
color1 9A9899

# -- Lua Load -- #
lua_load ~/.conky/ring.lua
lua_draw_hook_pre ring_stats

TEXT
${offset 50}${color0}${font URW Gothic L:size=60}${alignr}${time %H}${voffset -30}${color1}${font URW Gothic L:size=32}${time %M}
${font Ubuntu:size=22}${time %A,}${font}${font Ubuntu:size=10} ${alignc}${time %d %B %Y}${font}

Une autre solution est de faire deux conky, un avec ton script lua et un autre avec ton calendrier, à toi après de bien les placer sur ton bureau.

Dernière modification par chepioq (Le 19/11/2010, à 07:30)


Tout est dans tout et réciproquement....

Hors ligne

#124 Le 19/11/2010, à 10:53

exzemat

Re : Postez vos scripts Lua pour Conky !

@chapioq : merci!
j'avais bien pensé à modifier la largeur maxi de mon conky, mais seul ça ne suffisait pas (et je vais être franc je débute avec conky).
encore merci pour ton aide....plus qu'à attendre demain pour voir si ça a pas trop bougé!!


xubuntu sur samsung nc10 [RIP, paix  à son âme]
ubuntu sur clevo w310cz
archlinux + kde sur pc fixe

Hors ligne

#125 Le 24/11/2010, à 10:57

RegisBurin

Re : Postez vos scripts Lua pour Conky !

Salut tous

Comme annoncé ici, j'ai un petit soucis... ou plutôt une demande de solutions tongue

Tout d'abord, voici à quoi ressemble mon bureau:
1290587510.png

Le conky n'est pas tout à fait terminé, mais passons... mon soucis n'est pas là.
Ce que j'aimerais faire (pour plus de "réalisme" au niveau de l'horoge LUA), c'est "recouvrir" le centre de l'horloge d'un "bouchon" tel que:
1290587707.png
(mokup réalisé sous Gimp)
Pour ça, je me suis fait le .png suivant: 1290587796.png que j'appellerais clock_center.png.
(tiens, c'est bizarre, il ne m'affiche pas la partie transparente du png sur la miniature? réellement, le contour est transparent, cliquez dessus pour voir, bref...)

Pour l'implantation, j'ai essayé plusieurs choses, mais rien de satisfaisant...

Données actuelles:
- 1 seul conkyrc de la taille de l'écran et qui définit toutes les infos
- 1 script LUA (pompé sur une Madbox, donc le clock_rings.lua de londonali1010 édité par jpope), modifié (tant bien que mal) pour ne faire apparaître que les aiguilles
- Mon niveau: conky => pas trop mauvais / lua => ultra-débutant

Solutions testées:
1) Insérer mon image dans le conky par la fonction ${image PATH -p x,y} ajouté à la fin du conkyrc
J'ai bien compris le principe du lua_draw_hook_*, s'il est en pre, LUA est dessiné en même temps que conky, si post, il est dessiné après.
Sur les 2 images suivantes, on voit bien le principe avec le texte (blablabla). pre, le texte est "au dessus" du lua. post, il est en dessous.
Par contre, et c'est ce qui m'intrigue, on voit aussi qu'en pre, mon image clock_center.png, reste en dessous du lua (!!??) cf. flèche
pre1290589648.png

post1290589811.png

2) Créer un conky juste pour l'image, et le lancer après le conky principal
Bah, là... Conky ne gérant pas la "vraie-transparence" je vous laisse imaginer le résultat yikes (non, en fait, je vous le montre...)
1290590152.png

Donc j'ai bien pensé à 2 solutions, mais comme je débute avec lua, et que je n'ai pas trop bien compris tout ce que j'ai lu depuis hier soir sur le sujet, je m'en remets à vous pour me guider.

Solution A) Laisser lua dessiner clock_center.png "par dessus" les aiguilles (je crois que la fonction existe, mais je ne sais pas la mettre en oeuvre)
Solution B) Intégrer clock_center.png à mon fond d'écran, et "tronquer" la base des aiguilles d'une zone ronde du diamètre de clock_center.png (ainsi, l'illusion serait parfaite)
Solution C) La votre... (une solution alternative qui ferait la blague)

Pour terminer, mes 2 fichiers de config (si vous voulez faire des tests): (attention au gapx, il est paramétré pour un dual-screen)
conkyrc

# — Config conky — #
background no
update_interval 1
cpu_avg_samples 2
net_avg_samples 2
double_buffer yes
no_buffers yes
text_buffer_size 2048
imlib_cache_size 0

# — Config fenêtre — #

own_window yes
own_window_transparent yes
own_window_type override
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
border_inner_margin 0
border_outer_margin 0
minimum_size 1670 1040
alignment tl
gap_x 1685
gap_y 5

# — Config graphique — #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_bar_size  155 2

# — Polices — #
use_xft yes
xftfont Neuropol:size=10
xftalpha 0.5
override_utf8_locale yes
uppercase no

# — Couleurs — #
color1 8e9091
color2 049bfa
color3 895858
color4 892c2c
color5 890e0e
color6 5d8091
color7 2e7091
color8 0e6591

# — Lancement lua — #
    lua_load ~/.config/conky/clock_rings.lua
    lua_draw_hook_pre clock_rings

TEXT
${goto 15}${voffset 12}${color1}Cpu I${goto 54}${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${cpu cpu1} >0}0${else}p${endif}${if_match ${cpu cpu1} >10}0${else}p${endif}${if_match ${cpu cpu1} >20}0${else}p${endif}${if_match ${cpu cpu1} >30}0${else}p${endif}${if_match ${cpu cpu1} >40}${color6}0${else}${color6}p${endif}${if_match ${cpu cpu1} >50}${color6}0${else}${color6}p${endif}${if_match ${cpu cpu1} >60}${color7}0${else}${color7}p${endif}${if_match ${cpu cpu1} >70}${color7}0${else}${color7}p${endif}${if_match ${cpu cpu1} >80}${color8}0${else}${color8}p${endif}${if_match ${cpu cpu1} >90}${color8}0${else}${color8}p${endif}${font}${color2} ${cpu cpu1}%${goto 260}${voffset -2}${color1}${font}${color1}Ram ${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${memperc} >0}0${else}p${endif}${if_match ${memperc} >10}0${else}p${endif}${if_match ${memperc} >20}0${else}p${endif}${if_match ${memperc} >30}0${else}p${endif}${if_match ${memperc} >40}${color6}0${else}${color6}p${endif}${if_match ${memperc} >50}${color6}0${else}${color6}p${endif}${if_match ${memperc} >60}${color7}0${else}${color7}p${endif}${if_match ${memperc} >70}${color7}0${else}${color7}p${endif}${if_match ${memperc} >80}${color8}0${else}${color8}p${endif}${if_match ${memperc} >90}${color8}0${else}${color8}p${endif}${font}${color2} ${memperc}%${font}
${goto 15}${voffset 3}${color1}Cpu II${goto 54}${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${cpu cpu2} >0}0${else}p${endif}${if_match ${cpu cpu2} >10}0${else}p${endif}${if_match ${cpu cpu2} >20}0${else}p${endif}${if_match ${cpu cpu2} >30}0${else}p${endif}${if_match ${cpu cpu2} >40}${color6}0${else}${color6}p${endif}${if_match ${cpu cpu2} >50}${color6}0${else}${color6}p${endif}${if_match ${cpu cpu2} >60}${color7}0${else}${color7}p${endif}${if_match ${cpu cpu2} >70}${color7}0${else}${color7}p${endif}${if_match ${cpu cpu2} >80}${color8}0${else}${color8}p${endif}${if_match ${cpu cpu2} >90}${color8}0${else}${color8}p${endif}${font}${color2} ${cpu cpu2}%${font}
${goto 270}${voffset -21}${font MarVoSym:size=18}${color1}U${voffset -4}${font}${color2} ${uptime_short}${goto 365}${voffset -10}${color1}${font MarVoSym:size=20}V${voffset -2}${color2}${font} ${execi 3600 aptitude search "~U" | wc -l | tail}${goto 420}${voffset -11}${color1}${font MarVoSym:size=20}B${voffset -2}${font}${color2} ${texeci 60 ~/scripts/conky/check_gmail.sh}${font}
${goto 55}${voffset -24}${color2}${cpubar cpu1}${offset -155}${color 000000}${cpubar cpu3}${goto 295}${color2}${membar}${offset -155}${color 000000}${cpubar cpu3}
${goto 55}${voffset 5}${color2}${cpubar cpu2}${offset -155}${color 000000}${cpubar cpu3}
${goto 742}${voffset -36}${color2}${font Digital\-7:size=44}${time %H:%M:%S}
${voffset 70}${goto 658}${font Neuropolitical:size=14}${color1}Debian squeeze${goto 845}${kernel}
${goto 768}${voffset 100}${color1}${font Neuropolitical:size=20}${time %A} ${time %d} ${time %b}
${goto 15}${voffset -248}${font Neuropol:size=9}${color1}Home ${goto 54}${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${fs_used_perc /} >0}0${else}p${endif}${if_match ${fs_used_perc /} >10}0${else}p${endif}${if_match ${fs_used_perc /} >20}0${else}p${endif}${if_match ${fs_used_perc /} >30}0${else}p${endif}${if_match ${fs_used_perc /} >40}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /} >50}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /} >60}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /} >70}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /} >80}${color5}0${else}${color5}p${endif}${if_match ${fs_used_perc /} >90}${color5}0${else}${color5}p${endif} ${voffset -2}${font Neuropol:size=9}${color2}${fs_free_perc /}% libres${font}${color}
${goto 15}${color1}${font Neuropol:size=9}Docu ${goto 54}${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${fs_used_perc /media/Documents} >0}0${else}p${endif}${if_match ${fs_used_perc /media/Documents} >10}0${else}p${endif}${if_match ${fs_used_perc /media/Documents} >20}0${else}p${endif}${if_match ${fs_used_perc /media/Documents} >30}0${else}p${endif}${if_match ${fs_used_perc /media/Documents} >40}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /media/Documents} >50}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /media/Documents} >60}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /media/Documents} >70}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /media/Documents} >80}${color5}0${else}${color5}p${endif}${if_match ${fs_used_perc /media/Documents} >90}${color5}0${else}${color5}p${endif} ${voffset -2}${font Neuropol:size=9}${if_mounted /media/Documents}${color2}${fs_free_perc /media/Documents}% libres${else}${color5}${font Neuropol:size=9}Non monté${endif}${font}${color}
${goto 15}${font Neuropol:size=9}${color1}Projet ${goto 54}${voffset -3}${font fnt_basicshapes1: size=8}${if_match ${fs_used_perc /media/projets} >0}0${else}p${endif}${if_match ${fs_used_perc /media/projets} >10}0${else}p${endif}${if_match ${fs_used_perc /media/projets} >20}0${else}p${endif}${if_match ${fs_used_perc /media/projets} >30}0${else}p${endif}${if_match ${fs_used_perc /media/projets} >40}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /media/projets} >50}${color3}0${else}${color3}p${endif}${if_match ${fs_used_perc /media/projets} >60}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /media/projets} >70}${color4}0${else}${color4}p${endif}${if_match ${fs_used_perc /media/projets} >80}${color5}0${else}${color5}p${endif}${if_match ${fs_used_perc /media/projets} >90}${color5}0${else}${color5}p${endif} ${voffset -2}${font Neuropol:size=9}${if_mounted /media/projets}${color2}${fs_free_perc /media/projets}% libres${else}${color5}${font Neuropol:size=9}Non monté${endif}${font}${color}
${image /home/regis/Images/silver_debian_clock_center.png -p 810,495}
${font Neuropolitical:size=40}${offset 600}${voffset 600}blablabla

clock_rings.lua

--[[
Clock Rings by londonali1010 (2009) Edited by jpope

This script draws percentage meters as rings, and also draws clock hands if you want! It is fully customisable; all options are described in the script. This script is based off a combination of my clock.lua script and my rings.lua 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/clock_rings.lua
    lua_draw_hook_pre clock_rings

Changelog:
+ v1.0 -- Original release (30.09.2009)
   v1.1p -- Jpope edit (05.10.2009)
]]

settings_table = {
    {
        -- Edit this table to customise your rings.
        -- You can create more rings simply by adding more elements to settings_table.
        -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
        name='time',
        -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
        arg='%I.%M',
        -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
        max=12,
        -- "bg_colour" is the colour of the base ring.
        bg_colour=0xffffff,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0.1,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0xBFBFBF,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.2,
        -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.
        x=837, y=520,
        -- "radius" is the radius of the ring.
        radius=300,
        -- "thickness" is the thickness of the ring, centred around the radius.
        thickness=3,
        -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.
        start_angle=0,
        -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger than start_angle.
        end_angle=360
    },
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xE5E5E5,
        fg_alpha=0.2,
        x=837, y=520,
        radius=408,
        thickness=3,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=-1,
        bg_colour=0xffffff,
        bg_alpha=0.1,
        fg_colour=0xffffff,
        fg_alpha=0.6,
        x=837, y=520,
        radius=432,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
}

-- Use these settings to define the origin and extent of your clock.

clock_r=392

-- "clock_x" and "clock_y" are the coordinates of the centre of the clock, in pixels, from the top left of the Conky window.

clock_x=837
clock_y=520

show_seconds=true

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 draw_clock_hands(cr,xc,yc)
    local secs,mins,hours,secs_arc,mins_arc,hours_arc
    local xh,yh,xm,ym,xs,ys

    secs=os.date("%S")
    mins=os.date("%M")
    hours=os.date("%I")

    secs_arc=(2*math.pi/60)*secs
    mins_arc=(2*math.pi/60)*mins+secs_arc/60
    hours_arc=(2*math.pi/12)*hours+mins_arc/12

    -- Draw hour hand

    xh=xc+0.7*clock_r*math.sin(hours_arc)
    yh=yc-0.7*clock_r*math.cos(hours_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xh,yh)

    cairo_set_line_cap(cr,CAIRO_LINE_CAP_ROUND)
    cairo_set_line_width(cr,20)
    cairo_set_source_rgba(cr,0.1,0.1,0.1,1)
    cairo_stroke(cr)

    -- Draw minute hand

    xm=xc+clock_r*math.sin(mins_arc)
    ym=yc-clock_r*math.cos(mins_arc)
    cairo_move_to(cr,xc,yc)
    cairo_line_to(cr,xm,ym)

    cairo_set_line_width(cr,10)
    cairo_stroke(cr)

    -- Draw seconds hand

    if show_seconds then
        xs=xc+clock_r*math.sin(secs_arc)
        ys=yc-clock_r*math.cos(secs_arc)
        cairo_move_to(cr,xc,yc)
        cairo_line_to(cr,xs,ys)

        cairo_set_line_width(cr,2)
        cairo_stroke(cr)
    end
end

function conky_clock_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)
        if pt['max'] == -1 then
            pct=1
        else
            pct=value/pt['max']
        end

--         draw_ring(cr,pct,pt)
    end

    -- Check that Conky has been running for at least 5s

    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

    draw_clock_hands(cr,clock_x,clock_y)
end

Question facultative:
Pourriez vous m'aider à "nettoyer" le script lua? Pour l'instant, pour n'afficher que les aiguilles, j'ai commenté les parties concernant l'affichage des cercles_contours/arcs de cercles "suiveurs". Mais je ne suis pas sûr de ce que je peux supprimer...

Encore merci d'avance à ceux qui me liront. J'espère avoir été clair et précis dans ma(mes) demande(s)

@+

Dernière modification par RegisBurin (Le 24/11/2010, à 11:01)


Config (M-AUDIO Delta44/Wacom CTH661-Phone ZTE OpenC-FFOS2.1) | BabyBox[WIP]
Moi sur le web / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne