Page 27 of 35

Re: MX-17 Screenshots

Posted: Thu Aug 23, 2018 12:45 am
by asqwerth
male wrote: Tue Aug 21, 2018 2:51 pm Conky-Syntax1.10; weather.lua and lua.weather.sh-Script from @damo
You need an API key from Openweathermap.

unvollMX17.png.jpg

Unfortunately, I have a mistake with my location with the wind.
If you are interested, I would be happy to post the three files. ;)
Yes please! I like this different way of conveying the weather, temp and wind info.

I already have an API key from openweathermap which I've used for a few years.

Re: MX-17 Screenshots

Posted: Thu Aug 23, 2018 10:23 am
by male
create the directory "damo-weather" and put the three files there.
If you want to use another directory, adjust the paths accordingly
I removed my API key. You have to enter your own here.
I didn't remove my city etc. to make it easier for you.
I wish you success! ;)

.conkyrc10

Code: Select all

--März 2018 @unklar
--modifiziert August 2018 von @male
conky.config = {
-- Hintergrund
	background = false,
	update_interval = 2,
-- Schrift
	use_xft = true,
	font = 'terminus:size=8',
	xftalpha = 0.2,

-- Aktualisierung und Fenster von Conky
	total_run_times = 0,
	own_window = true,
	own_window_type = 'normal', --override  
	own_window_transparent = true,
	own_window_hints = 'undecorated,below,skip_taskbar,skip_pager',--sticky,
	own_window_class = 'conky',
	own_window_argb_visual = true,
--own_window_argb_value 0 
--own_window_colour 000000  
--own_window_title  damo-Weather     

-- Buffers
	double_buffer = true,
	no_buffers = true,

-- Aktualisierungsfrequenz von Prozessor und Netz
	cpu_avg_samples = 2,
	net_avg_samples = 2,

-- Rahmen
	draw_shades = false,
	draw_outline = false,
	draw_borders = false,
	draw_graph_borders = false,
	border_inner_margin = 0,
	border_outer_margin = 0,
	stippled_borders = 0,

-- Farben
	default_color = 'white',
--default_color = 'black',
	color0 = '#ffffff',
	color1 = '#b22222',


-- Alignment               
--alignment top_left      #tl
--alignment top_right     #tr
--alignment top_middle    #tm
--alignment bottom_left   #bl
--alignment bottom_right  #br
--alignment bottom_middle #bm
--alignment middle_left   #ml
--alignment middle_right  #mr
--alignment middle_middle #mm
	alignment = 'bottom_right',


	uppercase = false,
	use_spacer = 'none',
	text_buffer_size = 4096,
	imlib_cache_size = 0,
	override_utf8_locale = true,

-- Fenstergrösse
	minimum_width = 350, minimum_height = 220,
--maximum_width 350  
	gap_x = 60,
	gap_y = 60,

----Lua--#
	lua_load = '~/damo-weather/weather.lua',
	lua_draw_hook_pre = 'conky_main',

};

conky.text = [[
${execi 300 ~/damo-weather/lua-weather.sh Dresden}\
${color0}${voffset 180} #${alignc}${font monofur bold:size=12}${time %H:%M}
#${alignc}${font monofur bold:size=8}${time %a.%d. %b}
#${alignc -30}${font monofur bold:size=7}Dresden${font}
]];
weather.lua

Code: Select all

--[[ 
lua-weather.lua, written by <damo>, July 2016

---------------------------------------------
Use this in a conky with

    lua_load /path/to/lua-weather.lua
    lua_draw_hook_pre conky_main

In the conky, get the weather data from lua-weather.sh with

TEXT
${execi <interval> /path/to/lua-weather.sh}

---------------------------------------------]]

require 'cairo'

-- set default font
--fontface="Dustismo"
fontface="GE Inspira"

