Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#576 Le 07/02/2012, à 16:17

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ Phyllinux,
tu pourrais mettre les script en entier, avec une vue global ce serait plus simple.

mais à priori.
les 11 paquets de lignes de code commençant par name='eval', servent a tracer les cercles et les points qui ne bougent pas.

Je ne suis pas sure de ce que j'avance, sa dépens du reste du code.

En tous cas le rendu est sympa smile

Hors ligne

#577 Le 07/02/2012, à 16:36

carpediem

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ragamatrix

Je ne voie pas de problème à première vue, as-tu essayés un envoie pour voir s'il s"affiche dans le conky ?

@Phyllinux

Pas mal ton conky, mais un peu chargé à mon goût.


"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE

Hors ligne

#578 Le 07/02/2012, à 17:03

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :

@ Phyllinux,
tu pourrais mettre les script en entier, avec une vue global ce serait plus simple.

mais à priori.
les 11 paquets de lignes de code commençant par name='eval', servent a tracer les cercles et les points qui ne bougent pas.

Je ne suis pas sure de ce que j'avance, sa dépens du reste du code.

En tous cas le rendu est sympa smile

Voici les scripts dans leur intégralité :
clock_rings.lua

--[[
Clock Rings by londonali1010 (2009)

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 near the end of the script uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.

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

Changelog:
+ v1.1.1 -- Fixed minor bug that caused the script to crash if conky_parse() returns a nil value (20.10.2009)
+ v1.1 -- Added colour option for clock hands (07.10.2009)
+ v1.0 -- Original release (30.09.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=0xFFFFFF,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.5,
        -- "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=150, y=150,
        -- "radius" is the radius of the ring.
        radius=135,
        -- "thickness" is the thickness of the ring, centred around the radius.
        thickness=4,
        -- "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=0x00FF00,
        fg_alpha=0.3,
        x=150, y=150,
        radius=140,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0xFFFFFF,
        bg_alpha=0.1,
        fg_colour=0x00FF00,
        fg_alpha=0.5,
        x=150, y=150,
        radius=145,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.1,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=150,
        radius=66,
        thickness=130,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=150,
        radius=1,
        thickness=10,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=30,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=15,
        thickness=27,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=85, y=150,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=30,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=15,
        thickness=27,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=215, y=150,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=25,
        thickness=1,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=13,
        thickness=22,
        start_angle=0,
        end_angle=360
    },
    {
        name='eval',
        arg='1',
        max=1,
        bg_colour=0xFFFFFF,
        bg_alpha=1.0,
        fg_colour=0xFFFFFF,
        fg_alpha=0.0,
        x=150, y=75,
        radius=1,
        thickness=2,
        start_angle=0,
        end_angle=360
    },
    }

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

clock_r=127

-- "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=150
clock_y=150

-- Colour & alpha of the clock hands

clock_colour=0x556B2F
clock_alpha=1

-- Do you want to show the seconds hand?

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,5)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(clock_colour,clock_alpha))
    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 value == nil then value = 0 end
        pct=value/pt['max']

        draw_ring(cr,pct,pt)
    end

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

    if conky_window==nil then return end
    local 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

multi-rings.lua

--==============================================================================
--                            multi_rings.lua
--
--  author  : SLK
--  version : v2011011601
--  license : Distributed under the terms of GNU GPL version 2 or later
--
--==============================================================================

require 'cairo'

--------------------------------------------------------------------------------
--                                                                    clock DATA
-- HOURS
clock_h = {
    {
    name='time',                   arg='%H',                    max_value=12,
    x=150,                           y=150,
    graph_radius=140,
    graph_thickness=3,
    graph_unit_angle=30,           graph_unit_thickness=5,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=1,                  txt_size=10.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=125,
    graduation_thickness=10,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=0.5,
    },
}
-- MINUTES
clock_m = {
    {
    name='time',                   arg='%M',                    max_value=60,
    x=150,                           y=150,
    graph_radius=100,
    graph_thickness=3,
    graph_unit_angle=6,            graph_unit_thickness=3,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=0,                  txt_size=9.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=57,
    graduation_thickness=0,        graduation_mark_thickness=2,
    graduation_unit_angle=30,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
    },
}
-- SECONDS
clock_s = {
    {
    name='time',                   arg='%S',                    max_value=60,
    x=150,                           y=150,
    graph_radius=50,
    graph_thickness=3,
    graph_unit_angle=6,            graph_unit_thickness=3,
    graph_bg_colour=0xffffff,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    txt_radius=100,
    txt_weight=0,                  txt_size=12.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=0,
    graduation_thickness=0,        graduation_mark_thickness=0,
    graduation_unit_angle=0,
    graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
    },
}

