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.

#426 Le 29/01/2014, à 07:22

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Seconde version de l'horloge Flip Flap, je me suis contenté de modifier la position des paramètres, de manière à rendre plus simple les modifications effectuées par l'utilisateur.

Flip_Flap_Clock.lua

--[[
by mrpeachy
Modifié par Dider-T pour utilisation de l'horloge seul - le 28/01/2014


Utilisation dans le conky
############################################################################
#                                                                          #
# Avant TEXT                                                               #
#                                                                          #
############################################################################
#                                                                          #
# lua_load /chemin/vers/le/script/Flip_Flap_Clock.lua                      #
# lua_draw_hook_pre main                                                   #
#                                                                          #
############################################################################
]]--


--[[
#############################################################################
#                                                                           #
#                                 EDITABLE                                  #
#                                                                           #
# Zonne de paramètres                                                       #
#                                                                           #
#############################################################################
]]--

default_font="LED_mono"--font must be in quotes
default_font_size=12
default_face="normal"
default_color=0xffffff
default_alpha=1--fully opaque text
ajust=1--ajustement des chiffres en hauteur
alignement="r"-- l (Left), r (right) or c (center)

function tab()
    local Digit={
    {
    TopLeftX=50,
    TopLeftY=50,
    cra=10,
    sw=30,
    Digit=tostring(os.date("%H")):sub(1,1)
    },
    {
    TopLeftX=105,
    TopLeftY=50,
    cra=10,
    sw=30,
    Digit=tostring(os.date("%H")):sub(2,2)
    },
    {
    TopLeftX=170,
    TopLeftY=50,
    cra=10,
    sw=30,
    Digit=tostring(os.date("%M")):sub(1,1)
    },
    {
    TopLeftX=225,
    TopLeftY=50,
    cra=10,
    sw=30,
    Digit=tostring(os.date("%M")):sub(2,2)
    },
    {
    TopLeftX=290,
    TopLeftY=65,
    cra=10,
    sw=20,
    Digit=tostring(os.date("%S")):sub(1,1)
    },
    {
    TopLeftX=335,
    TopLeftY=65,
    cra=10,
    sw=20,
    Digit=tostring(os.date("%S")):sub(2,2)
    },
    }
    return Digit
end

--[[
#############################################################################
#                                                                           #
#                              END EDITABLE                                 #
#                                                                           #
# Fin de la zonne de paramètres                                             #
# Ne rien modifier après cette ligne                                        #
#                                                                           #
#############################################################################
]]--

require 'cairo'
require 'os'

_G.weather_script = function()
    local settings_table=tab()
    for i in pairs(settings_table) do
        flip_digit(settings_table[i].TopLeftX,settings_table[i].TopLeftY,settings_table[i].cra,settings_table[i].sw,settings_table[i].Digit)
    end
end


function conky_main()--run with lua_draw_hook_pre main

    if conky_window == nil then return end
    local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
    cr = cairo_create(cs)
    _G.weather_script()

    cairo_destroy(cr)
    cairo_surface_destroy(cs)
    cr=nil
    collectgarbage()
end