function conky_main()
    if conky_window==nil then return end
    cs=cairo_xlib_surface_create(conky_window.display,
                                        conky_window.drawable,
                                        conky_window.visual,
                                        conky_window.width,
                                        conky_window.height)
    cr=cairo_create(cs)
    
    xW=280      -- x pos wind dial centre
    yW=90       -- y pos wind dial centre
    radiusW=60  -- radiusW wind dial
    xT=5       -- x pos temp bar (top)
    yT=10       -- y pos temp bar (top)
    wT=6        -- width temp bar
    hT=150      -- height temp bar
    xSun=130    -- x pos sun dial centre
    ySun=90     -- y pos sun dial centre
    radiusSun=60-- radius sun dial
    datafile="/tmp/weather.txt"  -- textfile to hold lua-weather.sh output
    
    direction,windS,temperature,sunrise,sunset,loc,wx = get_vals() 
    
    local updates=conky_parse('${updates}')
    update_num=tonumber(updates)

-- Edit this for concentric dials ---------------------------------

    concentric = 0  --<-- Change to "1" to display concentric rings

    if ( concentric == 1 ) then
        xSun = 300
        ySun = 100
        radiusSun = 90
        xW = xSun
        yW = ySun
        radiusW = 0.7*radiusSun
    end
------------------------------------------------------------------------

    if update_num>1 then
        draw_widgets()
    end

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

--  Choose the widgets to be displayed:
function draw_widgets()
    draw_thermometer(cr,xT,yT,wT,hT)
    draw_wind_rose()
    draw_sun_ring()
end

-- read values from datafile
function get_vals()
    local path = datafile
    local file = io.open( path)
    local array = {}
    local i=0
    
    if (file) then
        -- read all contents of file into array
        for line in file:lines() do
            i=i+1
            array[i]=line
        end
        file:close()

        dir=tostring(array[1]) -- get wind direction, convert to value required
        winddir=-math.pi*(tonumber(dir))/180
        wind_speed=tostring(array[7])  -- windspeed knots
        temperature=tonumber(array[5])
        sunrise=array[3]
        sunset=array[4]
        location=array[6]
        weather=array[7]

        return winddir,wind_speed,temperature,sunrise,sunset,location,weather
    else
        print("datafile " .. datafile .. " not found")
    end
end

-- convert degree to rad 
function angle_to_position(start_angle, current_angle)
    local pos = start_angle + current_angle
    return pos * math.pi/180
end

function draw_sun_ring()
--    local hours=20
--    local mins=0
    
    local hours=os.date("%H")
    local mins=os.date("%M")
    current_time=(hours .. mins)

    mins_arc = 360/60*mins
    hours_arc = (360/24*hours + mins_arc/24) + 90
    
    start_angle = 90    -- south
    end_angle = 360
    start_arc = 0
    stop_arc = 0

    -- get times and angle position from function sun_rise_set()
    sunrise,sunset,sun_rise,sun_set = sun_rise_set()

    local border_pat=cairo_pattern_create_linear(xSun,ySun-radiusSun*1.25,xSun,ySun+radiusSun*1.25)
    
    cairo_pattern_add_color_stop_rgba(border_pat,0,1,1,0,0.3)
    cairo_pattern_add_color_stop_rgba(border_pat,0.4,0.9,0.9,0.2,0.2)
    cairo_pattern_add_color_stop_rgba(border_pat,0.55,0.9,0.2,0,0.2)
    cairo_pattern_add_color_stop_rgba(border_pat,0.7,0,0.1,1,0.3)
    cairo_set_source(cr,border_pat)
    -- draw ring, starting at south position ( = midnight/00hrs)
    cairo_arc(cr, xSun, ySun, radiusSun, angle_to_position(start_angle, 0), angle_to_position(start_angle, end_angle))