--------------------------------------------------------------------------------
--                                                                    gauge DATA
gauge = {
{
    name='cpu',                    arg='cpu0',                  max_value=100,
    x=85,                       y=150,
    graph_radius=14,
    graph_thickness=27,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=27,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
{
    name='memperc',                arg='',                      max_value=100,
    x=215,                        y=150,
    graph_radius=14,
    graph_thickness=27,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=27,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
{
    name='fs_used_perc',                arg='/',                      max_value=100,
    x=150,                        y=75,
    graph_radius=10,
    graph_thickness=23,
    graph_start_angle=0,
    graph_unit_angle=3.5,          graph_unit_thickness=3.0,
    graph_bg_colour=0xFFFFFF,      graph_bg_alpha=0.0,
    graph_fg_colour=0xFFFFFF,      graph_fg_alpha=0.0,
    hand_fg_colour=0x00CFB3,       hand_fg_alpha=1.0,
    txt_radius=1,
    txt_weight=0,                  txt_size=8.0,
    txt_fg_colour=0xFFFFFF,        txt_fg_alpha=0.0,
    graduation_radius=22,
    graduation_thickness=4,        graduation_mark_thickness=4,
    graduation_unit_angle=30,
    graduation_fg_colour=0x00FF00, graduation_fg_alpha=1.0,
    caption='',
    caption_weight=1,              caption_size=8.0,
    caption_fg_colour=0xFFFFFF,    caption_fg_alpha=0.0,
},
}

-------------------------------------------------------------------------------
--                                                                 rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

-------------------------------------------------------------------------------
--                                                            angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
    local pos = current_angle + start_angle
    return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end

-------------------------------------------------------------------------------
--                                                              draw_clock_ring
-- displays clock
--
function draw_clock_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']

    -- background ring
    cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = (value % max_value)
    local i = 1
    while i <= val do
        cairo_arc(display, x, y, graph_radius,(  ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360)  )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
        cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = (graph_unit_angle * i) - graph_unit_thickness

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = 360 / graduation_unit_angle
        local i = 1
        while i <= nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * (math.cos((angle * 2 * math.pi / 360)-(math.pi/2)))
    local movey = txt_radius * (math.sin((angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight);
    cairo_set_font_size (display, txt_size);
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha));
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3);
    cairo_show_text (display, value);
    cairo_stroke (display);
end

-------------------------------------------------------------------------------
--                                                              draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
    local max_value = data['max_value']
    local x, y = data['x'], data['y']
    local graph_radius = data['graph_radius']
    local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
    local graph_start_angle = data['graph_start_angle']
    local graph_unit_angle = data['graph_unit_angle']
    local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
    local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
    local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
    local graph_end_angle = (max_value * graph_unit_angle) % 360

    -- background ring
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
    cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
    cairo_set_line_width(display, graph_thickness)
    cairo_stroke(display)

    -- arc of value
    local val = value % (max_value + 1)
    local start_arc = 0
    local stop_arc = 0
    local i = 1
    while i <= val do
        start_arc = (graph_unit_angle * i) - graph_unit_thickness
        stop_arc = (graph_unit_angle * i)
        cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
        cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
        cairo_stroke(display)
        i = i + 1
    end
    local angle = start_arc

    -- hand
    start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
    stop_arc = (graph_unit_angle * val)
    cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
    cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
    cairo_stroke(display)

    -- graduations marks
    local graduation_radius = data['graduation_radius']
    local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
    local graduation_unit_angle = data['graduation_unit_angle']
    local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
    if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
        local nb_graduation = graph_end_angle / graduation_unit_angle
        local i = 0
        while i < nb_graduation do
            cairo_set_line_width(display, graduation_thickness)
            start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
            stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
            cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
            cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
            cairo_stroke(display)
            cairo_set_line_width(display, graph_thickness)
            i = i + 1
        end
    end

    -- text
    local txt_radius = data['txt_radius']
    local txt_weight, txt_size = data['txt_weight'], data['txt_size']
    local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
    local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
    local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
    cairo_set_font_size (display, txt_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
    cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
    cairo_show_text (display, value)
    cairo_stroke (display)

    -- caption
    local caption = data['caption']
    local caption_weight, caption_size = data['caption_weight'], data['caption_size']
    local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
    local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
    cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
    cairo_set_font_size (display, caption_size)
    cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
    cairo_move_to (display, x + tox + 5, y + toy + 1)
    -- bad hack but not enough time !
    if graph_start_angle < 105 then
        cairo_move_to (display, x + tox - 30, y + toy + 1)
    end
    cairo_show_text (display, caption)
    cairo_stroke (display)
end

-------------------------------------------------------------------------------
--                                                               go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
    local function load_clock_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_clock_ring(display, data, value)
    end
    
    for i in pairs(clock_h) do
        load_clock_rings(display, clock_h[i])
    end
    for i in pairs(clock_m) do
        load_clock_rings(display, clock_m[i])
    end
    for i in pairs(clock_s) do
        load_clock_rings(display, clock_s[i])
    end
end

-------------------------------------------------------------------------------
--                                                               go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
    local function load_gauge_rings(display, data)
        local str, value = '', 0
        str = string.format('${%s %s}',data['name'], data['arg'])
        str = conky_parse(str)
        value = tonumber(str)
        draw_gauge_ring(display, data, value)
    end
    
    for i in pairs(gauge) do
        load_gauge_rings(display, gauge[i])
    end
end

-------------------------------------------------------------------------------
--                                                                         MAIN
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 display = cairo_create(cs)
    
    local updates = conky_parse('${updates}')
    update_num = tonumber(updates)
    
    if update_num > 5 then
        go_clock_rings(display)
        go_gauge_rings(display)
    end

end

Un petit script qui fait clignoter les 3 LED bleues
blinkingLED

${image ~/conky/weather+clock/images/Blank.png -p 129, 241 -s 40x40}${if_match ${execi 1 num=$(date +%-S);rem=$(( num % 2 ));if [ $rem -eq 0 ] ; then echo 0 ; else  echo 1 ; fi}==0}${image ~/conky/weather+clock/images/Blue.png -p 129, 241 -s 40x40}${endif}
${image ~/conky/weather+clock/images/Blank.png -p 19, 129 -s 40x40}${if_match ${execi 1 num=$(date +%-S);rem=$(( num % 2 ));if [ $rem -eq 0 ] ; then echo 0 ; else  echo 1 ; fi}==0}${image ~/conky/weather+clock/images/Blue.png -p 19, 129 -s 40x40}${endif}
${image ~/conky/weather+clock/images/Blank.png -p 240, 129 -s 40x40}${if_match ${execi 1 num=$(date +%-S);rem=$(( num % 2 ));if [ $rem -eq 0 ] ; then echo 0 ; else  echo 1 ; fi}==0}${image ~/conky/weather+clock/images/Blue.png -p 240, 129 -s 40x40}${endif}

Et, pour ceux que cela intéresse, le conkyrc qui va avec :

# — Conky settings — #

background yes

update_interval 1
total_run_times 0
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
imlib_cache_size 0

temperature_unit celcius

# — Window specifications — #

#own_window_class Conky
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

border_inner_margin 0
border_outer_margin 0

minimum_size 300 300
maximum_width 300

alignment top_left

gap_x 80
gap_y 75


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

# — Text settings — #
use_xft yes
xftfont hooge 05_53:size=6
xftalpha 0.5

default_color FFFFFF

uppercase no
use_spacer right

color0 white
color1 orange
color2 green
color3 yellow

# -- Declaration template -- #
template1 ${lua Meteo_\1 \2 \3 \4 \5 \6} # -- gestion météo --#
template2 ${lua_parse Meteo_\1 \2 \3 \4 60 \5} # -- icones météo -- \2=repertoir icones \3=position \4=taille \5=jour (pour les prévisions) #

# — Lua Load — #
lua_load ~/conky/script/meteo.lua
lua_startup_hook init ~/conky/script/meteo.cfg
lua_load ~/conky/script/clock_rings.lua
lua_draw_hook_pre clock_rings
lua_load ~/conky/script/multi_rings.lua
lua_draw_hook_post main

TEXT
${template1 Maj}
${voffset 29}${offset 120}${color3}BAT:
${voffset 17}${goto 65}${font hooge 05_53:size=12}${color1}${time %H:%M}${font}${goto 185}UPTIME:
${voffset 2}${goto 65}${time %a %d %b}${goto 185}${uptime}
${voffset 2}${goto 65}${time %Y}
${voffset -6}${goto 145}${color3}HD
${voffset 12}${alignc}${color1}$fs_free}/${fs_size}
${voffset 36}${goto 91}${cpu cpu0}%${goto 221}${memperc}%
${voffset 10}${goto 76}${color3}CPU${goto 205}MEM
${voffset 20}${goto 90}${font hooge 05_53:size=14}${color1}${template1 TempAct}°${font}${voffset -12}${goto 185}${template1  CondMeteo1se}${voffset 8}${goto 185}VENT:${template1 VentDirP} ${template1 VentForce}km/h${voffset 8}${goto 185}Pluie:${template1 QPrec}mm${font}${voffset 40}${goto 84}${template1 Jour_Temp 2}°/${template1 Nuit_Temp 2}°${goto 140}${template1 Jour_Temp 3}°/${template1 Nuit_Temp 3}°${goto 190}${template1 Jour_Temp 4}°/${template1 Nuit_Temp 4}°${voffset 7}${goto 85}${template1 Jour %a 2}${goto 140}${template1 Jour %a 3}${goto 190}${template1 Jour %a 4}
${if_match ${battery_percent BAT1}>0}${if_match ${battery_percent BAT1}<=15}${image $HOME/conky/weather+clock/images/Red.png -p 129,18 -s 40x40}${endif}${endif}
${if_match ${battery_percent BAT1}>15}${if_match ${battery_percent BAT1}<=20}${image $HOME/conky/weather+clock/images/Orange.png -p 129,18 -s 40x40}${endif}${endif}
${if_match ${battery_percent BAT1}>20}${if_match ${battery_percent BAT1}<=35}${image $HOME/conky/weather+clock/images/Yellow.png -p 129,18 -s 40x40}${endif}${endif}
${if_match ${battery_percent BAT1}>35}${if_match ${battery_percent BAT1}<=100}${image $HOME/conky/weather+clock/images/Dark_Green.png -p 129,18 -s 40x40}${endif}${endif}
${execpi 1 cat ~/conky/script/blinkingLED}
###Affichages Icônes###
${template2 IconeM ~/conky/meteo+lune/icones/base 95,150 110x66}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 62,205 70x42 2}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 115,205 70x42 3}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 168,205 70x42 4}
###Affichages Proba Pluie###
${font hooge 05_53:style=Bold:size=9}${voffset -152}${goto 143}${color red}${template1 Jour_ProbOrage 1}%
${font hooge 05_53:style=Bold:size=6}${voffset 30}${goto 92}${color red}${template1 Jour_ProbOrage 2}%${goto 146}${template1 Jour_ProbOrage 3}%${goto 200}${template1 Jour_ProbOrage 4}%

Nota : Pour un affichage correct, la police hooge 05_53 est nécessaire.

Merci de votre aide big_smile


The ship is sinking normally...

Hors ligne

#579 Le 07/02/2012, à 18:07

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Phyllinux a écrit :

...
En revanche, l'anneau des heures est toujours gris, et je ne sais pas quelles sont les valeurs à modifier pour en faire changer la couleur.

ligne N° 33 dans clock_rings.lua