function grec(gtab)--#################################################################################
    local function color(col,alp)
        return ((col / 0x10000) % 0x100) / 255, ((col / 0x100) % 0x100) / 255, (col % 0x100) / 255, alp
    end
    local function pt(px,py,prad,pdeg)
        local ppo=(math.pi/180)*pdeg
        local px1=px+prad*(math.sin(ppo))
        local py1=py-prad*(math.cos(ppo))
        return px1,py1
    end
    local function sub_draw(sdtab)
        local cdsx={}
        local cdsy={}
        local dr={}
        local limit=#sdtab
        local x, y, d, ang1, ang2, rad, alx, aly, ax, ay, q
        for i=1,limit do
            d=sdtab[i].d
            if d=="start" then
                table.insert(dr,"cairo_move_to(cr,"..tostring(sdtab[i].x)..","..tostring(sdtab[i].y)..");")
                table.insert(cdsx,sdtab[i].x)
                table.insert(cdsy,sdtab[i].y)
            end
            if d=="line" then
                table.insert(dr,"cairo_line_to(cr,"..tostring(sdtab[i].x)..","..tostring(sdtab[i].y)..");")
                table.insert(cdsx,sdtab[i].x)
                table.insert(cdsy,sdtab[i].y)
            end
            if d=="rline" then
                table.insert(dr,"cairo_rel_line_to(cr,"..tostring(sdtab[i].x)..","..tostring(sdtab[i].y)..");")
                table.insert(cdsx,cdsx[i-1]+sdtab[i].x)
                table.insert(cdsy,cdsy[i-1]+sdtab[i].y)
            end
            if d=="aline" then
                --pt(px,py,prad,pdeg)
                alx,aly=pt(cdsx[i-1],cdsy[i-1],sdtab[i].l,sdtab[i].a)
                table.insert(dr,"cairo_line_to(cr,"..tostring(alx)..","..tostring(aly)..");")
                table.insert(cdsx,alx)
                table.insert(cdsy,aly)
            end
            if d=="arc" then
                ang1=(math.pi/180)*((sdtab[i].a1)-90)
                ang2=(math.pi/180)*((sdtab[i].a2)-90)
                rad=sdtab[i].r
                x=sdtab[i].x
                y=sdtab[i].y
                table.insert(dr,"cairo_arc(cr,"..tostring(x)..","..tostring(y)..","..tostring(rad)..","..tostring(ang1)..","..tostring(ang2)..");")
                ang2=(math.pi/180)*(sdtab[i].a2)
                ax=0+rad*(math.sin(ang2))
                ay=0-rad*(math.cos(ang2))
                table.insert(cdsx,x+ax)
                table.insert(cdsy,y+ay)
            end
            if d=="arc_c" then
                q=sdtab[i].q
                rad=sdtab[i].r
                if q==4 then
                    ang1=(math.pi/180)*(270-90)
                    x=cdsx[i-1]+rad
                    y=cdsy[i-1]
                elseif q==1 then
                    ang1=(math.pi/180)*(360-90)
                    x=cdsx[i-1]
                    y=cdsy[i-1]+rad
                elseif q==2 then
                    ang1=(math.pi/180)*(90-90)
                    x=cdsx[i-1]-rad
                    y=cdsy[i-1]
                elseif q==3 then
                    ang1=(math.pi/180)*(180-90)
                    x=cdsx[i-1]
                    y=cdsy[i-1]-rad
                end
                ang2=ang1+((math.pi/180)*(sdtab[i].degs))
                table.insert(dr,"cairo_arc(cr,"..tostring(x)..","..tostring(y)..","..tostring(rad)..","..tostring(ang1)..","..tostring(ang2)..");")
                ang2=ang2+((math.pi/180)*90)
                ax=0+rad*(math.sin(ang2))
                ay=0-rad*(math.cos(ang2))
                table.insert(cdsx,x+ax)
                table.insert(cdsy,y+ay)
            end
            if d=="arc_a" then
                q=sdtab[i].q
                rad=sdtab[i].r
                if q==4 then
                    ang1=(math.pi/180)*(360-90)
                    x=cdsx[i-1]
                    y=cdsy[i-1]+rad
                elseif q==1 then
                    ang1=(math.pi/180)*(90-90)
                    x=cdsx[i-1]-rad
                    y=cdsy[i-1]
                elseif q==2 then
                    ang1=(math.pi/180)*(180-90)
                    x=cdsx[i-1]
                    y=cdsy[i-1]-rad
                elseif q==3 then
                    ang1=(math.pi/180)*(270-90)
                    x=cdsx[i-1]+rad
                    y=cdsy[i-1]
                end
                ang2=ang1-(math.pi/180)*(sdtab[i].degs)
                table.insert(dr,"cairo_arc_negative(cr,"..tostring(x)..","..tostring(y)..","..tostring(rad)..","..tostring(ang1)..","..tostring(ang2)..");")
                ang2=ang2+((math.pi/180)*90)
                ax=0+rad*(math.sin(ang2))
                ay=0-rad*(math.cos(ang2))
                table.insert(cdsx,x+ax)
                table.insert(cdsy,y+ay)
            end
        end
    return table.concat(dr)
    end--of local function sub_draw

    local g=gtab.g          or 1
    local x=gtab.x          or 0
    local y=gtab.y          or 0
    local w=gtab.w          or 50
    local h=gtab.h          or 50
    local r=gtab.r          or 50
    local rgx=gtab.rgx      or x
    local rgy=gtab.rgy      or y
    local grad=gtab.grad    or {{c=0xffffff}}
    local gan=gtab.gan      or 45
    local lw=gtab.lw        or 1
    local sub=gtab.sub      or 0
    local db=gtab.db        or 0
    local subtab=gtab.subtab
    if db==1 and g~=6 then
        cairo_set_source_rgba (cr,1,1,1,1)
        cairo_set_line_width (cr,1)
        cairo_rectangle (cr,x,y,w,h)
        cairo_stroke (cr)
    elseif db==1 and g==6 then
        cairo_set_source_rgba (cr,1,1,1,1)
        cairo_set_line_width (cr,1)
        cairo_arc (cr,x,y,r,0,2*math.pi)
        cairo_stroke (cr)
    end
    --##########################################
    if g==1 or g==2 or g==5 or g==6 then --rectangular gradients
        if g==1 then
            pat = cairo_pattern_create_linear (0,y,0,y+h);
        elseif g==2 then
            pat = cairo_pattern_create_linear (x,0,x+w,0);
        elseif g==5 then
            --calculate hypotenuse across middle of rectange
            local hyp=math.sqrt((w^2)+(h^2))
            local rad=hyp/2
            --center point of rectangle
            local crx=x+(w/2)
            local cry=y+(h/2)
            --calculate point 1
            local point=(math.pi/180)*gan
            local x1=crx+rad*(math.sin(point))
            local y1=cry-rad*(math.cos(point))
            --calculate point 2
            local point=(math.pi/180)*(gan+180)
            local x2=crx+rad*(math.sin(point))
            local y2=cry-rad*(math.cos(point))
            --gradient
            pat = cairo_pattern_create_linear (x1,y1,x2,y2);
        elseif g==6 then
            pat = cairo_pattern_create_radial (rgx, rgy, 0, x,  y, r);
        end
    local gnum=#grad
    for i=1,gnum do
        cairo_pattern_add_color_stop_rgba (pat,grad[i].p,color(grad[i].c,grad[i].a));
    end--for loop
    if sub==1 then
        cairo_save (cr)
        cairo_clip(cr)
        cairo_new_sub_path(cr)
        local drawstring=sub_draw(subtab)
        loadstring(drawstring)()
        cairo_restore (cr)
    end
    cairo_set_source (cr, pat);
    cairo_fill(cr);
    cairo_pattern_destroy (pat);
    --###########################################
    elseif g==0 and sub==1 then --non gradient
        local drawstring=sub_draw(subtab)
        loadstring(drawstring)()
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_fill(cr)
    elseif g==3 and sub==1 then
        local drawstring=sub_draw(subtab)
        loadstring(drawstring)()
        cairo_set_line_width(cr,lw)
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_close_path (cr)
        cairo_stroke(cr);
    elseif g==4 and sub==1 then
        local drawstring=sub_draw(subtab)
        loadstring(drawstring)()
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_fill_preserve(cr);
        cairo_set_line_width(cr,lw)
        cairo_set_source_rgba (cr,color(grad[2].c,grad[2].a));
        cairo_close_path (cr)
        cairo_stroke(cr);
    elseif g==0 and sub~=1 then
        cairo_rectangle (cr,x,y,w,h)
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_fill(cr);
    elseif g==3 and sub~=1 then
        cairo_rectangle (cr,x,y,w,h)
        cairo_set_line_width(cr,lw)
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_close_path (cr)
        cairo_stroke(cr);
    elseif g==4 and sub~=1 then
        cairo_rectangle (cr,x,y,w,h)
        cairo_set_source_rgba (cr,color(grad[1].c,grad[1].a));
        cairo_fill_preserve(cr);
        cairo_set_line_width(cr,lw)
        cairo_set_source_rgba (cr,color(grad[2].c,grad[2].a));
        cairo_close_path (cr)
        cairo_stroke(cr);
    --radial gradients
    elseif g==6 then
        pat = cairo_pattern_create_radial (cx, cy, crad-(clw/2)-2,--
                                   cx,  cy, crad+(clw/2)+4);
        cairo_pattern_add_color_stop_rgba (pat, 0, 0, 0, 0, 1);
        cairo_pattern_add_color_stop_rgba (pat, 0.5, 0, 0, 0, 0);
        cairo_pattern_add_color_stop_rgba (pat, 1, 0, 0, 0, 1);

        cairo_set_source (cr, pat);
        cairo_arc (cr, cx, cy, crad+(clw/2), 0, 2*math.pi);
        cairo_fill (cr);
        cairo_pattern_destroy (pat);
    end--of g type
end--of function grec