--  set width of ring
    cairo_set_line_width(cr,radiusSun*0.06)
    cairo_stroke(cr)
    cairo_pattern_destroy (pat)

    -- draw sun
    -- get position on circumference ( = time from midnight (south), 24hr clock)
    sun_pos=angle_to_position(start_angle,hours_arc)
    local sunx=xSun - (math.sin(-sun_pos)*radiusSun)
    local suny=ySun - (math.cos(-sun_pos)*radiusSun)
    -- set colour & alpha, for day/night
    if ( tonumber(current_time) > tonumber(sunrise) ) and ( tonumber(current_time) < tonumber(sunset) ) then
        r,g,b,a = 1,1,0,0.4 --day
    else
        r,g,b,a = 0.5,0.5,0.5,0.4 --night
    end
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_arc(cr,sunx,suny,radiusSun*0.09,0,360)
    cairo_fill(cr)
    
    local r,g,b,a = 1,1,0,0.5
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_set_line_width(cr,2)
    cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND)

    -- draw sunrise mark
    local sunrise_x=xSun - (math.sin(-sun_rise)*radiusSun*1.05)
    local sunrise_y=ySun - (math.cos(-sun_rise)*radiusSun*1.05)
    local sunrise_xc=xSun - (math.sin(-sun_rise)*radiusSun*0.95)
    local sunrise_yc=ySun - (math.cos(-sun_rise)*radiusSun*0.95)
    cairo_move_to(cr,sunrise_x,sunrise_y)
    cairo_line_to(cr,sunrise_xc,sunrise_yc)
    cairo_stroke(cr)
    -- draw sunset mark
    local sunset_x=xSun - (math.sin(-sun_set)*radiusSun*1.05)
    local sunset_y=ySun - (math.cos(-sun_set)*radiusSun*1.05)
    local sunset_xc=xSun - (math.sin(-sun_set)*radiusSun*0.95)
    local sunset_yc=ySun - (math.cos(-sun_set)*radiusSun*0.95)
    local r,g,b,a = 1,0,0,0.5
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_move_to(cr,sunset_x,sunset_y)
    cairo_line_to(cr,sunset_xc,sunset_yc)
    cairo_stroke(cr)
--  print sunrise/sunset text
    sun_text(sunrise_x,sunrise_y,sunset_x,sunset_y)
end

function sun_text(xr,yr,xs,ys)
    -- display sunrise time
    local r,g,b,a = 1,1,0,0.5
    cairo_set_source_rgba (cr,r,g,b,a)
    print_text(cr,sunrise,xr-4,yr,4,10)
    print_text(cr,"sunrise",xr-4,yr+8,4,8)
    
    -- display sunset time
    local r,g,b,a = 1,0,0,0.5
    cairo_set_source_rgba (cr,r,g,b,a)
    print_text(cr,sunset,xs,ys+10,0,10)
    print_text(cr,"sunset",xs,ys+18,0,8)
    
--    print("concentric= " .. concentric)
    if ( concentric == 0 ) then
        -- display time
        local current_time = os.date("%H:%M")
        local fontface="Dustismo"
        local r,g,b,a = 1,1,1,0.3
        cairo_set_source_rgba (cr,r,g,b,a)
        cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD)
        cairo_set_font_size (cr,24)
        local xt,yt = position_text(cr,current_time,xSun,ySun-6,2)
        cairo_move_to (cr,xt,yt)
        cairo_show_text (cr,current_time)
        cairo_stroke (cr)
        
        -- display date
        local cal = os.date("%a. %d. %b")
        local fontface="Dustismo"
        local r,g,b,a = 1,1,1,0.3
        cairo_set_source_rgba (cr,r,g,b,a)
        cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD)
        cairo_set_font_size (cr,12)
        local xt,yt = position_text(cr,cal,xSun,ySun+10,1)
        cairo_move_to (cr,xt,yt)
        cairo_show_text (cr,cal)
        cairo_stroke (cr)
        
    --  print location
        local fontface="Dustismo"
        local r,g,b,a = 1,1,1,0.4
        cairo_set_source_rgba (cr,r,g,b,a)
        cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL)
        cairo_set_font_size (cr,10)
        local xt,yt = position_text(cr,loc,xSun,ySun+25,1)
        cairo_move_to (cr,xt,yt)
        cairo_show_text (cr,loc)
        cairo_stroke (cr)
    else
        print_location_text(xSun,ySun+1.4*radiusSun)
    end

end

function print_location_text(x,y)
   -- display time
    local current_time = os.date("%H%M")
    local fontface="Dustismo"
    local r,g,b,a = 1,1,1,0.3
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD)
    cairo_set_font_size (cr,24)
    local xt,yt = position_text(cr,current_time,x,y,2)
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,current_time)
    cairo_stroke (cr)
    
    -- display date
    local cal = os.date("%a %d %b")
    local fontface="Dustismo"
    local r,g,b,a = 1,1,1,0.3
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD)
    cairo_set_font_size (cr,12)
    local xt,yt = position_text(cr,cal,x,y+10,1)
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,cal)
    cairo_stroke (cr)
    