De plus, quelqu'un pourrait il me dire à quoi correspondent les 11 paquets de lignes de code commençant par name='eval',

lignes 75 à 88 fond principale de l'horloge
lignes 89 à 102 point centrale de l'horloge

lignes 103 à 116 cerclage cadrant gauche
lignes 117 à 130 fond cadrant gauche
lignes 131 à 144 point centrale cadrant gauche

lignes 145 à 158 cerclage cadrant droit
lignes 159 à 172 fond cadrant droit
lignes 173 à 186 point centrale cadrant droit

lignes 187 à 200 cerclage cadrant haut
lignes 201 à 214 fond cadrant haut
lignes 215 à 228 point centrale cadrant haut

Dans ce script, je ne vois pas quelles sont les valeurs à modifier pour changer les couleurs des cercles, qui sont en blanc.
J'ai réussi à changer les couleurs des aiguilles et des graduations, mais pas celui des cercles.

les cercles en blanc sont ce que je nomme cerclage, pour changer leurs couleurs il faut modifier bg_colour

amuse toi bien wink

Hors ligne

#580 Le 07/02/2012, à 20:18

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ Didier-T :

Merci, grâce à tes explications, je progresse.
Il ne me reste plus que le cercle des heures, qui est toujours en gris.
J'ai tout essayé, mais je ne trouve pas quelle est la ligne qui définit la couleurs de ce cercle, étant donné que dans le script lua, il n'y a pas de paquet de ligne de codes spécifique à ce cercle des heures...

Voici le résultat, en attendant que je trouve comment régler ce dernier point :

slection003.th.png

Uploaded with ImageShack.us

Merci encore.
Je continue mes recherches pour transformer le gris en vert !


The ship is sinking normally...

Hors ligne

#581 Le 07/02/2012, à 21:02

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :
Phyllinux a écrit :

...
En revanche, l'anneau des heures est toujours gris, et je ne sais pas quelles sont les valeurs à modifier pour en faire changer la couleur.

ligne N° 33 dans clock_rings.lua

...

Bah alors, dure journée wink

Hors ligne

#582 Le 08/02/2012, à 11:43

Phyllinux

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :
Didier-T a écrit :
Phyllinux a écrit :

...
En revanche, l'anneau des heures est toujours gris, et je ne sais pas quelles sont les valeurs à modifier pour en faire changer la couleur.

ligne N° 33 dans clock_rings.lua

...

Bah alors, dure journée wink

Promis, moi aussi, demain, j'arrête la semoule !!! yikes

Voici donc le résultat final :

slection004.th.png


The ship is sinking normally...

Hors ligne

#583 Le 08/02/2012, à 14:40

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

carpediem a écrit :

@ragamatrix

Je ne voie pas de problème à première vue, as-tu essayés un envoie pour voir s'il s"affiche dans le conky ?

@Phyllinux

Pas mal ton conky, mais un peu chargé à mon goût.

J'ai fais un test avec un envoi et ça marche wink Merci pour le script
Bonne journée

Hors ligne

#584 Le 08/02/2012, à 14:43

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Salut,
j'essaie de lancer une pendule avec un script lua, mais celui-ci me renvoi l'erreur suivante :

 Conky: llua_do_call: function conky_main_rings execution failed: /home/ragamatrix/conky/script/horloge_ring.lua:90: attempt to index global 'conky_window' (a nil value)
 

.
J'ai regardé à cette ligne 90 mais je ne sais pas ce que je dois modifier ?
roll

Hors ligne

#585 Le 08/02/2012, à 15:44

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Encore un truc que je ne comprends pas :
Je lance un script pour lancer 3 conkys au démarrage :

#!/bin/bash
sleep 5
killall animate
killall conky
cd
sleep 2
conky -d -c /home/ragamatrix/.conky/conkyrc-gaim
sleep 2
conky -d -c /home/ragamatrix/conky/conkyrc6_meteo_lua
sleep 2
conky -d -c /home/ragamatrix/.conky/conkyrc-pression
#sleep 5
#conky -d -c /home/ragamatrix/conky/conkyrc_horloge_lua
#sleep 5
#conky -d -c /home/ragamatrix/conky/
exit 0  

Ils apparaissent tous mais au premier plan sur mon écran, donc lorsque j'ouvre une fenêtre (mozzilla ou google chrome ou nautilus) elle se trouve derrière conky, c'est un peu génant et je n'arrive pas à corriger ça...:(

Hors ligne

#586 Le 08/02/2012, à 16:39

jpdipsy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

ragamatrix a écrit :

Encore un truc que je ne comprends pas :
Je lance un script pour lancer 3 conkys au démarrage :

#!/bin/bash
sleep 5
killall animate
killall conky
cd
sleep 2
conky -d -c /home/ragamatrix/.conky/conkyrc-gaim
sleep 2
conky -d -c /home/ragamatrix/conky/conkyrc6_meteo_lua
sleep 2
conky -d -c /home/ragamatrix/.conky/conkyrc-pression
#sleep 5
#conky -d -c /home/ragamatrix/conky/conkyrc_horloge_lua
#sleep 5
#conky -d -c /home/ragamatrix/conky/
exit 0  

Ils apparaissent tous mais au premier plan sur mon écran, donc lorsque j'ouvre une fenêtre (mozzilla ou google chrome ou nautilus) elle se trouve derrière conky, c'est un peu génant et je n'arrive pas à corriger ça...:(

Dans tes config est-ce que tu as inclu below dans own_window_hints

ex :
own_window_type override
    own_window_transparent yes
    own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

et pour lancer tes scripts à la place de sleep tu peux utiliser l'option pause de conky
conky -d -p 5 -c /home/ragamatrix/.conky/conkyrc-gaim
en augmentant le nombre de secondes pour voir.
Ou même essaye carrément avec 20 s de pause (je sais c'est dur mais sur une autre machine j'ai besion de cette attente pour que tout soit en place avant conky) et en décrementant petit à petit.

Hors ligne

#587 Le 08/02/2012, à 17:16

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@jpdipsy

J'ai fais ça :

 #!/bin/bash
sleep 5
killall animate
killall conky
cd
#sleep 2
conky -d -p 20 -c /home/ragamatrix/.conky/conkyrc-gaim
#sleep 2
conky -d -p 15 -c /home/ragamatrix/conky/conkyrc6_meteo_lua
#sleep 2
conky -d -p 10 -c /home/ragamatrix/.conky/conkyrc-pression
#sleep 5
#conky -d -c /home/ragamatrix/conky/conkyrc_horloge_lua
#sleep 5
#conky -d -c /home/ragamatrix/conky/
exit 0 

et ça marche nickel, en Suisse on n'est pas trop préssés big_smile
Marvoulousse ! Merci

Dernière modification par ragamatrix (Le 08/02/2012, à 17:23)

Hors ligne

#588 Le 09/02/2012, à 10:01

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@ tous
Salut !
Savez-vous comment faire pour afficher les dixièmes de secondes sur une horloge, pour les faire défiler un peu comme sur un chronomètre ?

Hors ligne

#589 Le 09/02/2012, à 10:12

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

ragamatrix a écrit :

@ tous
Salut !
Savez-vous comment faire pour afficher les dixièmes de secondes sur une horloge, pour les faire défiler un peu comme sur un chronomètre ?

ça peut se faire, mais tu vas consommer du processeur comme un dingue, car tu devras mettre ton conky à jours tous les 10ieme de seconde.
commence déjà par regarder ce que sa donne en rafraîchissant tous les 0.1 seconde sans géré l’affichage. Si après tu veux encore le faire je me pencherais sur la question, an espérant que lua le permette en natif, si non sa vas êtres un peut lourd.

Hors ligne

#590 Le 09/02/2012, à 11:26

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Didier-T a écrit :
ragamatrix a écrit :

@ tous
Salut !
Savez-vous comment faire pour afficher les dixièmes de secondes sur une horloge, pour les faire défiler un peu comme sur un chronomètre ?