--END MAIN GTAB FUNCTION################################################--]]
function glassyboxtop(tlx,tly,cra,sw,sh,bg)
    sho=sh
    sw=sw-cra-cra
    sh=sh-cra-cra
    --BIG FILLED IN RECTANGLE
    if bg~=1 then
        subtab={
            {d="start",x=tlx+cra,y=tly},
            {d="rline",x=sw,y=0},
            {d="arc_c",q=1,r=cra,degs=90},
            {d="rline",x=0,y=sh+cra},
            {d="rline",x=-sw-cra-cra,y=0},
            {d="rline",x=0,y=-sh-cra},
            {d="arc_c",q=4,r=cra,degs=90},
        }
    grec({
        g=1,
        x=tlx,
        y=tly,
        w=sw+cra+cra,
        h=sh+cra+cra,
        grad={{c=0x606060,a=0.3,p=0},{c=0x101010,a=0.3,p=1}},
        lw=1,
        sub=1,
        db=0,
        subtab=subtab})
    end
    --[HIGHLIGHT TOP RECTANGLE
    if bg~=1 and bg~=2 then
        shh=((80/150)*sho)-cra-cra
    subtab={
        {d="start",x=tlx+cra,y=tly},
        {d="rline",x=sw,y=0},
        {d="arc_c",q=1,r=cra,degs=90},
        {d="rline",x=0,y=shh},
        {d="arc_c",q=2,r=cra,degs=90},
        {d="rline",x=-sw,y=0},
        {d="arc_c",q=3,r=cra,degs=90},
        {d="rline",x=0,y=-shh},
        {d="arc_c",q=4,r=cra,degs=90},
    }
    grec({
        g=1,
        x=tlx,
        y=tly,
        w=sw+cra+cra,
        h=shh+cra+cra,
        grad={{c=0xffffff,a=0.5,p=0},{c=0xffffff,a=0,p=1}},
        lw=1,
        sub=1,
        db=0,
        subtab=subtab})
    end
    --OUTLINE
    lt=1 --BOARDER WIDTH
    tlx,tly=tlx-lt,tly-lt
    cra1=cra+lt
    subtab={
        {d="start",x=tlx+cra1,y=tly},
        {d="rline",x=sw,y=0},
        {d="arc_c",q=1,r=cra1,degs=90},
        {d="rline",x=0,y=sh+cra1},
        --{d="arc_c",q=2,r=cra1,degs=90},
        {d="rline",x=-sw-cra1-cra1,y=0},
        --{d="arc_c",q=3,r=cra1,degs=90},
        {d="rline",x=0,y=-sh-cra1},
        {d="arc_c",q=4,r=cra1,degs=90},
        {d="rline",x=sw,y=0},
        {d="rline",x=0,y=lt},
        {d="rline",x=-sw,y=0},
        {d="arc_a",q=4,r=cra,degs=90},
        {d="rline",x=0,y=sh+cra},
        --{d="arc_a",q=3,r=cra,degs=90},
        {d="rline",x=sw+cra+cra,y=0},
        --{d="arc_a",q=2,r=cra,degs=90},
        {d="rline",x=0,y=-sh-cra},
        {d="arc_a",q=1,r=cra,degs=90},
        {d="rline",x=-sw,y=0},
    }
    grec({
        g=1,
        x=tlx,
        y=tly,
        w=sw+cra+cra,
        h=sh+cra+cra,
        grad={{c=0x808080,a=1,p=0},{c=0x202020,a=1,p=1}},
        lw=1,
        sub=1,
        db=0,
        subtab=subtab})--]]
end

function glassyboxbot(tlx,tly,cra,sw,sh,bg)
    sho=sh
    sw=sw-cra-cra
    sh=sh-cra-cra
    --BIG FILLED IN RECTANGLE
    if bg~=1 then
        subtab={
            {d="start",x=tlx+cra,y=tly},
            {d="rline",x=sw+cra,y=0},
            --{d="arc_c",q=1,r=cra,degs=90},
            {d="rline",x=0,y=sh+cra},
            {d="arc_c",q=2,r=cra,degs=90},
            {d="rline",x=-sw,y=0},
            {d="arc_c",q=3,r=cra,degs=90},
            {d="rline",x=0,y=-sh-cra},
            --{d="arc_c",q=4,r=cra,degs=90},
        }
        grec({
            g=1,
            x=tlx,
            y=tly,
            w=sw+cra+cra,
            h=sh+cra+cra,
            grad={{c=0x606060,a=0.3,p=0},{c=0x101010,a=0.3,p=1}},
            lw=1,
            sub=1,
            db=0,
            subtab=subtab})
    end
    --[HIGHLIGHT TOP RECTANGLE
    if bg~=1 and bg~=2 then
        shh=((80/150)*sho)-cra-cra
        subtab={
            {d="start",x=tlx+cra,y=tly},
            {d="rline",x=sw+cra,y=0},
            --{d="arc_c",q=1,r=cra,degs=90},
            {d="rline",x=0,y=shh+cra},
            {d="arc_c",q=2,r=cra,degs=90},
            {d="rline",x=-sw,y=0},
            {d="arc_c",q=3,r=cra,degs=90},
            {d="rline",x=0,y=-shh-cra},
            --{d="arc_c",q=4,r=cra,degs=90},
        }
        grec({
            g=1,
            x=tlx,
            y=tly,
            w=sw+cra+cra,
            h=shh+cra+cra,
            grad={{c=0xffffff,a=0.5,p=0},{c=0xffffff,a=0,p=1}},
            lw=1,
            sub=1,
            db=0,
            subtab=subtab})
    end
    --OUTLINE
    lt=1 --BOARDER WIDTH
    tlx,tly=tlx-lt,tly-lt
    cra1=cra+lt
    subtab={
        {d="start",x=tlx+cra+lt,y=tly},
        {d="rline",x=sw+cra1,y=0},
        --{d="arc_c",q=1,r=cra1,degs=90},
        {d="rline",x=0,y=sh+cra1},
        {d="arc_c",q=2,r=cra1,degs=90},
        {d="rline",x=-sw,y=0},
        {d="arc_c",q=3,r=cra1,degs=90},
        {d="rline",x=0,y=-sh-cra1},
        --{d="arc_c",q=4,r=cra1,degs=90},
        {d="rline",x=sw+cra1,y=0},
        {d="rline",x=0,y=lt},
        {d="rline",x=-sw-cra,y=0},
        --{d="arc_a",q=4,r=cra,degs=90},
        {d="rline",x=0,y=sh+cra},
        {d="arc_a",q=3,r=cra,degs=90},
        {d="rline",x=sw,y=0},
        {d="arc_a",q=2,r=cra,degs=90},
        {d="rline",x=0,y=-sh-cra},
        --{d="arc_a",q=1,r=cra,degs=90},
        {d="rline",x=-sw,y=0},
    }
    grec({
        g=1,
        x=tlx,
        y=tly,
        w=sw+cra+cra,
        h=sh+cra+cra,
        grad={{c=0x808080,a=1,p=0},{c=0x202020,a=1,p=1}},
        lw=1,
        sub=1,
        db=0,
        subtab=subtab})--]]
    end