--  print location
    local fontface="Dustismo"
    local r,g,b,a = 1,1,1,0.4
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL)
    cairo_set_font_size (cr,10)
    local xt,yt = position_text(cr,loc,x,y+25,1)
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,loc)
    cairo_stroke (cr)
end

function sun_rise_set()
    sunupH = string.sub(sunrise,1,2)
    sunupM = string.sub(sunrise,3,4)
    sundownH = string.sub(sunset,1,2)
    sundownM = string.sub(sunset,3,4)

    minSR_arc = 360/60*sunupM
    hourSR_arc = (360/24*sunupH + minSR_arc/24) + 90
    pos_SR = angle_to_position(start_angle,hourSR_arc)

    minSS_arc = 360/60*sundownM
    hourSS_arc = (360/24*sundownH + minSS_arc/24) + 90
    pos_SS = angle_to_position(start_angle,hourSS_arc)

    return sunrise,sunset,pos_SR,pos_SS
end

function draw_thermometer(cr,x,y,wT,hT)
    local alpha=0.5
    HT = y+hT
    pat = cairo_pattern_create_linear (x,y,wT,HT)
    cairo_pattern_add_color_stop_rgba (pat, 1,   0,  0, 1, alpha)
    cairo_pattern_add_color_stop_rgba (pat, 0.4, 1,0.8, 0, alpha)
    cairo_pattern_add_color_stop_rgba (pat, 0.3, 1,0.3, 0, alpha)
    cairo_pattern_add_color_stop_rgba (pat, 0, 1,0, 0, alpha)

    cairo_rectangle (cr, x,y,wT,HT)
    cairo_set_source (cr, pat)
    cairo_fill (cr)
    cairo_pattern_destroy (pat)

    draw_temperature(cr,x,y,hT,temperature)
end

function draw_temperature(cr,x,y,hT,Tdegrees)
    local range=hT/100
    local zero = y + range*60
    local T = Tdegrees*range
    t = tostring(Tdegrees)
    t = ( t .. "°C" )
    cairo_set_source_rgba (cr,1,1,1,0.5)
    cairo_set_line_width(cr,1)

    for i = 0,100,10 do -- draw 10 degree marks
        local l = 3
        local xT = x-1
        if ( i == 60 ) then -- longer mark for freezing point
            xT = x-6
            l = -12
        end
        cairo_move_to (cr,xT,y)
        cairo_rel_line_to (cr,-l,0)
        cairo_stroke (cr)
        y = y + range*10
    end

    cairo_set_source_rgba (cr,1,1,1,0.5)
    cairo_set_line_width(cr,3)
    cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND)
    cairo_move_to(cr,x-1,zero-T)    -- temperature indicator
    cairo_rel_line_to(cr,10,0)

    -- temperature text
    print_text(cr,t,x+28,zero-T,1,10)
    -- zero degrees text
    print_text(cr,"0",x-12,zero,1,12)
end

function draw_wind_rose()
    draw_marks(cr,xW,yW,radiusW)
    draw_WindArrow(cr,xW,yW,50,direction,radiusW-8)
    draw_NESW(cr,xW,yW,radiusW,10)
    
--  print windspeed
    local fontface="Dustismo"
    local r,g,b,a = 1,1,1,0.4
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD)
    cairo_set_font_size (cr,16)
    local xt,yt = position_text(cr,windS,xW,yW,2)
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,windS)
    cairo_stroke (cr)

--  print weather conditions
    local fontface="Dustismo"
    local r,g,b,a = 1,1,1,0.4
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_select_font_face(cr,fontface,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL)
    cairo_set_font_size (cr,10)
    local xt,yt = position_text(cr,wx,xW,yW+10,1)
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,wx)
    cairo_stroke (cr)
end

