MX-17 Screenshots

Show us how you are setting up MX
Message
Author
User avatar
asqwerth
Developer
Posts: 7210
Joined: Sun May 27, 2007 5:37 am

Re: MX-17 Screenshots

#261 Post 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.
Desktop: Intel i5-4460, 16GB RAM, Intel integrated graphics
Clevo N130WU-based Ultrabook: Intel i7-8550U (Kaby Lake R), 16GB RAM, Intel integrated graphics (UEFI)
ASUS X42D laptop: AMD Phenom II, 6GB RAM, Mobility Radeon HD 5400

male

Re: MX-17 Screenshots

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

User avatar
Jerry3904
Administrator
Posts: 21881
Joined: Wed Jul 19, 2006 6:13 am

Re: MX-17 Screenshots

#263 Post 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.
Production: 5.10, MX-23 Xfce, AMD FX-4130 Quad-Core, GeForce GT 630/PCIe/SSE2, 16 GB, SSD 120 GB, Data 1TB
Personal: Lenovo X1 Carbon with MX-23 Fluxbox and Windows 10
Other: Raspberry Pi 5 with MX-23 Xfce Raspberry Pi Respin

User avatar
asqwerth
Developer
Posts: 7210
Joined: Sun May 27, 2007 5:37 am

Re: MX-17 Screenshots

#264 Post 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!
Desktop: Intel i5-4460, 16GB RAM, Intel integrated graphics
Clevo N130WU-based Ultrabook: Intel i7-8550U (Kaby Lake R), 16GB RAM, Intel integrated graphics (UEFI)
ASUS X42D laptop: AMD Phenom II, 6GB RAM, Mobility Radeon HD 5400

User avatar
stevedude
Posts: 68
Joined: Sat Aug 11, 2018 8:19 pm

Re: MX-17 Screenshots

#265 Post 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
OS:MX-19.2_x64|Kernel:4.15.0-1-amd64 x86_64|Xfce 4.14.2|Mobo:TUF X470-PLUS|CPU AMD Ryzen 5, 2600 MHz
Graphics:GeForce GTX 1060,driver:nvidia v:390.77|Audio:NVIDIA snd_hda_intel
Netwrk:Realtek RTL8111|Seagate:ST2000DM006, 1.82 TB|Mem:15.6 GB

male

Re: MX-17 Screenshots

#266 Post 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. ;)

davemx
Posts: 319
Joined: Sun Aug 12, 2018 2:31 pm

Re: MX-17 Screenshots

#267 Post 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!
You do not have the required permissions to view the files attached to this post.
Desktop: Mini-Box M350 with Asus H110i-plus motherboard, Pentium G4600 processor, 2TB SSD and 16Gb RAM DDR4-2133
Printer/Scanner: Brother MFC-J5335W
Laptop: Lenovo V15 ADA
Media Centre: Lenovo Q190

User avatar
richb
Administrator
Posts: 10322
Joined: Wed Jul 12, 2006 2:17 pm

Re: MX-17 Screenshots

#268 Post by richb »

Nice mods. Well done.
Forum Rules
Guide - How to Ask for Help

richb Administrator
System: MX 23 KDE
AMD A8 7600 FM2+ CPU R7 Graphics, 16 GIG Mem. Three Samsung EVO SSD's 250 GB

User avatar
arjaybe
Posts: 479
Joined: Wed Jul 12, 2006 6:51 pm

Re: MX-17 Screenshots

#269 Post 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
You do not have the required permissions to view the files attached to this post.
Green Comet
Space particles.

User avatar
Redacted
Posts: 294
Joined: Sat Apr 29, 2017 6:53 am

Re: MX-17 Screenshots

#270 Post by Redacted »

What an awesome owl!

Post Reply

Return to “Themes and Screenshots”