function out(txj)--c,a,f,fs,face,x,y,txt,hj,vj,ro,sxo,syo,sfs,sface,sc,sa #########################################################
    local extents=cairo_text_extents_t:create()
    tolua.takeownership(extents)
    local function color(col,alp)
        return ((col / 0x10000) % 0x100) / 255, ((col / 0x100) % 0x100) / 255, (col % 0x100) / 255, alp
    end
    local function justify(jtxt,x,hj,y,vj,f,face,fs)
        if face=="normal" then
            face={f,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL}
        elseif face=="bold" then
            face={f,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD}
        elseif face=="italic" then
            face={f,CAIRO_FONT_SLANT_ITALIC,CAIRO_FONT_WEIGHT_NORMAL}
        elseif face=="bolditalic" then
            face={f,CAIRO_FONT_SLANT_ITALIC,CAIRO_FONT_WEIGHT_BOLD}
        else
            print ('face not set correctly - "normal","bold","italic","bolditalic"')
        end
        cairo_select_font_face (cr,face[1],face[2],face[3])
        cairo_set_font_size(cr,fs)
        cairo_text_extents(cr,jtxt,extents)
        local wx=extents.x_advance
        local wd=extents.width
        local hy=extents.height
        local bx=extents.x_bearing
        local by=extents.y_bearing+hy
        local tx=x
        local ty=y
        --set horizontal alignment - l, c, r
        if hj=="l" then
            x=x-bx
            rad=0
            nx=tx+wx
        elseif hj=="c" then
            x=(x*2-wx+wd)/2
            rad=(wx-bx)/2
            nx=tx+(wx/2)
        elseif hj=="r" then
            x=x-wx+wd+bx
            rad=wx-bx
            nx=tx
        else
            print ("hj not set correctly - l, c, r")
        end
        --vj. n=normal, nb=normal-ybearing, m=middle, mb=middle-ybearing, t=top
        if vj=="n" then
            y=y
            rad2=0
            ry=by
        elseif vj=="nb" then
            y=y-by
            rad2=-by
            ry=by
        elseif vj=="m" then
            y=y+((hy-by)/2)
            rad2=((hy-by)/2)
            ry=((hy-by)/2)-by
        elseif vj=="mb" then
            y=y+(hy/2)-by
            rad2=(hy/2)-by
            ry=((hy-by)/2)-by
        elseif vj=="t" then
            y=y+hy-by
            rad2=hy-by
            ry=0+by
        else
            print ("vj not set correctly - n, nb, m, mb, t")
        end
        return face,fs,x,y,rad,rad2,tx,ty
    end--justify local function #########################################################
    --set variables
    local c=txj.c                   or default_color                or 0xffffff
    local a=txj.a                   or default_alpha                or 1
    local f=txj.f                   or default_font                 or "mono"
    local fs=txj.fs                 or default_font_size            or 12
    local x=txj.x                   or 100
    local y=txj.y                   or 100
    local txt=txj.txt               or "set txt"
    local hj=txj.hj                 or default_hj                   or "l"
    local vj=txj.vj                 or default_vj                   or "n"
    local ro=txj.ro                 or defaukt_ro                   or 0
    local face=txj.face             or default_face                 or "normal"
    local wl=txj.wrap_len           or 0
    local wrap_gap=txj.wrap_gap     or 15
    --shadow
    local shadow=txj.shadow         or 0
    local sxo=txj.sxo               or default_sxo          or 2
    local syo=txj.syo               or default_syo          or 2
    local sc=txj.sc                 or defualt_sc           or 0x000000
    local sa=txj.sa                 or default_sa           or 0.8
    local sface=txj.sface           or default_sface        or face
    local sfs=txj.sfs               or default_sfs          or fs
    --print text ##################################################################
    if wl>0 then--do wrap
        local tt={}
        local s=txt:gsub(" $","|"):gsub("  ","| "):gsub("  ","| ")
        for i in string.gmatch(s, "%S+") do --Where "%S+" is the string pattern.
            table.insert(tt,i)
        end
        local tl=#tt
        local sl=string.len(s)
        lines={}
        if sl<=wl or tl==1 then
            table.insert(lines,s)
        else
            --get longest entry in table
            longest=0
            for i=1,tl do
                local l=string.len(tt[i])
                if l>longest then
                    longest=l
                end
            end
            if wl<longest then wl=longest+1 end
            while sl>wl and tl>1 do
                local ll=0
                local lt={}
                while ll+string.len(tt[1])<wl or string.len(tt[1])>wl do
                    table.insert(lt,tt[1])
                    table.remove(tt,1)
                    line=table.concat(lt," ")
                    ll=string.len(line)
                    tl=#tt
                end--while
                table.insert(lines,line)
                lastline=table.concat(tt," ")
                sl=string.len(lastline)
            end--while
            table.insert(lines,lastline)
        end
    end--if wrap
    --rotation
    if ro~=0 and wl==0 then
        if shadow==1 then
            local face,fs,x,y,rad,rad2,tx,ty=justify(txt,x+sxo,hj,y+syo,vj,f,sface,sfs)
            local point2=(math.pi/180)*(ro-180)
            local x2=tx+rad2*(math.sin(point2))
            local y2=ty-rad2*(math.cos(point2))
            local point=(math.pi/180)*(ro-90)
            local x1=x2+rad*(math.sin(point))
            local y1=y2-rad*(math.cos(point))
            cairo_save (cr)
            cairo_translate (cr,x1,y1)
            cairo_rotate(cr,(math.pi/180)*ro)
            cairo_select_font_face (cr,face[1],face[2],face[3])
            cairo_set_font_size(cr,fs)
            cairo_set_source_rgba (cr,color(sc,sa))
            cairo_show_text (cr,txt)
            cairo_stroke (cr)
            cairo_restore (cr)
        end--if shadow
        local face,fs,x,y,rad,rad2,tx,ty=justify(txt,x,hj,y,vj,f,face,sfs)
        local point2=(math.pi/180)*(ro-180)
        local x2=tx+rad2*(math.sin(point2))
        local y2=ty-rad2*(math.cos(point2))
        local point=(math.pi/180)*(ro-90)
        local x1=x2+rad*(math.sin(point))
        local y1=y2-rad*(math.cos(point))
        cairo_save (cr)
        cairo_translate (cr,x1,y1)
        cairo_rotate(cr,(math.pi/180)*ro)
        cairo_select_font_face (cr,face[1],face[2],face[3])
        cairo_set_font_size(cr,fs)
        cairo_set_source_rgba (cr,color(c,a))
        cairo_show_text (cr,txt)
        cairo_stroke (cr)
        cairo_restore (cr)
        return nx,ny
    elseif wl>0 then
        for i=1,#lines do
            local txt=string.gsub(lines[i],"|"," ")
            if shadow==1 then
                local face,fs,x,y=justify(txt,x+sxo,hj,y+syo,vj,f,sface,sfs)
                cairo_select_font_face (cr,face[1],face[2],face[3])
                cairo_set_font_size(cr,fs)
                cairo_move_to (cr,x,y+(wrap_gap*(i-1)))
                cairo_set_source_rgba (cr,color(sc,sa))
                cairo_show_text (cr,txt)
                cairo_stroke (cr)
            end--if shadow
            local face,fs,x,y=justify(txt,x,hj,y,vj,f,face,fs)
            cairo_select_font_face (cr,face[1],face[2],face[3])
            cairo_set_font_size(cr,fs)
            cairo_move_to (cr,x,y+(wrap_gap*(i-1)))
            cairo_set_source_rgba (cr,color(c,a))
            cairo_show_text (cr,txt)
            cairo_stroke (cr)
        end--for i=1,#lines
        return #lines*wrap_gap
    elseif ro==0 and wl==0 then
        --draw shadow first
        if shadow==1 then
            local face,fs,x,y=justify(txt,x+sxo,hj,y+syo,vj,f,sface,sfs)
            cairo_select_font_face (cr,face[1],face[2],face[3])
            cairo_set_font_size(cr,fs)
            cairo_move_to (cr,x,y)
            cairo_set_source_rgba (cr,color(sc,sa))
            cairo_show_text (cr,txt)
            cairo_stroke (cr)
        end--if shadow
        local face,fs,x,y=justify(txt,x,hj,y,vj,f,face,fs)
        cairo_select_font_face (cr,face[1],face[2],face[3])
        cairo_set_font_size(cr,fs)
        cairo_move_to (cr,x,y)
        cairo_set_source_rgba (cr,color(c,a))
        cairo_show_text (cr,txt)
        cairo_stroke (cr)
        return nx
    end--if ro