function draw_WindArrow(cr,x, y, length, bearing,radiusW)
    -- startpoint x, startpoint y, length of side, compass bearing
    local head_ratio = 1.05 -- ratio of side to overall length
    local head_angle = 0.02 -- proportion 0 - 0.5 (straight, at right angle to direction)
    
    local x1=x- (math.sin(bearing)*radiusW)
    local y1=y- (math.cos(bearing)*radiusW)
    --arrow body
    local angle = bearing
    local x0 = x1 + (math.sin(angle) * length)
    local y0 = y1 + (math.cos(angle) * length)
    local xtext = x1 + (math.sin(angle) * 0.25*length)
    local ytext = y1 + (math.cos(angle) * 0.25*length)

    --arrow head left
    angle = bearing - (head_angle * math.pi)
    x2 = x0 - (math.sin(angle) * length * head_ratio)
    y2 = y0 - (math.cos(angle) * length * head_ratio)

    --arrow head right
    angle = bearing + (head_angle * math.pi)
    x3 = x0 - (math.sin(angle) * length * head_ratio)
    y3 = y0 - (math.cos(angle) * length * head_ratio)
    
    start_x=(x0+x2+x3)/3
    start_y=(y0+y2+y3)/3
    
    cairo_set_source_rgba (cr,1,1,1,0.5)
    cairo_move_to (cr,start_x,start_y)
    cairo_line_to (cr,x2,y2)
    cairo_line_to (cr,x1,y1) 
    cairo_line_to (cr,x3,y3) 
    cairo_close_path (cr)
    cairo_fill(cr)
    cairo_stroke (cr)
    
    return true
end

--  display compass points
function draw_NESW(cr,x,y,rt,font_size)
    local compass={0,90,180,270}
    local cpoints={"N","E","S","W"}
    radiusW=rt+12
    
    for i = 1,4,1 do
        compass_point=-math.pi*(tonumber(compass[i]))/180
        local x1=x - (math.sin(compass_point)*radiusW)
        local y1=y - (math.cos(compass_point)*radiusW)
        local t = cpoints[i]
        print_text(cr,t,x1,y1,1,font_size)
    end
end

--  draw compass rose graduations
function draw_marks(cr,x,y,r)
    local angle=0
    local inner=r-2
    local outer=r+2

    local r,g,b,a=1,1,1,0.5
    cairo_set_source_rgba (cr,r,g,b,a)
    cairo_set_line_width(cr, 1)

    for i = 0,36,1 do   -- draw small ticks, every 10 deg
        compass_arc=(-2*math.pi/360)*angle
        local x0 = x - (math.sin(compass_arc) * inner)
        local y0 = y - (math.cos(compass_arc) * inner)
        local endx = x - (math.sin(compass_arc) * outer)
        local endy = y - (math.cos(compass_arc) * outer)
        
        if ( (i/3) - math.floor(i/3) ~= 0 ) then -- don't draw every third tick
            cairo_move_to (cr,x0,y0)
            cairo_line_to(cr,endx,endy)
            cairo_stroke(cr)
        end
        angle=angle+10
    end
    
    angle=0 -- re-set angle
    
    for i = 0,12,1 do       -- draw large ticks, every 30 deg
        compass_arc=(-2*math.pi/360)*angle
        x0 = x - (math.sin(compass_arc) * (inner-5))
        y0 = y - (math.cos(compass_arc) * (inner-5))
        endx = x - (math.sin(compass_arc) * outer)
        endy = y - (math.cos(compass_arc) * outer)
        
        cairo_move_to (cr,x0,y0)
        cairo_line_to(cr,endx,endy)
        cairo_stroke(cr)
        angle=angle+30
    end
end

function print_text(cr,t,xT,yT,posT,font_size)
--  align text, using text area extents
    -- posT:        0 = none
    --              1 = align both
    --              2 = horizontal
    --              3 = vertical
    --              4 = left
    cairo_set_font_size (cr,font_size)
    if ( posT == 0 ) then
        xt = xT
        yt = yT
    else
        xt,yt = position_text(cr,t,xT,yT,posT)
    end
    cairo_move_to (cr,xt,yt)
    cairo_show_text (cr,t)
    cairo_stroke (cr)