ça peut se faire, mais tu vas consommer du processeur comme un dingue, car tu devras mettre ton conky à jours tous les 10ieme de seconde.
commence déjà par regarder ce que sa donne en rafraîchissant tous les 0.1 seconde sans géré l’affichage. Si après tu veux encore le faire je me pencherais sur la question, an espérant que lua le permette en natif, si non sa vas êtres un peut lourd.

Ok, je n'avais pas pensé à tous ces paramètres, merci de t'être penché sur la question.
Pourtant une horloge qui tourne normalement doit faire appelle à ces calculs même si on ne les voient pas ?
Apparemment c'est conky qui ne peut ignorer cette durée de rafraîchissement...
++

Hors ligne

#591 Le 09/02/2012, à 12:38

jpdipsy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

ragamatrix a écrit :
Didier-T a écrit :
ragamatrix a écrit :

@ tous
Salut !
Savez-vous comment faire pour afficher les dixièmes de secondes sur une horloge, pour les faire défiler un peu comme sur un chronomètre ?

ça peut se faire, mais tu vas consommer du processeur comme un dingue, car tu devras mettre ton conky à jours tous les 10ieme de seconde.
commence déjà par regarder ce que sa donne en rafraîchissant tous les 0.1 seconde sans géré l’affichage. Si après tu veux encore le faire je me pencherais sur la question, an espérant que lua le permette en natif, si non sa vas êtres un peut lourd.

Ok, je n'avais pas pensé à tous ces paramètres, merci de t'être penché sur la question.
Pourtant une horloge qui tourne normalement doit faire appelle à ces calculs même si on ne les voient pas ?
Apparemment c'est conky qui ne peut ignorer cette durée de rafraîchissement...
++

J'ai déja essayé proc à 100% en permanence.Calor Calor cool cool

Hors ligne

#592 Le 09/02/2012, à 17:35

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

jpdipsy a écrit :
ragamatrix a écrit :
Didier-T a écrit :

ça peut se faire, mais tu vas consommer du processeur comme un dingue, car tu devras mettre ton conky à jours tous les 10ieme de seconde.
commence déjà par regarder ce que sa donne en rafraîchissant tous les 0.1 seconde sans géré l’affichage. Si après tu veux encore le faire je me pencherais sur la question, an espérant que lua le permette en natif, si non sa vas êtres un peut lourd.

Ok, je n'avais pas pensé à tous ces paramètres, merci de t'être penché sur la question.
Pourtant une horloge qui tourne normalement doit faire appelle à ces calculs même si on ne les voient pas ?
Apparemment c'est conky qui ne peut ignorer cette durée de rafraîchissement...
++

J'ai déja essayé proc à 100% en permanence.Calor Calor cool cool

je pensais pas autant, mais je me doutais bien que sa poserais problème, du moins avec un conky.

Hors ligne

#593 Le 09/02/2012, à 17:36

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

@tous
Je souhaiterais mettre ce genre de carte dans mon conky...? Est-ce réalisable ? (elle se réactualise comme une carte météo, mais pour les séismes)
seismes
merci
seismes

Dernière modification par ragamatrix (Le 09/02/2012, à 17:46)

Hors ligne

#594 Le 09/02/2012, à 19:42

Swiss_Knight

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Oui c'est réalisable.

personnellement j'ai fait pareil pour une image radar des précipitations avec un petit script qui va me télécharger l'image (wget) et je demande à Conky d'exécuter ce script toutes les 10min et d'afficher l'image téléchargée avec la commande ${image

c'est peut-être pas la bonne méthode après, mais ça a l'air de fonctionner pas trop mal.


xuniL

Hors ligne

#595 Le 10/02/2012, à 10:44

ragamatrix

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

Swiss_Knight a écrit :

Oui c'est réalisable.

personnellement j'ai fait pareil pour une image radar des précipitations avec un petit script qui va me télécharger l'image (wget) et je demande à Conky d'exécuter ce script toutes les 10min et d'afficher l'image téléchargée avec la commande ${image

c'est peut-être pas la bonne méthode après, mais ça a l'air de fonctionner pas trop mal.

J'ai le script imagesat.pl qui fonctionne très bien et du coup en modifiant les dimensions de l'image téléchargée, je peux choisir n'importe laquelle.Par exemple :
Dans le conkyrc :

 ${execpi 1200 perl ~/conky/script/imagesat.pl -s 767x600+0+0 -i http://www.meteosuisse.admin.ch/web/fr/meteo/temps_actuel/image_satellite.Par.0012.Data.img_9.gif}${image /home/ragamatrix/image.jpg -p -5,670 -s 400x313} 

radar

Dernière modification par ragamatrix (Le 10/02/2012, à 10:44)

Hors ligne

#596 Le 10/02/2012, à 19:32

sickboy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

salut à tous ! j'aurais besoin de votre aide.

j'ai fait une réinstallation de mon systeme, javais sauvegardé mon dossier conky, et quand je l'ai remis tout mes conky etait ok sauf le conky meteo.

je n'ai plus aucune infos dans les fichiers "curre_cond" "jour0" "jour1" etc... et "messages" , les fichiers sont present au lancement du conky mais sont vides. Et les images J1.png J2.png etc... disparaissent à chaque lancement.
ce qui fait que je n'ai rien qui s'affiche à part le texte du script. Ni images ni infos meteo.
pourtant je n'ai rien changé à la config des fichiers "afmeteo" et "meteo" ni à l'emplacement des dossiers etc...

voici mon script au cas ou :

         TEXT
#######################################
${voffset 17}${offset 15}${font Santana:weight=bold:size=13}${color orange}Frohmuhl${execpi 1800 ~/conky/meteo/meteo}
${font Santana:size=10}${color whitesmoke}${offset 15}Conditions : ${color orange}${execpi 600 sed -n '1p' ~/conky/meteo/messages}${color orange}
${offset 18}${execpi 600 sed -n '2p' ~/conky/meteo/messages}
${voffset 8}${font Santana:size=10}${color whitesmoke}${offset 15}Humidité : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo taux_humidite cc}
${voffset 3}${font Santana:size=10}${color whitesmoke}${offset 15}Sens vent : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo direction_vent cc}
${voffset 3}${font Santana:size=10}${color whitesmoke}${offset 15}Vitesse vent : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo vitesse_vent cc}
${voffset 23}${font Santana:size=10}${color whitesmoke}${offset 15}Pression : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo pression cc} - ${execpi 1800 ~/conky/meteo/afmeteo tend_pression cc}
${goto 190}${voffset -144}${font Santana:size=32}${color 5C5C5C}${execpi 1800 ~/conky/meteo/afmeteo temp cc}
#######################################
${voffset 108}${font Santana:size=8}${color orange}${goto 25}${execpi 1800 ~/conky/meteo/afmeteo temp 1 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 1 soir}${font Santana:size=8}${color orange}${goto 75}${execpi 1800 ~/conky/meteo/afmeteo temp 2 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 2 soir}${font Santana:size=7}${color orange}${goto 122}${execpi 1800 ~/conky/meteo/afmeteo temp 3 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 3 soir}${font Santana:size=8}${color orange}${goto 170}${execpi 1800 ~/conky/meteo/afmeteo temp 4 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 4 soir}${font Santana:size=8}${color orange}${goto 214}${execpi 1800 ~/conky/meteo/afmeteo temp 5 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 5 soir}
${font Santana:size=8}${color AFAFAF}${goto 26}${execpi 1800 ~/conky/meteo/afmeteo jour 1}${font Santana:size=8}${goto 76}${execpi 1800 ~/conky/meteo/afmeteo jour 2}${font Santana:size=8}${goto 125}${execpi 1800 ~/conky/meteo/afmeteo jour 3}${font Santana:size=8}${goto 172}${execpi 1800 ~/conky/meteo/afmeteo jour 4}${font Santana:size=8}${goto 213}${execpi 1800 ~/conky/meteo/afmeteo jour 5}
#######################################
${image ~/conky/weather+clock/images/base4.png -p -12,-12 -s 290x285}
${image ~/conky/meteo/icones/cc.png -p 120,65 -s 135x81}
${image ~/conky/meteo/icones/J1jour.png -p 10,170 -s 50x30}
${image ~/conky/meteo/icones/J2jour.png -p 60,170 -s 50x30}
${image ~/conky/meteo/icones/J3jour.png -p 108,170 -s 50x30}
${image ~/conky/meteo/icones/J4jour.png -p 155,170 -s 50x30}
${image ~/conky/meteo/icones/J5jour.png -p 200,170 -s 50x30}