end--function out #########################################################################################

function flip_digit(tlx,tly,cra,sw,dig)
    sh=(sw+cra+cra)*(120/80)
    fs=(180/160)*sh
    subtab={
        {d="start",x=tlx+cra,y=tly},
        {d="rline",x=sw,y=0},
        {d="arc_c",q=1,r=cra,degs=90},
        {d="rline",x=0,y=sh-cra-cra},
        {d="arc_c",q=2,r=cra,degs=90},
        {d="rline",x=-sw,y=0},
        {d="arc_c",q=3,r=cra,degs=90},
        {d="rline",x=0,y=-sh+cra+cra},
        {d="arc_c",q=4,r=cra,degs=90},
    }
    grec({g=1,x=tlx,y=tly,w=sw+cra+cra,h=sh+cra+cra,grad={{c=0x202020,a=1,p=0}},lw=1,sub=1,db=0,subtab=subtab})
    tin=(sw+cra+cra)/8
    tup=(sh)/12
    out({x=tlx+tin,y=tly+sh-tup+ajust,fs=fs,txt=dig, hj=alignement})
    glassyboxtop(tlx,tly,cra,sw+cra+cra,sh/2,0)
    glassyboxbot(tlx,tly+(sh/2),cra,sw+cra+cra,sh/2,0)
    cairo_move_to(cr,tlx-1,tly+(sh/2))
    cairo_rel_line_to(cr,sw+cra+cra+2,0)
    cairo_set_source_rgba(cr,0,0,0,1)
    cairo_set_line_width(cr,2)
    cairo_stroke(cr)
end

Voici quelques captures, pour ceux qui se demanderaient à quoi ça peut ressembler.
1391004037.png

1391004119.png

1391004140.png

Edit : Attention, il y a des fuites de mémoires, je regarderais plus tard, mais tu peux demander à mrpeachy, d'y jeter un oeil en attendant problème réglé.

Edit 2 : j'ai ajouté une variable pour ajuster la hauteur du chiffre (pour une position propre dans le Flip Flap)

Edit 3 : correction de la fonction d'alignement et ajout d'une variable pour aligner à gauche, droite ou centrer (perso avec LED_mono, je préfère aligner à droite)

Dernière modification par Didier-T (Le 29/01/2014, à 15:03)

Hors ligne

#427 Le 29/01/2014, à 16:25

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Merci beaucoup Didier-T ! Je me disais bien que cette horloge lua allait te plaire... smile Je vais donc poster sur le forum Anglophone wink
flip_flap.jpg

Hors ligne

#428 Le 30/01/2014, à 08:37

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour golgot200,

Personnellement ce qui me manque le plus c'est le mouvement Flip Flap, mais bon mrpeachy à fait un super taf avec cette horloge, je suis bien incapable d'en fair autant (je ne suis pas doué du tout pour le graphisme)

Hors ligne

#429 Le 03/02/2014, à 10:51

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

@Didier-T
Je viens de poser la question à mrpeachy pour le mouvement de l'horloge flip-flap...
J'ai un bug avec le chronographe.lua concernant le mois de février (je crois) bug_feb.jpg Si tu utilises encore ce script as tu remarqué ce même bug ?

Hors ligne

#430 Le 03/02/2014, à 12:48

ragamatrix

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Dans le script chronograph, il faut mettre cette section pour les "days numbers"

-- ### START DIAL D ### Left - Day Numbers Dial ###########
-- GET NUMBER OF DAYS IN CURRENT MONTH
-- calculate Feb, then set up table
year4num=os.date("%Y")
t1=os.time({year=year4num,month=03,day=01,hour=00,min=0,sec=0});
t2=os.time({year=year4num,month=02,day=01,hour=00,min=0,sec=0});
febdaynum=tonumber((os.difftime(t1,t2))/(24*60*60))
-- MONTH TABLE
monthdays={31,febdaynum,31,30,31,30,31,31,30,31,30,31}
this_month=tonumber(os.date("%m"))
number_days=monthdays[this_month]
-- TEXT positioning  

Hors ligne

#431 Le 06/02/2014, à 18:21

maan

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

salut à tous et bonne année ( vaut mieux tard que jamais tongue )

J'ai un ptit souci je viens de faire une installe de Saucy (13.10) et j'ai transférer dessus mes conkys que j’aimerais retravailler pour cette environnement,
mais le souci est que je n'arrive pas à résoudre un ptit  souci.  Mes conky disparaissent quand je clic sur le bureau.

J'ai changer "override" "desktop" mais rien n'y fait. je n'ai pourtant rien toucher..... et mes conkys marchent très bien sur Voyager 12.04 .....

Si quelqu'un a une idée, je prend.


Ubuntu_studio 14.04

Hors ligne

#432 Le 06/02/2014, à 20:35

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonsoir,
@ ragamatrix,
je viens de recevoir le mail de notification pour ton message du 03/02/2014 à 10h51.
Non je n'ai pas ce soucis, en fait j'avais pas mal modifier le script original, justement pour éviter ce genre de désagrément.
voici le script en question.
chronographe.lua

--[[ multiple analogue clocks by Didier-T (forum Ubuntu.fr) - 25 Nov 2012
 Basé sur le travail de mrpeachy et Sector11
26 Nov 2012 - ajout hand_gap et hand_larg Didier-T
01 Dec 2012 - correction bug nb_jour Décembre Didier-T
02 Dec 2012 - ajout mode 24 heures Didier-T


use in conkyrc

lua_load /path/Chronograph.lua
lua_draw_hook_pre main
TEXT

]]