end

function position_text(cr,t,text_x,text_y,pos)
    -- adjust text position
    -- get text area (x_bearing,y_bearing,width,height,x_advance,y_advance)
    te=cairo_text_extents_t:create()
    cairo_text_extents(cr,t,te)
    xtext = text_x
    ytext = text_y
    
    if ( pos == 1 ) then    -- centre text
        xtext = text_x - te.width/2
        ytext = text_y + te.height/2
    elseif ( pos == 2 ) then    -- horizontal align
        xtext = text_x - te.width/2
    elseif ( pos == 3 ) then    -- vertical align
        ytext = text_y + te.height/2
    elseif ( pos == 4 ) then    -- set right edge of text to pos
        xtext = text_x - te.width
    end

    return xtext,ytext
end 
lua-weather.sh

Code: Select all

#!/bin/bash
#
## lua-weather.sh by <damo> July 2016
## Adapted from bunsenweather.sh, which was based on ideas from 
## weatherbang.sh version 1.0, 2013 by Ryan Fantus
##
## Requires:
##          'jq' (sudo apt-get install jq);
##          API Key from http://openweathermap.org/api
##
## USAGE: Call this script from Conky with ( replace "<t>" with the update interval)
##          ${execpi <t> /path/to/lua-weather.sh [location]}


#### User configurables:  ##############################################

# Get API KEY by registering for one at http://openweathermap.org/api
api="xxxxxxxxxxxxxx "

# Either set the location manually here, or by passing it as a script parameter in the Conky.
# "yourlocation" must be a name (which doesn't have spaces), or a numeric id.
#
# id's can be obtained from http://bulk.openweathermap.org/sample/city.list.json.gz
# Download and extract the json file, then simply search for an id with grep. 
#   For example:   grep "New York" city.list.json
#
# If $place is not set, then the script attempts to get a geolocation from the IP address.

place="$1"              # Get $place from script parameter.
place="Dresden"   # Uncomment and add name or id. NB If the name has spaces, then you must use the id.

# Choose fahrenheit/Imperial or Celcius/metric:
#metric='imperial'
metric='metric'

# data file
datafile="/tmp/weather.txt"

#########################################################################
connectiontest() {
    local -i i attempts=${1-0}
    for (( i=0; i < attempts || attempts == 0; i++ )); do
        if wget -O - 'http://ftp.debian.org/debian/README' &> /dev/null; then
            return 0
        fi
        if (( i == attempts - 1 )); then # if last attempt
            return 1
        fi
    done
}

placeholder() {
    if (( $1 == 1 )) &>/dev/null;then
        echo "No internet connection"
        echo "Weather information unavailable"
    else
        echo "No API key"
        echo "Weather information unavailable"
    fi
}

if [[ $metric == metric ]] &>/dev/null;then
    scaleT="°C"
    scaleV="m/s"
else
    scaleT="°F"
    scaleV="mph"
fi

if [[ -z "$api" ]] &>/dev/null;then
    placeholder 0 && exit 1