afmeteo :

#!/bin/bash
# Créé par Didier-T (forum.ubuntu-fr.org)
# utilisation
# afmeteo.sh 'info à afficher' 'jour' 'moment'
#<jour> soit maintenant = cc soit un nombre de 0 à 14 (0 prévision pour aujourd'hui)
#<moment> jour ou soir (uniquement pour les prévisions)

DirShell="$HOME/conky/meteo"

meteo() {
case $3 in
    [Jj]our)
        m=0
    ;;
    [Ss]oir)
        m=1
    ;;
    *)
        m=0
    ;;
esac

p=$(($1+$(($m*21))))

echo $(sed -n "$(($p))p" ${DirShell}/jour$2)

}

case $2 in
    cc)
        case $1 in
            [Tt]emp) affichage=$(sed -n "2p" ${DirShell}/curr_cond)"°" ;;
            [Mm]eteo) affichage=$(sed -n "3p" ${DirShell}/curr_cond) ;;
            [Tt]emp_res) affichage=$(sed -n "4p" ${DirShell}/curr_cond)"°" ;;
            [Dd]irection_[Vv]ent) affichage=$(sed -n "5p" ${DirShell}/curr_cond) ;;
            [Vv]itesse_[Vv]ent) affichage=$(sed -n "6p" ${DirShell}/curr_cond)"" ;;
            [Tt]aux_[Hh]umidite) affichage=$(sed -n "7p" ${DirShell}/curr_cond) ;;
            [Pp]_[Rr]osee) affichage=$(sed -n "8p" ${DirShell}/curr_cond)"°C" ;;
            [Pp]ression) affichage=$(sed -n "9p" ${DirShell}/curr_cond) ;;
            [Tt]end_[Pp]ression) affichage=$(sed -n "10p" ${DirShell}/curr_cond) ;;
            [Vv]isibilite) affichage=$(sed -n "11p" ${DirShell}/curr_cond) ;;
            [Ll]ever_[Ss]oleil) affichage=$(sed -n "12p" ${DirShell}/curr_cond) ;;
            [Cc]oucher_[Ss]oleil) affichage=$(sed -n "13p" ${DirShell}/curr_cond) ;;
            *)
                affichage="erreur"
            ;;
        esac
    ;;
    *)
        case $1 in
            [Jj]our) affichage=$(meteo 1 $2) ;;
            [Mm]eteo) affichage=$(meteo 3 $2 $3) ;;
            [Tt]emp) affichage=$(meteo 5 $2 $3)"°" ;;
            [Tt]emp_res) affichage=$(meteo 7 $2 $3)"°C" ;;
            [Dd]irection_[Vv]ent) affichage=$(meteo 9 $2 $3) ;;
            [Vv]itesse_[Vv]ent) affichage=$(meteo 10 $2 $3)"km/h" ;;
            [Pp]rob_[Oo]rage) affichage=$(meteo 12 $2 $3) ;;
            [Qq]_[Pp]recipitation) affichage=$(meteo 14 $2 $3)"mm" ;;
            [Qq]_[Pp]luie) affichage=$(meteo 16 $2 $3)"mm" ;;
            [Qq]_[Nn]eige) affichage=$(meteo 18 $2 $3)"mm" ;;
            [Dd]uree_[Pp]recipitation) affichage=$(meteo 20 $2 $3) ;;
            [Dd]uree_[Pp]luie) affichage=$(meteo 22 $2 $3) ;;
            [Ll]ever_[Ss]oleil) affichage=$(meteo 45 $2) ;;
            [Cc]oucher_[Ss]oleil) affichage=$(meteo 47 $2) ;;
            [Ll]ever_[Ll]une) affichage=$(meteo 49 $2) ;;
            [Cc]oucher_[Ll]une) affichage=$(meteo 51 $2) ;;
            [Dd]uree_[Jj]our) affichage=$(meteo 53 $2)" Heures" ;;
            [Dd]uree_[Nn]uit) affichage=$(meteo 55 $2)" Heures" ;;
            uv|UV|Uv|uV) affichage=$(meteo 57 $2) ;;
            *)
                affichage="erreur"
            ;;
        esac
    ;;
esac
# retour information

echo $affichage

exit 0

meteo :

#!/bin/bash

#Repertoir de travail
DirShell="$HOME/conky/meteo"

#Copier votre adresse Accuweather ici
address="http://www.accuweather.com/fr/fr/alsace/frohmuhl/quick-look.aspx?cityid=141896"

#Prévision sur n jour (de 1 à 15)
periode=7

#function: test_image
test_image () {
    case $1 in
        1) echo 1su ;;
        2) echo 2msu ;;
        3) echo 3psu ;;
        4) echo 4ic ;;
        5) echo 5h ;;
        6) echo 6mc ;;
        7) echo 7c ;;
        8) echo 8d ;;
        11) echo 9f ;;
        12) echo 10s ;;
        13) echo 11mcs ;;
        14) echo 12psus ;;
        15) echo 13t ;;
        16) echo 14mct ;;
        17) echo 15psut ;;
        18) echo 16r ;;
        19) echo 17fl ;;
        20) echo 18mcfl ;;
        21) echo 19psfl ;;
        22) echo 20sn ;;
        23) echo 21mcsn ;;
        24) echo 22i ;;
        25) echo 23sl ;;
        26) echo 24fr ;;
        29) echo 25rsn ;;
        30) echo 27ho ;;
        31) echo 28co ;;
        32) echo 26w ;;
        33) echo 29cl ;;
        34) echo 31mcl ;;
        35) echo 32pc ;;
        36) echo 33ic ;;
        37) echo 34h ;;
        38) echo 35mc ;;
        39) echo 36pcs ;;
        40) echo 37mcs ;;
        41) echo 38pct ;;
        42) echo 39mct ;;
        43) echo 40mcfl ;;
        44) echo 41mcsn ;;
    esac
} 

meteo_a_n_jours() {

for (( x=1; x<=$1; x+=1 ))
    do
        wget --load-cookies ${DirShell}/cookie -O ${DirShell}/details$(($x-1)) ${addr_week}"details${x}.aspx"
    done

#Formatage détails journaliers

for (( x=0; x<=$(($1-1)); x+=1 ))
    do
        egrep -i 'lblDetails|imgDayIcon|lblDayText|lblHigh|lblHighValue|lblRealFeel|lblRealFeelValue|lblWinds|lblWindsValue|lblTStormProb|lblTStormProbValue|lblPrecip|lblPrecipValue|lblRain|lblRainValue|lblSnow|lblSnowValue|lblHoursPrecip|lblHoursPrecipValue|lblHoursOfRain|lblHoursOfRainValue|lblHoursOfRainValue|imgNightIcon|lblNightText|lblLow|lblLowValue|lblRealFeelN|lblRealFeelNValue|lblWindsN|lblWindsNValue|lblTStormProbN|lblTStormProbNValue|lblPrecipN|lblPrecipNValue|lblRainN|lblRainNValue|lblSnowN|lblSnowNValue|lblHoursPrecipN|lblHoursPrecipNValue|lblHoursOfRainN|lblHoursOfRainNValue|lblSunrise|lblSunset|lblMoonrise|lblMoonset|lblDaylight|lblDarkness' ${DirShell}/details$x > ${DirShell}/jour$x
        egrep -i 'lblMaxUV|lblMaxUVValue' ${DirShell}/details$x >> ${DirShell}/jour$x
        sed -i 's/\(^.*blue\/\|^.*pour \|_int.jpg.*$\|^.*">\|<\/.*$\|&deg;C\)//g' ${DirShell}/jour$x
        sed -i -e 's/: /\n/g' -e 's/W/O/g' -e '1s/ .*$//' ${DirShell}/jour$x
        sed -i -e '1s/^./\u&/' -e '1s/./\n/4' ${DirShell}/jour$x
        sed -i '2d' ${DirShell}/jour$x
        for (( i=2; i<=22; i+=20 ))
            do
                image_raw=$(sed -n "${i}"p ${DirShell}/jour$x)
                sed -i ${i}s/$image_raw/$(test_image $image_raw)/ ${DirShell}/jour$x
            done
        cp ${DirShell}/icones/base/$(sed -n 2p ${DirShell}/jour$x).png ${DirShell}/icones/J${x}jour.png
        cp ${DirShell}/icones/base/$(sed -n 22p ${DirShell}/jour$x).png ${DirShell}/icones/J${x}soir.png

        for (( i=29; i>=9; i-=20 ))
            do
                sed -i $i's/ /\n/' ${DirShell}/jour$x
            done
        def_vent $x
        sed -n 3p ${DirShell}/jour$x >> ${DirShell}/messages
        sed -n 24p ${DirShell}/jour$x >> ${DirShell}/messages
    done

rm ${DirShell}/details*

}