require 'cairo'
--Position et taille horloge
local init={
  {text={"Dim","Lun","Mar","Mer","Jeu","Ven","Sam"},
  nb=7*24,
  formule='jour',
  police="monofur",
  taille=12,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFF0000,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFF0000,
  point_alpha_current=1,
  hand_color=0xFFFFFF,
  hand_alpha=0.7,
  center_x=175,
  center_y=90,
  text_radius=45,
  point_radius=32,
  hand_gap=0,
  hand_larg=1,
  hand_length=28,
  point_ray=0.5
  },
  {text={""},
  nb="",
  formule='jour_num',
  police="Century Schoolbook",
  taille=10,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFF0000,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFF0000,
  point_alpha_current=1,
  hand_color=0xFFFFFF,
  hand_alpha=0.7,
  center_x=90,
  center_y=175,
  text_radius=45,
  point_radius=35,
  hand_gap=0,
  hand_larg=1,
  hand_length=28,
  point_ray=0.5
  },
  {text={"Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aôu","Sep","Oct","Nov","Déc"},
  nb="",
  formule='mois',
  police="monofur",
  taille=12,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFF0000,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFF0000,
  point_alpha_current=1,
  hand_color=0xFFFFFF,
  hand_alpha=0.7,
  center_x=260,
  center_y=175,
  text_radius=45,
  point_radius=32,
  point_ray=1,
  hand_gap=0,
  hand_larg=1,
  hand_length=28
  },
  {text={"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"},
  hour_24=true,
  nb=12*3600, --12 or 24 *3600
  formule='heure',
  police="Tibetan Machine Uni",
  taille=13,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFFFF00,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFFFF00,
  point_alpha_current=1,
  hand_color=0xFFFFFF,
  hand_alpha=0.7,
  center_x=175,
  center_y=175,
  text_radius=165,
  point_radius=150,
  hand_gap=0,
  hand_length=110,
  hand_larg=3,
  point_ray=1
  },
  {text={"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""},
  nb=3600,
  formule='minute',
  police="monofur",
  taille=9,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xF00000,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xF00000,
  point_alpha_current=1,
  hand_color=0xFFFFFF,
  hand_alpha=0.7,
  center_x=175,
  center_y=175,
  text_radius=170,
  point_radius=150,
  point_ray=0,
  hand_gap=0,
  hand_larg=2,
  hand_length=135
  },
  {text={"","01","02","03","04","","06","07","08","09","","11","12","13","14","","16","17","18","19","","21","22","23","24","","26","27","28","29","","31","32","33","34","","36","37","38","39","","41","42","43","44","","46","47","48","49","","51","52","53","54","","56","57","58","59"},
  nb=60,
  formule='secondes',
  police="cmr10",
  taille=10,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFFFFFF,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFF0000,
  point_alpha_current=1,
  hand_color=0xFF0000,
  hand_alpha=0.4,
  center_x=175,
  center_y=175,
  text_radius=160,
  point_radius=150,
  point_ray=0.5,
  hand_gap=150,
  hand_larg=4,
  hand_length=165
  },
}

function conky_main()
  
  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 extents=cairo_text_extents_t:create()
  tolua.takeownership(extents)
  local h, min, sec=time()
  local jour, jour_num, mois, nb_jour=date()

  if tonumber(conky_parse('${updates}'))>3 then
    for i in pairs(init) do
      draw(cr, extents, init[i], h, min, sec, jour, jour_num, mois, nb_jour)
    end
  end

  cairo_destroy(cr)
  cairo_surface_destroy(cs)
  cr=nil
  collectgarbage()
end

function draw(cr, extents, value, h, min, sec, jour, jour_num, mois, nb_jour)
  local pos
  local nb=tonumber(table.getn(value.text))
  cairo_select_font_face (cr, value.police, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
  cairo_set_font_size (cr, value.taille)
-- Section Horloge
  if value.formule=="heure" then
    local text
    nb=value.nb/3600
    if nb==24 then h=tonumber(os.date("%H")) end
    pos=heure(h, min, sec)
    for i=1, nb do
      local j=i-1
      if value.hour_24==true then
        if tonumber(os.date("%H"))<nb then
          text=value.text[i]
        else
          text=value.text[i+12]
        end
      else
        text=value.text[i]
      end
      if j==h then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
  elseif value.formule=="minute" then 
    pos=minute(min, sec)
    for i=1, nb do
      local j=i-1
      local text=value.text[i]
      if j==min then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
  elseif value.formule=="secondes" then
    pos=sec
    for i=1, nb do
      local j=i-1
      local text=value.text[i]
      if j==sec then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
-- Section date
  elseif value.formule=="mois" then
    value.nb, pos=month()
    for i=1, nb do
      local j=i-1
      local text=value.text[i]
      if i==mois then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
  elseif value.formule=="jour_num" then
    value.nb=nb_jour*24
    nb=nb_jour
    pos=day(jour-1)
    for i=1, nb_jour do
      if math.mod(i, 2) == 0 then
        text=string.format("%02d",i)
      else
        text=""
      end
      local j=i-1
      if i==jour then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
  elseif value.formule=="jour" then
    pos=(jour_num*24)+tonumber(os.date("%H"))
    for i=1, nb do
      local j=i-1
      local text=value.text[i]
      if i==jour_num+1 then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, j, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, j, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, j, cr, value.point_ray)
      end
    end
    
-- Horloge avec personnalisée (non utilisé pour le moment)  
  else
    pos=tonumber(conky_parse(value.formule))
    for i=1, nb do
      local j=i-1
      local text=value.text[i]
      if tonumber(text)==pos then
         texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color_current, value.text_alpha_current, i, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color_current, value.point_alpha_current, i, cr, value.point_ray)
      else
        texte(value.police, value.taille, text, nb, value.text_radius, value.center_x, value.center_y, value.text_color, value.text_alpha, i, extents, cr)
        point(nb, value.point_radius, value.center_x, value.center_y, value.point_color, value.point_alpha, i, cr, value.point_ray)
      end
    end
  end

  hand(pos, value.nb, value.text_radius, value.hand_length, value.hand_gap, value.hand_larg, value.center_x, value.center_y, value.hand_color, value.hand_alpha, cr)
end

function date()
  local nb_jour
  local jour=tonumber(os.date("%d"))
  local jour_num=tonumber(os.date("%w"))
  local mois=tonumber(os.date("%m"))
  if mois==12 then
    nb_jour=31
  else
    nb_jour=tonumber(conky_parse("${exec date --date '1 month' +%j}"))-tonumber(conky_parse("${exec date +%j}"))
  end
  return jour, jour_num, mois, nb_jour
end

function day(jour)
  local hjour=(jour*24)+tonumber(os.date("%H"))
  return hjour
end