else
    connectiontest 10
    
    # If latlong is preferred then don't set a value for $place
    if (( $? == 0 )) &>/dev/null;then
        if [[ -z $place ]] &>/dev/null;then
            # Geolocate IP:
            ipinfo=$(curl -s ipinfo.io)
            latlong=$(echo "$ipinfo" | jq -r '.loc')
            # Parse the latitude and longitude
            lat=${latlong%,*}
            long=${latlong#*,}
            location="lat=$lat&lon=$long"
        else
            # check if numeric id, or placename is being used
            [[ ${place##*[!0-9]*} ]] &>/dev/null && location="id=$place" || location="q=$place"
        fi

        # get json data from openweathermap:
        weather=$(curl -s http://api.openweathermap.org/data/2.5/weather\?APPID=$api\&"$location"\&units=$metric)
        city=$(echo "$weather" | jq -r '.name') # In case location has spaces in the name
        weather_desc=$(echo "$weather" | jq -r '.weather[0].description')   # In case description has spaces in the name

        # load values into array:
        all=($(echo "$weather" | jq -r '.coord.lon,.coord.lat,.weather[0].main,.main.temp,.main.pressure,.main.temp_min,.main.temp_max,.wind.speed,.wind.deg,.clouds.all,.sys.sunrise,.sys.sunset'))
        #                   ARRAY INDEX  0          1          2                3          4              5              6              7           8         9           10           11

        longitude=$(printf '%06.1f' ${all[0]})
        latitude=$(printf '%+.1f' ${all[1]})
        condition="${all[2]}"
        temperature=$(printf '%+.1f%s' ${all[3]} $scaleT)
        pressure=$(printf '%.f %s' ${all[4]} mb)
        temperature_min=$(printf '%+.1f%s' ${all[5]} $scaleT)
        temperature_max=$(printf '%+.1f%s' ${all[6]} $scaleT)
        cloud_cover=$(printf '%d%s' ${all[9]} %)
        sunrise=$(date -d @${all[10]} +"%R")
        sunset=$(date -d @${all[11]} +"%R")
        description="$weather_desc"
        winddir=$(printf '%3.f%s' ${all[8]} °)
        
        winddir=${all[8]}
        echo ${winddir%.*} > "$datafile"
        windspeed=$(echo ${all[7]}*3.6 | bc)
        windspeed=$(printf '%01.1f %s' "$windspeed" "m/s")
        echo "$windspeed" >> "$datafile"
        echo "$sunrise" | sed 's/://' >> "$datafile"
        echo "$sunset" | sed 's/://'>> "$datafile"
        temp_degrees=$(printf '%.1f' ${all[3]})
        echo "$temp_degrees" >> "$datafile"
        echo "$city" >> "$datafile" 
        echo "$description" >> "$datafile"

    else
        placeholder 1
    fi
fi

exit 

Re: MX-17 Screenshots

Posted: Thu Aug 23, 2018 11:17 am
by Jerry3904
Thanks for sharing those, Male! At some point the entire mx-conky-data will be reviewed and expanded, so I am very glad to see other conkies posted.

Re: MX-17 Screenshots

Posted: Thu Aug 23, 2018 11:50 am
by asqwerth
Thanks, male!

As usual, it will take me some time to try it out. I think I still have some earlier ones from you I haven't tested yet!

Re: MX-17 Screenshots

Posted: Thu Aug 23, 2018 6:24 pm
by stevedude
New to MX Linux and liking it a lot. Had the wallpaper forever so I don't have a link - Sorry.


Image



Image



Image



Image

Re: MX-17 Screenshots

Posted: Fri Aug 24, 2018 6:23 am
by male
Jerry3904 wrote: Thanks for sharing those, Male! At some point the entire mx-conky-data will be reviewed and expanded, so I am very glad to see other conkies posted.
I was happy to do that. Linux/Conky lives from the exchange of users. ;)

Re: MX-17 Screenshots

Posted: Fri Aug 24, 2018 4:50 pm
by davemx
Image

Can't remember where I downloaded the wallpaper from.

Modified the Conky file to add CPU Temperatures, Fan Speeds and CPU Freq for each core.

I made the panel horizontal, and used a website to add text to the start button: <b> 𝕄𝕏-𝕃𝕀ℕ𝕌𝕏 </b>

I added a top panel which is self-hiding. I've got a little transparency in the non-current window.

The Genmon on the bottom panel shows the CPU temperature when Conky is covered up. A pop-up window adds each individual core and the fan speeds.

One of the nice things about MX Linux is that it makes it easier to prettify XFCE. It's probably the most feature-filled desktop outside of KDE whilst also being light, but it's normally rather prosaic and uninteresting to look at. The MX guys have given it a great makeover!

Re: MX-17 Screenshots

Posted: Fri Aug 24, 2018 4:56 pm
by richb
Nice mods. Well done.

Re: MX-17 Screenshots

Posted: Sun Aug 26, 2018 12:18 pm
by arjaybe
Using Adrian's KDE MX-17. I'm running redshift and there's a hidden panel at the top for my most used applications.
MX-17-KDE-screenshot-20180825.jpg

Re: MX-17 Screenshots

Posted: Sun Aug 26, 2018 5:29 pm
by Redacted
What an awesome owl!