def_vent() {

case $1 in
    curr)
        dvent=$(sed -n "5p" ${DirShell}/curr_cond)
        fvent=$(sed -n "6p" ${DirShell}/curr_cond)
    
        v=$(direction_vent $dvent)
    
        cp $(icone_vent $v $fvent) ${DirShell}/icones/vcc.png
    ;;
    *)
        for (( i1=0; i1<=1; i1+=1 ))
        do
            n=$(($(($i1*21))+9))
            dvent=$(sed -n "$(($n))p" ${DirShell}/jour$1)
            fvent=$(sed -n "$(($n+1))p" ${DirShell}/jour$1)
    
            v=$(direction_vent $dvent)
    
            if (( $i1==0 )); then
                moment="jour"
            else
                moment="soir"
            fi
            cp $(icone_vent $v $fvent) ${DirShell}/icones/v$1$moment.png
        done
    ;;
esac

}

direction_vent() {

case $1 in
    Variable) echo 1 ;;
    N) echo 10 ;;
    NNE) echo 11 ;;
    NE) echo 12 ;;
    ENE) echo 13 ;;
    E) echo 14 ;;
    ESE) echo 15 ;;
    SE) echo 16 ;;
    SSE) echo 17 ;;
    S) echo 2 ;;
    SSO) echo 3 ;;
    SO) echo 4 ;;
    OSO) echo 5 ;;
    O) echo 6 ;;
    ONO) echo 7 ;;
    NO) echo 8 ;;
    NNO) echo 9 ;;
    *) echo 0 ;;
esac

}

icone_vent() {

if (( $2 <= 20 )); then
    n=$1
elif (( $2 <= 35 )); then
    n=$(($1+17))
elif (( $2 <= 50 )); then
    n=$(($1+34))
elif (( $2 >= 51 )); then
    n=$(($1+51))
fi

if (( $n <= 9 )); then 
    n="0$n"
fi

echo "${DirShell}/icones/base/vent/$n.png"

}

decoupage() {

for (( i=1; i<=$(($1*4)); i++))
    do
        no=$(sed -n ${i}p ${DirShell}/messages|wc -m)
        if (( no<=21 )); then
            sed -i $i"s/$/\n/" ${DirShell}/messages
            i=$((i+1))
        elif (( no>21 )); then
            nbesp=$(awk '{ x=0; x+=gsub("\\ ",""); print x }' ${DirShell}/messages | sed -n "$(($i))p")
            pos=$(($(($nbesp/2))+1))
            sed -i $i"s/ /\n/$pos" ${DirShell}/messages
            i=$((i+1))
        fi
    done

}

#Fin des fonctions début du script

ping -c 2 www.accuweather.com>>/dev/null