function month()
  local nb_jours_annee=tonumber(conky_parse("${exec echo $(date --date '31 Dec' +%j)}"))
  local jour_annee=tonumber(conky_parse("${exec echo $(date +%j)}"))
  return nb_jours_annee, jour_annee
end

function time()
  local h=tonumber(os.date("%I"))
  local min=tonumber(os.date("%M"))
  local sec=tonumber(os.date("%S"))
  return h, min, sec
end

function heure(h, min, sec)
  local hs=(h*3600)+(min*60)+sec
  return hs
end

function minute(min, sec)
  local m=(min*60)+sec
  return m
end

function rgb_to_r_g_b(col,alp)
  return ((col / 0x10000) % 0x100) / 255, ((col / 0x100) % 0x100) / 255, (col % 0x100) / 255, alp
end

function texte(police, taille, text, nb, radius, center_x, center_y, color, alpha, i, extents, cr)
  cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))
  local point=(math.pi/180)*((360/nb)*(i))
  local x=0+radius*(math.sin(point))
  local y=0-radius*(math.cos(point))
  cairo_text_extents(cr,text,extents)
  local width=extents.width
  local height=extents.height
  cairo_move_to(cr,center_x+x-(width/2),center_y+y+(height/2))
  cairo_show_text (cr, text)
  cairo_stroke (cr)
end

function point(nb, radius, center_x, center_y, color, alpha, i, cr, ray)
  cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))
  local point=(math.pi/180)*((360/nb)*(i))
  local x=0+radius*(math.sin(point))
  local y=0-radius*(math.cos(point))
  cairo_arc (cr,center_x+x,center_y+y,ray,0,2*math.pi)
  cairo_stroke (cr)
end

function hand(pos, nb, radius, hand_length, hand_gap, largeur, center_x, center_y, color, alpha, cr)
  cairo_set_source_rgba (cr,rgb_to_r_g_b(color,alpha))
  local point=(math.pi/180)*((360/nb)*(pos))
  local x_gap=0+hand_gap*(math.sin(point))
  local y_gap=0-hand_gap*(math.cos(point))
  local x=0+hand_length*(math.sin(point))
  local y=0-hand_length*(math.cos(point))
  cairo_move_to (cr,center_x+x_gap,center_y+y_gap)
  cairo_line_to (cr,center_x+x,center_y+y)
  cairo_set_line_width (cr,largeur)
  cairo_set_line_cap  (cr, CAIRO_LINE_CAP_ROUND)
  cairo_stroke (cr)
end

@ maan,
tu devrais essayer me mode normal, pour own_window_type, cher moi sa marche.

A+

Hors ligne

#433 Le 10/02/2014, à 19:10

XantaX

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour,

Je vous fais partager mon conky.
1392054127.jpg

La partie météo vient directement de: http://forum.ubuntu-fr.org/viewtopic.php?pid=7952561

Mais si je partage, c'est surtout pour la partie clé usb. J'ai beaucoup cherché sur le net pour afficher les médias monté à chaud, et je n'ai pas trouvé grand chose de graphique et surtout qui fonctionne (failli mettre screenlet d'ailleurs).
Donc j'ai réussi à trouver un semblant de ce que je voulais sur (rendons à césar ce qui est à césar):
http://scriptam.over-blog.com/article-a … 97909.html

Et après pas mal de temps à mettre les mains dans le cambouis, voila le résultat:
1392054724.jpg

Les clés usb apparaissent et disparaissent donc lors du montage/démontage, sans définir de point de montage, donc quelquesoit la clé usb insérée, elle sera affichée. smile


Le conkyrc:

	# -- Conky settings -- #
	background yes
	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
	# -- Window specifications -- #

  own_window_argb_visual yes
	own_window yes
	own_window_type normal
	own_window_transparent yes
        own_window_argb_visual 255
	own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

	border_inner_margin 0
	border_outer_margin 0

	minimum_size 280 250
	maximum_width 700
	

	alignment tl
	gap_x 730
	gap_y 320

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

	# -- Text settings -- #
	use_xft yes
	xftfont MaiandraGD:size=10
	xftalpha 0.4

	uppercase no
	
	TEXT

 ${execpi 1 ~/.conky/disk/disk.sh} 

Et le fichier disk.sh:

#!/bin/bash
# Petit modif par XantaX, sur le modéle de Rodolphe Rombeaut sur le modèle de Cyril (Alias Sunkart)
# Affichage avancé des périphériques
# Copyright (C) 14 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.