if [ $? -eq  0 ]
then

    rm ${DirShell}/icones/*.png
    rm ${DirShell}/jour*
    rm ${DirShell}/messages

    wget --save-cookies ${DirShell}/cookie -O ${DirShell}/curr_cond_raw $address
    addr_week=$(echo $address|sed 's/quick.*$//')

    #Formatage condition acctuelle

    egrep -i 'CurrentTemp|CurrentText|RealFeelValue|WindsValue|HumidityValue|DewPointValue|PressureValue|PressureTenValue|VisibilityValue|SunriseValue|SunsetValue|imgCurConCondition' ${DirShell}/curr_cond_raw > ${DirShell}/curr_cond
    rm ${DirShell}/curr_cond_raw
    sed -i -e 's/\(^.*blue\/\|_int.*$\|^.*">\|<\/span>.*$\|&deg;C\)//g' -e 's/W/O/g' ${DirShell}/curr_cond

    curr_cond_raw_image=$(sed -n 1p ${DirShell}/curr_cond)
    sed -i 1s/$curr_cond_raw_image/$(test_image $curr_cond_raw_image)/ ${DirShell}/curr_cond
    cp ${DirShell}/icones/base/$(sed -n 1p ${DirShell}/curr_cond).png ${DirShell}/icones/cc.png
    sed -i 's/Unavailable/N\/A/g' ${DirShell}/curr_cond
    sed -i '5s/ /\n/' ${DirShell}/curr_cond
    sed -i '6s/ .*$//' ${DirShell}/curr_cond
    def_vent curr
    
    #-----------------------------------------
    
    meteo_a_n_jours $periode
    decoupage $periode
    
    rm ${DirShell}/cookie
    
fi

Xubuntu Voyager 11.10 / Linux Mint Debian Edition
AMD Phenom II x4 945
Asus Nvidia GeForce GT 440
Asus Xonar Essence STX

Hors ligne

#597 Le 10/02/2012, à 19:35

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

sickboy a écrit :

salut à tous ! j'aurais besoin de votre aide.

j'ai fait une réinstallation de mon systeme, javais sauvegardé mon dossier conky, et quand je l'ai remis tout mes conky etait ok sauf le conky meteo.

je n'ai plus aucune infos dans les fichiers "curre_cond" "jour0" "jour1" etc... et "messages" , les fichiers sont present au lancement du conky mais sont vides. Et les images J1.png J2.png etc... disparaissent à chaque lancement.
ce qui fait que je n'ai rien qui s'affiche à part le texte du script. Ni images ni infos meteo.
pourtant je n'ai rien changé à la config des fichiers "afmeteo" et "meteo" ni à l'emplacement des dossiers etc...

voici mon script au cas ou :

         TEXT
#######################################
${voffset 17}${offset 15}${font Santana:weight=bold:size=13}${color orange}Frohmuhl${execpi 1800 ~/conky/meteo/meteo}
${font Santana:size=10}${color whitesmoke}${offset 15}Conditions : ${color orange}${execpi 600 sed -n '1p' ~/conky/meteo/messages}${color orange}
${offset 18}${execpi 600 sed -n '2p' ~/conky/meteo/messages}
${voffset 8}${font Santana:size=10}${color whitesmoke}${offset 15}Humidité : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo taux_humidite cc}
${voffset 3}${font Santana:size=10}${color whitesmoke}${offset 15}Sens vent : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo direction_vent cc}
${voffset 3}${font Santana:size=10}${color whitesmoke}${offset 15}Vitesse vent : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo vitesse_vent cc}
${voffset 23}${font Santana:size=10}${color whitesmoke}${offset 15}Pression : ${color orange}${execpi 1800 ~/conky/meteo/afmeteo pression cc} - ${execpi 1800 ~/conky/meteo/afmeteo tend_pression cc}
${goto 190}${voffset -144}${font Santana:size=32}${color 5C5C5C}${execpi 1800 ~/conky/meteo/afmeteo temp cc}
#######################################
${voffset 108}${font Santana:size=8}${color orange}${goto 25}${execpi 1800 ~/conky/meteo/afmeteo temp 1 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 1 soir}${font Santana:size=8}${color orange}${goto 75}${execpi 1800 ~/conky/meteo/afmeteo temp 2 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 2 soir}${font Santana:size=7}${color orange}${goto 122}${execpi 1800 ~/conky/meteo/afmeteo temp 3 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 3 soir}${font Santana:size=8}${color orange}${goto 170}${execpi 1800 ~/conky/meteo/afmeteo temp 4 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 4 soir}${font Santana:size=8}${color orange}${goto 214}${execpi 1800 ~/conky/meteo/afmeteo temp 5 jour}${color white}/${execpi 1800 ~/conky/meteo/afmeteo temp 5 soir}
${font Santana:size=8}${color AFAFAF}${goto 26}${execpi 1800 ~/conky/meteo/afmeteo jour 1}${font Santana:size=8}${goto 76}${execpi 1800 ~/conky/meteo/afmeteo jour 2}${font Santana:size=8}${goto 125}${execpi 1800 ~/conky/meteo/afmeteo jour 3}${font Santana:size=8}${goto 172}${execpi 1800 ~/conky/meteo/afmeteo jour 4}${font Santana:size=8}${goto 213}${execpi 1800 ~/conky/meteo/afmeteo jour 5}
#######################################
${image ~/conky/weather+clock/images/base4.png -p -12,-12 -s 290x285}
${image ~/conky/meteo/icones/cc.png -p 120,65 -s 135x81}
${image ~/conky/meteo/icones/J1jour.png -p 10,170 -s 50x30}
${image ~/conky/meteo/icones/J2jour.png -p 60,170 -s 50x30}
${image ~/conky/meteo/icones/J3jour.png -p 108,170 -s 50x30}
${image ~/conky/meteo/icones/J4jour.png -p 155,170 -s 50x30}
${image ~/conky/meteo/icones/J5jour.png -p 200,170 -s 50x30}

afmeteo :

#!/bin/bash
# Créé par Didier-T (forum.ubuntu-fr.org)
# utilisation
# afmeteo.sh 'info à afficher' 'jour' 'moment'
#<jour> soit maintenant = cc soit un nombre de 0 à 14 (0 prévision pour aujourd'hui)
#<moment> jour ou soir (uniquement pour les prévisions)

DirShell="$HOME/conky/meteo"

meteo() {
case $3 in
    [Jj]our)
        m=0
    ;;
    [Ss]oir)
        m=1
    ;;
    *)
        m=0
    ;;
esac

p=$(($1+$(($m*21))))

echo $(sed -n "$(($p))p" ${DirShell}/jour$2)

}

case $2 in
    cc)
        case $1 in
            [Tt]emp) affichage=$(sed -n "2p" ${DirShell}/curr_cond)"°" ;;
            [Mm]eteo) affichage=$(sed -n "3p" ${DirShell}/curr_cond) ;;
            [Tt]emp_res) affichage=$(sed -n "4p" ${DirShell}/curr_cond)"°" ;;
            [Dd]irection_[Vv]ent) affichage=$(sed -n "5p" ${DirShell}/curr_cond) ;;
            [Vv]itesse_[Vv]ent) affichage=$(sed -n "6p" ${DirShell}/curr_cond)"" ;;
            [Tt]aux_[Hh]umidite) affichage=$(sed -n "7p" ${DirShell}/curr_cond) ;;
            [Pp]_[Rr]osee) affichage=$(sed -n "8p" ${DirShell}/curr_cond)"°C" ;;
            [Pp]ression) affichage=$(sed -n "9p" ${DirShell}/curr_cond) ;;
            [Tt]end_[Pp]ression) affichage=$(sed -n "10p" ${DirShell}/curr_cond) ;;
            [Vv]isibilite) affichage=$(sed -n "11p" ${DirShell}/curr_cond) ;;
            [Ll]ever_[Ss]oleil) affichage=$(sed -n "12p" ${DirShell}/curr_cond) ;;
            [Cc]oucher_[Ss]oleil) affichage=$(sed -n "13p" ${DirShell}/curr_cond) ;;
            *)
                affichage="erreur"
            ;;
        esac
    ;;
    *)
        case $1 in
            [Jj]our) affichage=$(meteo 1 $2) ;;
            [Mm]eteo) affichage=$(meteo 3 $2 $3) ;;
            [Tt]emp) affichage=$(meteo 5 $2 $3)"°" ;;
            [Tt]emp_res) affichage=$(meteo 7 $2 $3)"°C" ;;
            [Dd]irection_[Vv]ent) affichage=$(meteo 9 $2 $3) ;;
            [Vv]itesse_[Vv]ent) affichage=$(meteo 10 $2 $3)"km/h" ;;
            [Pp]rob_[Oo]rage) affichage=$(meteo 12 $2 $3) ;;
            [Qq]_[Pp]recipitation) affichage=$(meteo 14 $2 $3)"mm" ;;
            [Qq]_[Pp]luie) affichage=$(meteo 16 $2 $3)"mm" ;;
            [Qq]_[Nn]eige) affichage=$(meteo 18 $2 $3)"mm" ;;
            [Dd]uree_[Pp]recipitation) affichage=$(meteo 20 $2 $3) ;;
            [Dd]uree_[Pp]luie) affichage=$(meteo 22 $2 $3) ;;
            [Ll]ever_[Ss]oleil) affichage=$(meteo 45 $2) ;;
            [Cc]oucher_[Ss]oleil) affichage=$(meteo 47 $2) ;;
            [Ll]ever_[Ll]une) affichage=$(meteo 49 $2) ;;
            [Cc]oucher_[Ll]une) affichage=$(meteo 51 $2) ;;
            [Dd]uree_[Jj]our) affichage=$(meteo 53 $2)" Heures" ;;
            [Dd]uree_[Nn]uit) affichage=$(meteo 55 $2)" Heures" ;;
            uv|UV|Uv|uV) affichage=$(meteo 57 $2) ;;
            *)
                affichage="erreur"
            ;;
        esac
    ;;
esac
# retour information

echo $affichage

exit 0

meteo :

#!/bin/bash

#Repertoir de travail
DirShell="$HOME/conky/meteo"

#Copier votre adresse Accuweather ici
address="http://www.accuweather.com/fr/fr/alsace/frohmuhl/quick-look.aspx?cityid=141896"

#Prévision sur n jour (de 1 à 15)
periode=7

#function: test_image
test_image () {
    case $1 in
        1) echo 1su ;;
        2) echo 2msu ;;
        3) echo 3psu ;;
        4) echo 4ic ;;
        5) echo 5h ;;
        6) echo 6mc ;;
        7) echo 7c ;;
        8) echo 8d ;;
        11) echo 9f ;;
        12) echo 10s ;;
        13) echo 11mcs ;;
        14) echo 12psus ;;
        15) echo 13t ;;
        16) echo 14mct ;;
        17) echo 15psut ;;
        18) echo 16r ;;
        19) echo 17fl ;;
        20) echo 18mcfl ;;
        21) echo 19psfl ;;
        22) echo 20sn ;;
        23) echo 21mcsn ;;
        24) echo 22i ;;
        25) echo 23sl ;;
        26) echo 24fr ;;
        29) echo 25rsn ;;
        30) echo 27ho ;;
        31) echo 28co ;;
        32) echo 26w ;;
        33) echo 29cl ;;
        34) echo 31mcl ;;
        35) echo 32pc ;;
        36) echo 33ic ;;
        37) echo 34h ;;
        38) echo 35mc ;;
        39) echo 36pcs ;;
        40) echo 37mcs ;;
        41) echo 38pct ;;
        42) echo 39mct ;;
        43) echo 40mcfl ;;
        44) echo 41mcsn ;;
    esac
} 

meteo_a_n_jours() {

for (( x=1; x<=$1; x+=1 ))
    do
        wget --load-cookies ${DirShell}/cookie -O ${DirShell}/details$(($x-1)) ${addr_week}"details${x}.aspx"
    done

#Formatage détails journaliers

for (( x=0; x<=$(($1-1)); x+=1 ))
    do
        egrep -i 'lblDetails|imgDayIcon|lblDayText|lblHigh|lblHighValue|lblRealFeel|lblRealFeelValue|lblWinds|lblWindsValue|lblTStormProb|lblTStormProbValue|lblPrecip|lblPrecipValue|lblRain|lblRainValue|lblSnow|lblSnowValue|lblHoursPrecip|lblHoursPrecipValue|lblHoursOfRain|lblHoursOfRainValue|lblHoursOfRainValue|imgNightIcon|lblNightText|lblLow|lblLowValue|lblRealFeelN|lblRealFeelNValue|lblWindsN|lblWindsNValue|lblTStormProbN|lblTStormProbNValue|lblPrecipN|lblPrecipNValue|lblRainN|lblRainNValue|lblSnowN|lblSnowNValue|lblHoursPrecipN|lblHoursPrecipNValue|lblHoursOfRainN|lblHoursOfRainNValue|lblSunrise|lblSunset|lblMoonrise|lblMoonset|lblDaylight|lblDarkness' ${DirShell}/details$x > ${DirShell}/jour$x
        egrep -i 'lblMaxUV|lblMaxUVValue' ${DirShell}/details$x >> ${DirShell}/jour$x
        sed -i 's/\(^.*blue\/\|^.*pour \|_int.jpg.*$\|^.*">\|<\/.*$\|&deg;C\)//g' ${DirShell}/jour$x
        sed -i -e 's/: /\n/g' -e 's/W/O/g' -e '1s/ .*$//' ${DirShell}/jour$x
        sed -i -e '1s/^./\u&/' -e '1s/./\n/4' ${DirShell}/jour$x
        sed -i '2d' ${DirShell}/jour$x
        for (( i=2; i<=22; i+=20 ))
            do
                image_raw=$(sed -n "${i}"p ${DirShell}/jour$x)
                sed -i ${i}s/$image_raw/$(test_image $image_raw)/ ${DirShell}/jour$x
            done
        cp ${DirShell}/icones/base/$(sed -n 2p ${DirShell}/jour$x).png ${DirShell}/icones/J${x}jour.png
        cp ${DirShell}/icones/base/$(sed -n 22p ${DirShell}/jour$x).png ${DirShell}/icones/J${x}soir.png

        for (( i=29; i>=9; i-=20 ))
            do
                sed -i $i's/ /\n/' ${DirShell}/jour$x
            done
        def_vent $x
        sed -n 3p ${DirShell}/jour$x >> ${DirShell}/messages
        sed -n 24p ${DirShell}/jour$x >> ${DirShell}/messages
    done

rm ${DirShell}/details*

}

def_vent() {

case $1 in
    curr)
        dvent=$(sed -n "5p" ${DirShell}/curr_cond)
        fvent=$(sed -n "6p" ${DirShell}/curr_cond)
    
        v=$(direction_vent $dvent)
    
        cp $(icone_vent $v $fvent) ${DirShell}/icones/vcc.png
    ;;
    *)
        for (( i1=0; i1<=1; i1+=1 ))
        do
            n=$(($(($i1*21))+9))
            dvent=$(sed -n "$(($n))p" ${DirShell}/jour$1)
            fvent=$(sed -n "$(($n+1))p" ${DirShell}/jour$1)
    
            v=$(direction_vent $dvent)
    
            if (( $i1==0 )); then
                moment="jour"
            else
                moment="soir"
            fi
            cp $(icone_vent $v $fvent) ${DirShell}/icones/v$1$moment.png
        done
    ;;
esac

}

direction_vent() {

case $1 in
    Variable) echo 1 ;;
    N) echo 10 ;;
    NNE) echo 11 ;;
    NE) echo 12 ;;
    ENE) echo 13 ;;
    E) echo 14 ;;
    ESE) echo 15 ;;
    SE) echo 16 ;;
    SSE) echo 17 ;;
    S) echo 2 ;;
    SSO) echo 3 ;;
    SO) echo 4 ;;
    OSO) echo 5 ;;
    O) echo 6 ;;
    ONO) echo 7 ;;
    NO) echo 8 ;;
    NNO) echo 9 ;;
    *) echo 0 ;;
esac

}

icone_vent() {

if (( $2 <= 20 )); then
    n=$1
elif (( $2 <= 35 )); then
    n=$(($1+17))
elif (( $2 <= 50 )); then
    n=$(($1+34))
elif (( $2 >= 51 )); then
    n=$(($1+51))
fi

if (( $n <= 9 )); then 
    n="0$n"
fi

echo "${DirShell}/icones/base/vent/$n.png"

}

decoupage() {

for (( i=1; i<=$(($1*4)); i++))
    do
        no=$(sed -n ${i}p ${DirShell}/messages|wc -m)
        if (( no<=21 )); then
            sed -i $i"s/$/\n/" ${DirShell}/messages
            i=$((i+1))
        elif (( no>21 )); then
            nbesp=$(awk '{ x=0; x+=gsub("\\ ",""); print x }' ${DirShell}/messages | sed -n "$(($i))p")
            pos=$(($(($nbesp/2))+1))
            sed -i $i"s/ /\n/$pos" ${DirShell}/messages
            i=$((i+1))
        fi
    done

}

#Fin des fonctions début du script

ping -c 2 www.accuweather.com>>/dev/null

if [ $? -eq  0 ]
then

    rm ${DirShell}/icones/*.png
    rm ${DirShell}/jour*
    rm ${DirShell}/messages

    wget --save-cookies ${DirShell}/cookie -O ${DirShell}/curr_cond_raw $address
    addr_week=$(echo $address|sed 's/quick.*$//')

    #Formatage condition acctuelle

    egrep -i 'CurrentTemp|CurrentText|RealFeelValue|WindsValue|HumidityValue|DewPointValue|PressureValue|PressureTenValue|VisibilityValue|SunriseValue|SunsetValue|imgCurConCondition' ${DirShell}/curr_cond_raw > ${DirShell}/curr_cond
    rm ${DirShell}/curr_cond_raw
    sed -i -e 's/\(^.*blue\/\|_int.*$\|^.*">\|<\/span>.*$\|&deg;C\)//g' -e 's/W/O/g' ${DirShell}/curr_cond

    curr_cond_raw_image=$(sed -n 1p ${DirShell}/curr_cond)
    sed -i 1s/$curr_cond_raw_image/$(test_image $curr_cond_raw_image)/ ${DirShell}/curr_cond
    cp ${DirShell}/icones/base/$(sed -n 1p ${DirShell}/curr_cond).png ${DirShell}/icones/cc.png
    sed -i 's/Unavailable/N\/A/g' ${DirShell}/curr_cond
    sed -i '5s/ /\n/' ${DirShell}/curr_cond
    sed -i '6s/ .*$//' ${DirShell}/curr_cond
    def_vent curr
    
    #-----------------------------------------
    
    meteo_a_n_jours $periode
    decoupage $periode
    
    rm ${DirShell}/cookie
    
fi

Ne t’inquiète pas ces normal, le site à changé, regarde ma signature, tu y trouveras le moyen de récupérer la météo dans tes conky.

Hors ligne

#598 Le 11/02/2012, à 23:34

sickboy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

donc apparement il faut tronquer l'adresse, j'ai mis http://www.accuweather.com/fr/fr/frohmuhl/141896 , mais ça ne fontionne toujours pas


Xubuntu Voyager 11.10 / Linux Mint Debian Edition
AMD Phenom II x4 945
Asus Nvidia GeForce GT 440
Asus Xonar Essence STX

Hors ligne

#599 Le 12/02/2012, à 05:54

Didier-T

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

sickboy a écrit :

donc apparement il faut tronquer l'adresse, j'ai mis http://www.accuweather.com/fr/fr/frohmuhl/141896 , mais ça ne fontionne toujours pas

il faut aussi changer utiliser le meteo.lua, c'est ça que je voulais dire par le site à changer, les infos ne sont plus accessible de la même manière, donc il a fallut tous reprendre de 0. (utilise la 3.2)

Hors ligne

#600 Le 12/02/2012, à 21:58

sickboy

Re : [Conky] Alternative à weather.com ( icones conkyforecast )

tout recommencer ? snif snif.. bon je jetterai un oeil quand j'aurai la motivation. heureusement que vous faites le plus dur car deja la ça me fait chier ^^
merci à vous


Xubuntu Voyager 11.10 / Linux Mint Debian Edition
AMD Phenom II x4 945
Asus Nvidia GeForce GT 440
Asus Xonar Essence STX

Hors ligne