OLDIFS=$IFS
IFS="
"
liste=()
alpha=(a b c d e f g h i j k l m n o p q r s t u)
a=-30
b=-25
for i in `df -h | grep ^\/dev`
do
    let $[ a+=44 ]
    let $[ b+=44 ]
    # récupérer le nom de dossier
    name=${i#*\%}
    [ -z "${name##*/}" ] && name="root" || name=${name##*/}
   
    montage=${i#*\%}
    [ -z "${montage#*/}" ] && montage="/" || montage="/${montage#*/}"
   
    valeur=${i%\%*}
    valeur=${valeur##* }
    [ "$valeur" -gt 80 ] && color="CC2929" || {
        [ "$valeur" -gt 50 ] && color="CC6D29" || {
            [ "$valeur" -gt 20 ] && color="008000" || color="616161"
        }
    }
    liste+=(`echo '${voffset 5}${font URW Chancery L:style=bold:size=12:style=bold}${color ffe595}${goto 60}'$name' :${fs_used '$montage'}/${fs_size '$montage'}
${voffset -5}${goto 60}${fs_bar 5,80 '$montage'}
${image ~/.conky/disk/images/base.png -p 35,'$a' -s 248x40}
${image ~/.conky/disk/images/cle.png -p 20,'$b' -s 32x32}
${voffset -61}'`)
done
printf '%s\n' ${liste[@]}
IFS=$OLDIFS

exit 

Lien de téléchargement:
http://www.hebergeurfichier.com/downloa … e102c.html
Le fichier Disk doit être décompressé dans le dossier /home/votrenom/.conky


Voili voilou, je me suis dis que cela pouvais intéressé vu comme j'ai galéré à trouver de mon côté.

EDIT:
Les images base.png et cle.png:
1392059188.png
1392059162.png

Edit2: j'ai remplacé le home/picha par ~ comme conseillé, donc fonctionne directement maintenant (je suis un petit débutant, donc je ne connais pas encore toutes les astuces).

Config pour info:
Asus 1025C, équipé de lubuntu 13.10,
Les modules: cairo-dock, comptom, skippy-xd et conky

Dernière modification par XantaX (Le 11/02/2014, à 17:12)

Hors ligne

#434 Le 10/02/2014, à 19:53

chepioq

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Pas mal comme script.
Peux-tu nous donner un lien vers tes deux images : base.png et cle.png


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

Hors ligne

#435 Le 10/02/2014, à 20:18

chepioq

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Merci, j'ai testé sur une fedora et cela fonctionne impec.


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

Hors ligne

#436 Le 10/02/2014, à 20:52

chepioq

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Si je peux te donner un conseil, dans ton script ainsi que dans ton conkyrc, remplace /home/picha par ~ comme cela tout le monde pourra l'utiliser sans modifier le chemin du /home.


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

Hors ligne

#437 Le 16/02/2014, à 20:36

XantaX

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

La V3 de l'affichage des disques et clé USB en montage à chaud

Modifications:
- Affichage des icônes différentes pour les clé usb et les disques dur
- Modification de la barre de progression de l'espace disque utilisé
- Couleur de la barre de progression de l'espace disque différente selon espace utilisé.


Aperçu:
1392734552.png

Téléchargement:
http://www.hebergeurfichier.com/downloa … e8dcc.html


Décompresser les fichiers et copier le .conky dans votre Home/utilisateur
Lancer conkyrc


XantaX

Dernière modification par XantaX (Le 18/02/2014, à 15:45)

Hors ligne

#438 Le 19/02/2014, à 11:21

loutch

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Hello

Voila j'ai besoin d'un peu d'aide pour mettre une valeur dans un script lua pour afficher dans un cercle la température de ma carte et celle du disque dur .Pour les procs ça fonctionne au poil.

voici ce que j'utilise dans conky qui m'indique bien les températures:

pour la carte
{hwmon 0 temp 1} °C

et pour le disque :
${execi 120 hddtemp -n /dev/sda} °C

voici ce que j'ai pour un cpu dans conky
${exec expr `cat /sys/class/hwmon/hwmon2/device/temp1_input` / 1000}°C

et la valeur dans le lua
name="exec",
arg="exec expr `cat /sys/class/hwmon/hwmon2/device/temp1_input` / 1000"

merci d'avance pour toute réponse et

@+

j'ai essayé plein de combinaison mais je ne trouve pas la bonne .

Hors ligne

#439 Le 19/02/2014, à 11:35

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour loutch,
dans ton lua, sa devrait être ceci

pour la carte

name="hwmon",
arg="0 temp 1",

pour le disque

name="execi",
arg="120 hddtemp -n /dev/sda",

pour le cpu

name="exec",
arg="expr `cat /sys/class/hwmon/hwmon2/device/temp1_input` / 1000",

pour tes prochains posts, essaye de te servir des balises, ça rend la lecture plus agréable cool

Dernière modification par Didier-T (Le 19/02/2014, à 11:36)

Hors ligne

#440 Le 19/02/2014, à 16:17

loutch

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

RE

Merci  Didier

ça marcheeeeeeeeeeeeeeee, j'aurais jamais trouvé.

1392825613.png

@+

PS : désolé pour les balises

Dernière modification par loutch (Le 19/02/2014, à 17:02)

Hors ligne

#441 Le 19/02/2014, à 17:11

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

mais de rien, jolie conky, un peut charger à mon gout, mais ça devrait plaire à ragamatrix, et certainement a d'autres.
par contre, tu devrais flouter ton adresse IP

Hors ligne

#442 Le 19/02/2014, à 18:54

loutch

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

RE

Pour l'adresse c'est fait , j'éssaie Mageia 4 sur mon pavilion g7 et je la charge au max de conky pour voir ce que cette distro donne au niveau température et utilisation processeur.

Encore merci et


@+

Hors ligne

#443 Le 22/02/2014, à 14:45

daniel38100

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

mais de rien, jolie conky, un peut charger à mon gout, mais ça devrait plaire à ragamatrix, et certainement a d'autres.
par contre, tu devrais flouter ton adresse IP

moi aussi ça ma plais quand c'est charger

Hors ligne

#444 Le 22/02/2014, à 17:06

daniel38100

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Capture_d_cran_22022014_17_01_03.png
Bonjour j'ai créer une compo météo-fond-ecran et j'aimerai y incorpore une horloge lua au centre
donc si quelqu'un en a une toute prête en stock je suis intéresser vu que j'y connais pas grand chose en .Lua (toute celles que j'ai déjà vu ne me plaise pas)
MERCI

Hors ligne

#445 Le 22/02/2014, à 22:25

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Bonjour daniel38100,
si tu aimes quand c'est chargé, ceci devrait te plaire.
1393103955.png
clique sur l'image si tu veux l'archive
bien entendu, c'est configurable, tu n'es pas obligé de tout afficher wink

Hors ligne

#446 Le 23/02/2014, à 13:19

daniel38100

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

Didier-T a écrit :

Bonjour daniel38100,
si tu aimes quand c'est chargé, ceci devrait te plaire.
http://pix.tdct.org/upload/img/1393103955.png
clique sur l'image si tu veux l'archive
bien entendu, c'est configurable, tu n'es pas obligé de tout afficher wink

merci Didier-T j'vais essayer de me démerder avec ça si j'ai un problème je le ferai savoir

c'est top c'est déja de la bonne taille
Capture_d_cran_23022014_14_14_01.png

Dernière modification par daniel38100 (Le 23/02/2014, à 14:15)

Hors ligne

#447 Le 23/02/2014, à 14:18

daniel38100

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

si je veut mettre les minutes a l’extérieur faut que je modifie quoi?

Hors ligne

#448 Le 23/02/2014, à 15:20

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

tu veux agrandir le cercle des minutes, si c'est bien ça, ça ce passe ici
Chronographe_Didier.lua (petit extrait)

  {text={"","01","02","03","04","","06","07","08","09","","11","12","13","14","","16","17","18","19","","21","22","23","24","","26","27","28","29","","31","32","33","34","","36","37","38","39","","41","42","43","44","","46","47","48","49","","51","52","53","54","","56","57","58","59"},
  nb=60,
  formule='secondes',
  police="cmr10",
  taille=10,
  text_color=0xFFFFFF,
  text_alpha=1,
  text_color_current=0xFFFFFF,
  text_alpha_current=1,
  point_color=0xFFFFFF,
  point_alpha=1,
  point_color_current=0xFF0000,
  point_alpha_current=1,
  hand_color=0xFF0000,
  hand_alpha=0.4,
  center_x=175,
  center_y=175,
  text_radius=160,
  point_radius=150,
  point_ray=0.5,
  hand_gap=150,
  hand_larg=4,
  hand_length=165
  },

comme tu peux le constater, en fait ce sont les secondes qui sont affichées
il faut jouer sur text_radius.

Hors ligne

#449 Le 23/02/2014, à 16:02

daniel38100

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

ok merci je commence a comprendre

Capture_d_cran_23022014_21_31_32.png

Dernière modification par daniel38100 (Le 23/02/2014, à 21:32)

Hors ligne

#450 Le 23/02/2014, à 18:39

Didier-T

Re : [5] Conky : Postez vos conkyrc ou certaines parties intéressantes

je vois ça, ça va être une oeuvre d'art smile

Dernière modification par Didier-T (Le 23/02/2014, à 18:40)

Hors ligne