You are not logged in.

#426 2009-11-24 15:20:15

Bruce_M
Member
From: Buenos Aires, Arg
Registered: 2009-09-21
Posts: 27
Website

Re: conky configs and screenshots!

corsakh wrote:

Is this by any chance possible to build a conky module that uses data from a running PostgreSQL database?

If so, where should I start / start reading?

Check out the links at Conky Hardcore! - note the "Official Blog"

I don't do SQL databases so I have no idea, but those links should get you started.

Found another for you:  Conky Wiki

Have a nice day.
Bruce

Last edited by Bruce_M (2009-11-24 15:47:56)


Architecturally speaking in every arch there is a keystone!
In ARCHlinux it's KISS - = Keeping It Supported Stone = -
Does that make ARCH the Keystone of Linux?

Offline

#427 2009-11-24 15:24:29

Bruce_M
Member
From: Buenos Aires, Arg
Registered: 2009-09-21
Posts: 27
Website

Re: conky configs and screenshots!

I'm curious - what version of Conky does ARCH have?

Have a nice day.
Bruce


Architecturally speaking in every arch there is a keystone!
In ARCHlinux it's KISS - = Keeping It Supported Stone = -
Does that make ARCH the Keystone of Linux?

Offline

#428 2009-11-24 15:37:19

pillz
Member
Registered: 2009-08-20
Posts: 58

Re: conky configs and screenshots!

$ pacman -Ss conky
extra/conky 1.7.2-5
    An advanced, highly configurable system monitor for X based on torsmo

Offline

#429 2009-11-24 15:47:23

dcc24
Member
Registered: 2009-10-31
Posts: 732

Re: conky configs and screenshots!


It is better to keep your mouth shut and be thought a fool than to open it and remove all doubt. (Mark Twain)

My AUR packages

Offline

#430 2009-11-24 15:53:39

Bruce_M
Member
From: Buenos Aires, Arg
Registered: 2009-09-21
Posts: 27
Website

Re: conky configs and screenshots!

pillz wrote:
$ pacman -Ss conky
extra/conky 1.7.2-5
    An advanced, highly configurable system monitor for X based on torsmo

OK, that beats what I'm using does it have  Lua bindings: Cairo & Imlib2 ?

I'm asking because a friend wants ARCH and wants to know. The bindings are a must.  smile

And to tell the truth, I want ARCH  as well and I'm curious too - I just haven't had time to set it up yet and when I did I had an ISP that wouldn't stay connected.

0 bruloo@bruloo: ~
Tue Nov 24, 12:49 $ conky -V
Conky 1.7.2 compiled Tue Aug 25 10:12:55 UTC 2009 for Linux 2.6.24-24-xen (x86_64)

Compiled in features:

System config file: /etc/conky/conky.conf
Package library path: /usr/lib/conky

 X11:
  * Xdamage extension
  * XDBE (double buffer extension)
  * Xft

 Music detection:
  * MPD
  * MOC

 General:
  * math
  * hddtemp
  * portmon
  * Curl
  * RSS
  * Weather (METAR)
  * Weather (XOAP)
  * wireless
  * support for IBM/Lenovo notebooks
  * nvidia
  * eve-online
  * config-output
  * Imlib2
  * ALSA mixer support
  * apcupsd
  * iostats
  * Lua

  Lua bindings:
   * Cairo
   * Imlib2
0 bruloo@bruloo: ~
Tue Nov 24, 12:49 $

Have a nice day.
Bruce


Architecturally speaking in every arch there is a keystone!
In ARCHlinux it's KISS - = Keeping It Supported Stone = -
Does that make ARCH the Keystone of Linux?

Offline

#431 2009-11-25 03:23:34

pillz
Member
Registered: 2009-08-20
Posts: 58

Re: conky configs and screenshots!

Inspired by sen's config (well, the weather section and colors at least).
nov2009conky.jpg

.conkyrc

# Use Xft?
use_xft yes
xftfont Liberation Mono:size=9

# Update interval in seconds
update_interval 1

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window  yes
own_window_transparent no
own_window_type widget
own_window_hints undecorate, sticky, skip_taskbar, skip_pager, below

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 87 0

maximum_width 200

# Draw shades?
draw_shades no

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders yes

# Stippled borders?
stippled_borders 0

# border margins
border_margin 5

# border width
border_width 1

# Default colors and also border colors
default_color 303030
#default_shade_color white
#default_outline_color 303030
own_window_colour 262524

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 20
gap_y 30

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Add spaces to keep things from moving about?  This only affects certain objects.
use_spacer none

TEXT
${color a4a4a4}${font :size=20}${alignc}${time %l:%M %p}$font
${color a4a4a4}${time %A, %B %d, %Y}
${color a4a4a4}${offset -14}${execi 999 ~/.calendar.sh}
${color a4a4a4}Nov ${color 9AB7DC}29th${color a4a4a4} - fix Oma's comp
${color a4a4a4}December ${color 9AB7DC}4th ${color a4a4a4}/ ${color 9AB7DC}5th ${color a4a4a4}/ ${color 9AB7DC}6th${color a4a4a4}.
${color a4a4a4}${hr 1}
${color 9AB7DC}Host:${color a4a4a4}${alignr}${nodename}
${color 9AB7DC}Uptime:${color a4a4a4}${alignr}${uptime}
${color 9AB7DC}Kernel:${color a4a4a4}${alignr}${kernel}
${color a4a4a4}${hr 1}
${offset 80}${color a4a4a4}${font Weather:size=50}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=WF}${font}${color}
${color 9AB7DC}Forcast:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=CC}
${color 9AB7DC}Temperature:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=HT}
${color 9AB7DC}Wind:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=WS}
${color 9AB7DC}Humidity:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=HM}
${color 9AB7DC}Sunrise:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=SR}
${color 9AB7DC}Sunset:${color a4a4a4}${alignr}${execi 3600 python ~/documents/code/python/MIRAconkyForecast.py --location=CAXX0301 --datatype=SS}
${color a4a4a4}${hr 1}
${color 9AB7DC}CPU:${color a4a4a4}${alignr}${freq_g cpu1}Ghz
${cpu}%  ${cpubar 7, }

${color 9AB7DC}Name${alignr}CPU
${color a4a4a4}${top name 1}${alignr}${top cpu 1}
${color a4a4a4}${top name 2}${alignr}${top cpu 2}
${color a4a4a4}${top name 3}${alignr}${top cpu 3}
${color a4a4a4}${top name 4}${alignr}${top cpu 4}
${color a4a4a4}${hr 1}
${color 9AB7DC}Memory:${color a4a4a4}${alignr}${mem} / ${memmax}
${memperc}%  ${membar 7, }
${color 9AB7DC}Cached:${color a4a4a4}${alignr}${cached}
${color 9AB7DC}Swap:${color a4a4a4}${alignr}${swap} / ${swapmax}

${color 9AB7DC}Name${alignr}MEM
${color a4a4a4}${top_mem name 1}${alignr}${top_mem mem 1}
${color a4a4a4}${top_mem name 2}${alignr}${top_mem mem 2}
${color a4a4a4}${top_mem name 3}${alignr}${top_mem mem 3}
${color a4a4a4}${top_mem name 4}${alignr}${top_mem mem 4}
${color a4a4a4}${hr 1}
${color 9AB7DC}Root:${color a4a4a4}${alignr}${fs_used /root} / ${fs_free /root}
${color a4a4a4}${fs_bar 7 /root}
${color 9AB7DC}Home:${color a4a4a4}${alignr}${fs_used /home/steel} / ${fs_free /home/steel}
${color a4a4a4}${fs_bar 7 /home/steel}

calendar.sh (not mine, i either found it on google somewhere or took it from this thread)

cal | awk 'NR>1' | sed -e 's/   /    /g' -e 's/[^ ] /& /g' -e 's/..*/  & /' -e 's/ \('`date | awk '{print $3}'`'\) /\['`date | awk '{print $3}'`'\]/'

conkyforecast.py (also not mine, taken from this thread)

#!/usr/bin/python
# -*- coding: utf-8 -*-
###############################################################################
# conkyForecast.py is a (not so) simple (anymore) python script to gather 
# details of the current weather for use in conky.
#
#  Author: Kaivalagi
# Created: 13/04/2008
# Modifications:
#    14/04/2008    Allow day ranges for forecast data
#    14/04/2008    Check for connectivity to xoap service
#    18/04/2008    Allow the setting of spaces for ranged output
#    18/04/2008    Allow Night and Day forecast output
#    18/04/2008    Support locale for condition code text "CC" option, awaiting spanish language translation
#    18/04/2008    Use pickling for class data rather than opening xml, this bypasses the need to interrogate cached data
#    19/04/2008    Added spanish condition text - Thanks Bruce M
#    19/04/2008    Added isnumeric check on all numeric output with units suffix
#    19/04/2008    Altered pickle file naming to include location code
#    19/04/2008    Added spanish week days conversion via locale
#    20/04/2008    Added decent command argument parser
#    20/04/2008    Added --shortweekday option, if given the day of week data type is shortened to 3 characters
#    21/04/2008    Fixed locale options for forecast output
#    21/04/2008    Added --template option to allow custom output using a single exec call :)
#    21/04/2008    Added --hideunits option to remove, for example, mph and C from output
#    23/04/2008    Removed --imperial option from template, this MUST be set as a standard option on the script call and not used in the template file. 
#    23/04/2008    Readded --imperial option to template, enabling metric or imperial values per datatype. Note when using templates command line option will not work.
#    23/04/2008    Added output notifying user if the location given is bad
#    24/04/2008    Added handling for no connectivity, will revert to cached data now (erroring if no cache exists). Tests by trying to open xoap.weather.com
#    24/04/2008    Fixed Celsius to fahrenheit conversion
#    06/05/2008    Updated url used after webservice was updated
#    09/05/2008    Consolidated current condition and forecast data fetch into one call
#    09/05/2008    Added Sunrise and sunset to datatypes, these are specific to both current conditions and forecast data
#    09/05/2008    Added moon phase, barometer reading and barometer description to datatypes, these are only specific to current conditions and so are N/A in forecasted output
#    09/05/2008    Added unit conversions for barometer from mb to inches (imperial)
#   09/05/2008  Updated spanish condition text - Thanks Bruce M
#   10/05/2008  Added french locale data - Thanks benpaka
#   12/05/2008  Added new BF (bearing font) datatype to provide an arrow character (use with Arrow.ttf font) instead of NSEW output from WD (wind direction)
#   12/05/2008  Updated WD output to be locale specific, currently supports default english and spanish - Thanks Bruce M
#    18/05/2008    Added new MF (moon font) datatype to provide a moon font character (characters incorrect and no dedicated font yet).
#
# TODO:
# Consolidate pkl files into one file/class
# Add a weather font based moon phase output based on moon icon data
# ??? Any more requirements out there?

import sys, os, socket, urllib2, datetime, time
from xml.dom import minidom
from stat import *
from optparse import OptionParser
import locale
import gettext
import pickle
from math import *

APP="conkyForecast.py"
DIR=os.path.dirname (__file__) + '/locale'
gettext.bindtextdomain(APP, DIR)
gettext.textdomain(APP)
_ = gettext.gettext

class CommandLineParser:

    parser = None

    def __init__(self):

        self.parser = OptionParser()
        self.parser.add_option("-l","--location", dest="location", default="$LOCATION", type="string", metavar="CODE", help=u"location code for weather data [default: %default],Use the following url to determine your location code by city name: http://xoap.weather.com/search/search?where=Norwich")
        self.parser.add_option("-d","--datatype",dest="datatype", default="HT", type="string", metavar="DATATYPE", help=u"[default: %default] The data type options are: DW (Day Of Week), WF (Weather Font Output), LT (Low Temp), HT (High Temp), CC (Current Conditions), CT (Conditions Text), PC (Precipitation Chance), HM (Humidity), WD (Wind Direction), WS (Wind Speed), WG (Wind Gusts), CN (City Name), SR (sunrise), SS (sunset), MP (moon phase), MF (moon font), BR (barometer reading), BD (barometer description). Not applicable at command line when using templates.")
        self.parser.add_option("-s","--startday",dest="startday", type="int", metavar="NUMBER", help=u"define the starting day number, if omitted current conditions are output. Not applicable at command line when using templates.")
        self.parser.add_option("-e","--endday",dest="endday", type="int", metavar="NUMBER", help=u"define the ending day number, if omitted only starting day data is output. Not applicable at command line when using templates.")
        self.parser.add_option("-S","--spaces",dest="spaces", type="int", default=1, metavar="NUMBER", help=u"[default: %default] Define the number of spaces between ranged output. Not applicable at command line when using templates.")
        self.parser.add_option("-t","--template",dest="template", type="string", metavar="FILE", help=u"define a template file to generate output in one call. A displayable item in the file is in the form {--datatype=HT --startday=1}. The following are possible options within each item: --datatype,--startday,--endday,--night,--shortweekday,--imperial,--hideunits,--spaces . Note that the short forms of the options are not currently supported! None of these options are applicable at command line when using templates.")
        self.parser.add_option("-L","--locale",dest="locale", type="string", help=u"override the system locale for language output (en=english, es=spanish, fr=french, more to come)")
        self.parser.add_option("-i","--imperial",dest="imperial", default=False, action="store_true", help=u"request imperial units, if omitted output is in metric. Not applicable at command line when using templates.")
        self.parser.add_option("-n","--night",dest="night", default=False, action="store_true", help=u"switch output to night data, if omitted day output will be output. Not applicable at command line when using templates.")
        self.parser.add_option("-w","--shortweekday",dest="shortweekday", default=False, action="store_true", help=u"Shorten the day of week data type to 3 characters. Not applicable at command line when using templates.")
        self.parser.add_option("-u","--hideunits",dest="hideunits", default=False, action="store_true", help=u"Hide units such as mph or C, degree symbols (°) are still shown. Not applicable at command line when using templates.")
        self.parser.add_option("-v","--verbose",dest="verbose", default=False, action="store_true", help=u"request verbose output, no a good idea when running through conky!")
        self.parser.add_option("-r","--refetch",dest="refetch", default=False, action="store_true", help=u"fetch data regardless of data expiry")

    def parse_args(self):
        (options, args) = self.parser.parse_args()
        return (options, args)

    def print_help(self):
        return self.parser.print_help()

class WeatherData:
    def __init__(self, day_of_week, low, high, condition_code, condition_text, precip, humidity, wind_dir, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc):
        self.day_of_week = u""+day_of_week
        self.low = u""+low
        self.high = u""+high
        self.condition_code = u""+condition_code
        self.condition_text = u""+condition_text
        self.precip = u""+precip
        self.humidity = u""+humidity
        self.wind_dir = u""+wind_dir
        self.wind_speed = u""+wind_speed
        self.wind_gusts = u""+wind_gusts
        self.city = u""+city
        self.sunrise = u""+sunrise
        self.sunset = u""+sunset
        self.moon_phase = u""+moon_phase
        self.moon_icon = u""+moon_icon        
        self.bar_read = u""+bar_read
        self.bar_desc = u""+bar_desc


class WeatherText:

    conditions_text = {
        "0": _(u"Tornado"),
        "1": _(u"Tropical Storm"),
        "2": _(u"Hurricane"),
        "3": _(u"Severe Thunderstorms"),
        "4": _(u"Thunderstorms"),
        "5": _(u"Mixed Rain and Snow"),
        "6": _(u"Mixed Rain and Sleet"),
        "7": _(u"Mixed Precipitation"),
        "8": _(u"Freezing Drizzle"),
        "9": _(u"Drizzle"),
        "10": _(u"Freezing Rain"),
        "11": _(u"Showers"),
        "12": _(u"Showers"),
        "13": _(u"Snow Flurries"),
        "14": _(u"Light Snow Showers"),
        "15": _(u"Blowing Snow"),
        "16": _(u"Snow"),
        "17": _(u"Hail"),
        "18": _(u"Sleet"),
        "19": _(u"Dust"),
        "20": _(u"Fog"),
        "21": _(u"Haze"),
        "22": _(u"Smoke"),
        "23": _(u"Blustery"), 
        "24": _(u"Windy"),
        "25": _(u"Cold"),
        "26": _(u"Cloudy"),
        "27": _(u"Mostly Cloudy"),
        "28": _(u"Mostly Cloudy"),
        "29": _(u"Partly Cloudy"),
        "30": _(u"Partly Cloudy"),
        "31": _(u"Clear"),
        "32": _(u"Clear"),
        "33": _(u"Fair"),
        "34": _(u"Fair"),
        "35": _(u"Mixed Rain and Hail"),
        "36": _(u"Hot"),
        "37": _(u"Isolated Thunderstorms"),
        "38": _(u"Scattered Thunderstorms"),
        "39": _(u"Scattered Thunderstorms"),
        "40": _(u"Scattered Showers"),
        "41": _(u"Heavy Snow"),
        "42": _(u"Scattered Snow Showers"),
        "43": _(u"Heavy Snow"),
        "44": _(u"Partly Cloudy"),
        "45": _(u"Thunder Showers"),
        "46": _(u"Snow Showers"),
        "47": _(u"Isolated Thunderstorms"),
        "na": _(u"N/A"),
        "-": _(u"N/A")
    }

    conditions_text_es = {
        "0": _(u"Tornado"),
        "1": _(u"Tormenta Tropical"),
        "2": _(u"Huracá¡n"),
        "3": _(u"Tormentas Fuertes"),
        "4": _(u"Tormentas"),
        "5": _(u"Lluvia y Nieve Mezclada"),
        "6": _(u"Lluvia y Aguanieve Mezclada"),
        "7": _(u"Aguanieve"),
        "8": _(u"Llovizna Helada"),
        "9": _(u"Llovizna"),
        "10": _(u"Lluvia Engelante"), # o lluvia helada
        "11": _(u"Chaparrones"),
        "12": _(u"Chaparrones"),
        "13": _(u"Nieve Ligera"),
        "14": _(u"Nieve Ligera"),
        "15": _(u"Ventisca de Nieve"),
        "16": _(u"Nieve"),
        "17": _(u"Granizo"),
        "18": _(u"Aguanieve"),
        "19": _(u"Polvo"),
        "20": _(u"Niebla"),
        "21": _(u"Bruma"),
        "22": _(u"Humo"),
        "23": _(u"Tempestad"),
        "24": _(u"Ventoso"),
        "25": _(u"Fráo"),
        "26": _(u"Muy Nublado"),
        "27": _(u"Principalmente Nublado"),
        "28": _(u"Principalmente Nublado"),
        "29": _(u"Parcialmente Nublado"),
        "30": _(u"Parcialmente Nublado"),
        "31": _(u"Despejado"),
        "32": _(u"Despejado"),
        "33": _(u"Algo Nublado"),
        "34": _(u"Algo Nublado"),
        "35": _(u"Lluvia con Granizo"),
        "36": _(u"Calor"),
        "37": _(u"Tormentas Aisladas"),
        "38": _(u"Tormentas Dispersas"),
        "39": _(u"Tormentas Dispersas"),
        "40": _(u"Chubascos Dispersos"),
        "41": _(u"Nieve Pesada"),
        "42": _(u"Nevadas Débiles y Dispersas"),
        "43": _(u"Nevada Intensa"),
        "44": _(u"Nubes Dispersas"),
        "45": _(u"Tormentas"),
        "46": _(u"Nevadas Dispersas"),
        "47": _(u"Tormentas Aisladas"),
        "na": _(u"N/A"),
        "-": _(u"N/A")
    }

    conditions_text_fr = {
        "0": _(u"Tornade"),
        "1": _(u"Tempête Tropicale"),
        "2": _(u"Ouragan"),
        "3": _(u"Orages Violents"),
        "4": _(u"Orageux"),
        "5": _(u"Pluie et Neige"),
        "6": _(u"Pluie et Neige Mouillée"),
        "7": _(u"Variable avec averses"),
        "8": _(u"Bruine Givrante"),
        "9": _(u"Bruine"),
        "10": _(u"Pluie Glacante"),
        "11": _(u"Averses"),
        "12": _(u"Averses"),
        "13": _(u"Légère Neige"),
        "14": _(u"Forte Neige"),
        "15": _(u"Tempête de Neige"),
        "16": _(u"Neige"),
        "17": _(u"Grêle"),
        "18": _(u"Pluie/Neige"),
        "19": _(u"Nuage de poussière"),
        "20": _(u"Brouillard"),
        "21": _(u"Brume"),
        "22": _(u"Fumée"),
        "23": _(u"Tres Venteux"),
        "24": _(u"Venteux"),
        "25": _(u"Froid"),
        "26": _(u"Nuageux"),
        "27": _(u"Tres Nuageux"),
        "28": _(u"Tres Nuageux"),
        "29": _(u"Nuages Disséminés"),
        "30": _(u"Nuages Disséminés"),
        "31": _(u"Beau"),
        "32": _(u"Beau"),
        "33": _(u"Belles Éclaircies"),
        "34": _(u"Belles Éclaircies"),
        "35": _(u"Pluie avec Grêle"),
        "36": _(u"Chaleur"),
        "37": _(u"Orages Isolés"),
        "38": _(u"Orages Localisés"),
        "39": _(u"Orages Localisés"),
        "40": _(u"Averses Localisées"),
        "41": _(u"Neige Lourde"),
        "42": _(u"Tempête de Neige Localisées"),
        "43": _(u"Neige Lourde"),
        "44": _(u"Nuages Disséminés"),
        "45": _(u"Orages"),
        "46": _(u"Tempête de Neige"),
        "47": _(u"Orages Isolés"),
        "na": _(u"N/A"),
        "-": _(u"N/A")
    }
    
    conditions_weather_font = {
        "0": _(u"W"),
        "1": _(u"V"),
        "2": _(u"W"),
        "3": _(u"s"),
        "4": _(u"p"),
        "5": _(u"k"),
        "6": _(u"k"),
        "7": _(u"g"),
        "8": _(u"g"),
        "9": _(u"g"),
        "10": _(u"h"),
        "11": _(u"g"),
        "12": _(u"g"),
        "13": _(u"k"),
        "14": _(u"k"),
        "15": _(u"k"),
        "16": _(u"k"),
        "17": _(u"k"),
        "18": _(u"k"),
        "19": _(u"e"),
        "20": _(u"e"),
        "21": _(u"a"),
        "22": _(u"d"),
        "23": _(u"d"), 
        "24": _(u"d"),
        "25": _(u"d"),
        "26": _(u"e"),
        "27": _(u"e"),
        "28": _(u"e"),
        "29": _(u"c"),
        "30": _(u"c"),
        "31": _(u"a"),
        "32": _(u"a"),
        "33": _(u"b"),
        "34": _(u"b"),
        "35": _(u"k"),
        "36": _(u"a"),
        "37": _(u"f"),
        "38": _(u"f"),
        "39": _(u"f"),
        "40": _(u"g"),
        "41": _(u"k"),
        "42": _(u"k"),
        "43": _(u"k"),
        "44": _(u"b"),
        "45": _(u"g"),
        "46": _(u"k"),
        "47": _(u"f"),
        "na": _(u""),
        "-": _(u"")
    }

    conditions_moon_font = {
        "0": _(u"0"),
        "1": _(u"1"),
        "2": _(u"2"),
        "3": _(u"3"),
        "4": _(u"4"),
        "5": _(u"5"),
        "6": _(u"6"),
        "7": _(u"7"),
        "8": _(u"8"),
        "9": _(u"9"),
        "10": _(u"10"),
        "11": _(u"11"),
        "12": _(u"12"),
        "13": _(u"13"),
        "14": _(u"14"),
        "15": _(u"15"),
        "16": _(u"16"),
        "17": _(u"17"),
        "18": _(u"18"),
        "19": _(u"19"),
        "20": _(u"20"),
        "21": _(u"21"),
        "22": _(u"22"),
        "23": _(u"23"), 
        "24": _(u"24"),
        "25": _(u"25"),
        "na": _(u""),
        "-": _(u"")
    }
        
    day_of_week = {
        "Today": _(u"Today"),
        "Monday": _(u"Monday"),
        "Tuesday": _(u"Tuesday"),
        "Wednesday": _(u"Wednesday"),
        "Thursday": _(u"Thursday"),
        "Friday": _(u"Friday"),
        "Saturday": _(u"Saturday"),
        "Sunday": _(u"Sunday")
    }

    day_of_week_short = {
        "Today": _(u"Now"),
        "Monday": _(u"Mon"),
        "Tuesday": _(u"Tue"),
        "Wednesday": _(u"Wed"),
        "Thursday": _(u"Thu"),
        "Friday": _(u"Fri"),
        "Saturday": _(u"Sat"),
        "Sunday": _(u"Sun")
    }

    day_of_week_es = {
        "Today": _(u"hoy"),
        "Monday": _(u"lunes"),
        "Tuesday": _(u"martes"),
        "Wednesday": _(u"miércoles"),
        "Thursday": _(u"jueves"),
        "Friday": _(u"viernes"),
        "Saturday": _(u"sábado"),
        "Sunday": _(u"domingo")
    }

    day_of_week_short_es = {
        "Today": _(u"hoy"),
        "Monday": _(u"lun"),
        "Tuesday": _(u"mar"),
        "Wednesday": _(u"mié"),
        "Thursday": _(u"jue"),
        "Friday": _(u"vie"),
        "Saturday": _(u"sáb"),
        "Sunday": _(u"dom")
    }

    day_of_week_fr = {
        "Today": _(u"Aujourd'hui"),
        "Monday": _(u"Lundi"),
        "Tuesday": _(u"Mardi"),
        "Wednesday": _(u"Mercredi"),
        "Thursday": _(u"Jeudi"),
        "Friday": _(u"Vendredi"),
        "Saturday": _(u"Samedi"),
        "Sunday": _(u"Dimanche")
    }

    day_of_week_short_fr = {
        "Today": _(u"Auj"),
        "Monday": _(u"Lun"),
        "Tuesday": _(u"Mar"),
        "Wednesday": _(u"Mer"),
        "Thursday": _(u"Jeu"),
        "Friday": _(u"Ven"),
        "Saturday": _(u"Sam"),
        "Sunday": _(u"Dim")
    }

    bearing_arrow_font = {
        "N": _(u"a"),
        "NNE": _(u"b"),
        "NE": _(u"c"),
        "ENE": _(u"d"),
        "E": _(u"e"),
        "ESE": _(u"f"),
        "SE": _(u"g"),
        "SSE": _(u"h"),
        "S": _(u"i"),
        "SSW": _(u"j"),
        "SW": _(u"k"),
        "WSW": _(u"l"),
        "W": _(u"m"),
        "WNW": _(u"n"),
        "NW": _(u"o"),
        "NNW": _(u"p"),
        "N/A": _(u" ")
    }

    bearing_text_es = {
        "N": _(u"N"),
        "NNE": _(u"NNE"),
        "NE": _(u"NE"),
        "ENE": _(u"ENE"),
        "E": _(u"E"),
        "ESE": _(u"ESE"),
        "SE": _(u"SE"),
        "SSE": _(u"SSE"),
        "S": _(u"S"),
        "SSW": _(u"SSO"),
        "SW": _(u"SO"),
        "WSW": _(u"WOW"),
        "W": _(u"O"),
        "WNW": _(u"ONO"),
        "NW": _(u"NO"),
        "NNW": _(u"NNO"),
        "N/A": _(u"N\A")
    }

    bearing_text_fr = {
        "N": _(u"N"),
        "NNE": _(u"NNE"),
        "NE": _(u"NE"),
        "ENE": _(u"ENE"),
        "E": _(u"E"),
        "ESE": _(u"ESE"),
        "SE": _(u"SE"),
        "SSE": _(u"SSE"),
        "S": _(u"S"),
        "SSW": _(u"SSO"),
        "SW": _(u"SO"),
        "WSW": _(u"WOW"),
        "W": _(u"O"),
        "WNW": _(u"ONO"),
        "NW": _(u"NO"),
        "NNW": _(u"NNO"),
        "N/A": _(u"N\A")        
    }
              
class GlobalWeather:

    current_conditions = []
    day_forecast = []
    night_forecast = []

    locale = "en"

    options = None
    weatherxmldoc = ""

     TEMP_FILEPATH_CURRENT = "/tmp/conkyForecast-c-LOCATION.pkl"
    TEMP_FILEPATH_DAYFORECAST = "/tmp/conkyForecast-df-LOCATION.pkl"
    TEMP_FILEPATH_NIGHTFORECAST = "/tmp/conkyForecast-nf-LOCATION.pkl"
     EXPIRY_MINUTES = 30
    DEFAULT_SPACING = u" "
        

    def __init__(self,options):

        self.options = options
        
        if self.options.locale == None:
            try:
                self.locale = locale.getdefaultlocale()[0][0:2]
                #self.locale = "es" #uncomment this line to force Spanish locale
                #self.locale = "fr" #uncomment this line to force French locale                
            except:
                print "locale not set"
        else:
            self.locale = self.options.locale
            #self.locale = "es" #uncomment this line to force Spanish locale
            #self.locale = "fr" #uncomment this line to force French locale    

        if self.options.verbose == True:
            print >> sys.stdout, "locale set to ",self.locale

    def getText(self,nodelist):
        rc = ""
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc = rc + node.data
        return rc


    def getSpaces(self,spaces):
        string = u""
        if spaces == None:
            string = self.DEFAULT_SPACING
        else:
            for i in range(0, spaces+1):
                string = string + u" "
        return string


    def isNumeric(self,string):
        try:
            dummy = float(string)
            return True
        except:
            return False

    def isConnectionAvailable(self):
        # ensure we can access weather.com's server by opening the url
        try:
            usock = urllib2.urlopen('http://xoap.weather.com')
            usock.close()
            return True
        except:
            return False

    def getBearingText(self,bearing):
        bearing = float(bearing)
        if bearing < 11.25:
            return u"N"
        elif bearing < 33.75:
            return u"NNE"
        elif bearing < 56.25:
            return u"NE"
        elif bearing < 78.75:
            return u"ENE"
        elif bearing < 101.25:
            return u"E"
        elif bearing < 123.75:
            return u"ESE"
        elif bearing < 146.25:
            return u"SE"
        elif bearing < 168.75:
            return u"SSE"
        elif bearing < 191.25:
            return u"S"
        elif bearing < 213.75:
            return u"SSW"
        elif bearing < 236.25:
            return u"SW"
        elif bearing < 258.75:
            return u"WSW"
        elif bearing < 281.25:
            return u"W"
        elif bearing < 303.75:
            return u"WNW"
        elif bearing < 326.25:
            return u"NW"
        elif bearing < 348.75:
            return u"NNW"
        else:
            return "N/A"

    def convertCelsiusToFahrenheit(self,temp):
        return str(int(floor(((float(temp)*9.0)/5.0)+32)))

    def convertKilometresToMiles(self,dist):
        return str(int(floor(float(dist)*0.621371192)))

    def convertMillibarsToInches(self,mb):
        return str(int(floor(float(mb)/33.8582)))

    def getTemplateList(self,template):

        templatelist = []
    
        for template_part in template.split("{"):
            if template_part != "":
                for template_part in template_part.split("}"):
                    if template_part != "":
                        templatelist.append(u""+template_part)

        return templatelist


    def getOutputText(self,datatype,startday,endday,night,shortweekday,imperial,hideunits,spaces):
        #try:
            output = u""
        
            # define current units for output
            if hideunits == False:
                if imperial == False:
                    tempunit = u"°C"
                    speedunit = u"kph"
                    pressureunit = u"mb"
                else:
                    tempunit = u"°F"
                    speedunit = u"mph"
                    pressureunit = u"in"
            else:
                tempunit = u"°"
                speedunit = u""
                pressureunit = u""

            if startday == None: # current conditions

                if datatype == "DW":
                    if self.locale == "es":
                        if shortweekday == True:
                            output = WeatherText.day_of_week_short_es[self.current_conditions[0].day_of_week]
                        else:
                            output = WeatherText.day_of_week_es[self.current_conditions[0].day_of_week]
                    elif self.locale == "fr":
                        if shortweekday == True:
                            output = WeatherText.day_of_week_short_fr[self.current_conditions[0].day_of_week]
                        else:
                            output = WeatherText.day_of_week_fr[self.current_conditions[0].day_of_week]                            
                    else:
                        if shortweekday == True:
                            output = WeatherText.day_of_week_short[self.current_conditions[0].day_of_week]
                        else:
                            output = WeatherText.day_of_week[self.current_conditions[0].day_of_week]
                elif datatype == "WF": # weather font
                    output = WeatherText.conditions_weather_font[self.current_conditions[0].condition_code]
                elif datatype == "LT":
                    string = self.current_conditions[0].low
                    if self.isNumeric(string) == True:
                        if imperial == True:
                            string = self.convertCelsiusToFahrenheit(string)
                        string = string + tempunit
                    output = string
                elif datatype == "HT":
                    string = self.current_conditions[0].high
                    if self.isNumeric(string) == True:
                        if imperial == True:
                            string = self.convertCelsiusToFahrenheit(string)
                        string = string + tempunit
                    output = string
                elif datatype == "CC":
                    if self.locale == "es":
                        output = WeatherText.conditions_text_es[self.current_conditions[0].condition_code]
                    elif self.locale == "fr":
                        output = WeatherText.conditions_text_fr[self.current_conditions[0].condition_code]                        
                    else:
                        output = WeatherText.conditions_text[self.current_conditions[0].condition_code] 
                elif datatype == "CT":
                    output = self.current_conditions[0].condition_text
                elif datatype == "PC":
                    string = self.current_conditions[0].precip
                    if self.isNumeric(string) == True:
                        string = string + u"%"
                    output = string
                elif datatype == "HM":
                    string = self.current_conditions[0].humidity
                    if self.isNumeric(string) == True:
                        string = string + u"%"
                    output = string
                elif datatype == "WD":
                    string = self.current_conditions[0].wind_dir
                    if self.isNumeric(string) == True:
                        string = self.getBearingText(string)
                        
                    if self.locale == "es":
                        output = WeatherText.bearing_text_es[string]
                    elif self.locale == "fr":
                        output = WeatherText.bearing_text_fr[string]
                    else:
                        output = string
                                            
                elif datatype == "BF":
                    string = self.current_conditions[0].wind_dir
                    if self.isNumeric(string) == True:
                        string = WeatherText.bearing_arrow_font[self.getBearingText(string)]
                    output = string                    
                elif datatype == "WS":
                    string = self.current_conditions[0].wind_speed
                    if self.isNumeric(string) == True:
                        if imperial == True:
                            string = self.convertKilometresToMiles(string)
                        string = string + speedunit
                    output = string
                elif datatype == "WG":
                    string = self.current_conditions[0].wind_gusts
                    if self.isNumeric(string) == True:
                        if imperial == True:
                            string = self.convertKilometresToMiles(string)
                        string = string + speedunit
                    output = string
                elif datatype == "CN":
                    output = self.current_conditions[0].city
                elif datatype == "SR":
                    output = self.current_conditions[0].sunrise
                elif datatype == "SS":
                    output = self.current_conditions[0].sunset
                elif datatype == "MP":
                    output = self.current_conditions[0].moon_phase
                elif datatype == "MF":
                    output = WeatherText.conditions_moon_font[self.current_conditions[0].moon_icon]                            
                elif datatype == "BR":
                    string = self.current_conditions[0].bar_read
                    if self.isNumeric(string) == True:
                        if imperial == True:
                            string = self.convertMillibarsToInches(string)
                        string = string + pressureunit
                    output = string
                elif datatype == "BD":
                    output = self.current_conditions[0].bar_desc
                else:
                    output = "\nERROR:Unknown data type requested"

            else: # forecast data

                if endday == None: # if no endday was set use startday
                    endday = startday

                if night == True: # night forecast required

                    for day_number in range(startday, endday+1):

                        if datatype == "DW":
                            if self.locale == "es":
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_es[self.night_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_es[self.night_forecast[day_number].day_of_week]
                            elif self.locale == "fr":
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_fr[self.night_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_fr[self.night_forecast[day_number].day_of_week]
                            else:
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short[self.night_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week[self.night_forecast[day_number].day_of_week]
                        elif datatype == "WF": # weather font
                            output = output + self.getSpaces(spaces) + WeatherText.conditions_weather_font[self.night_forecast[day_number].condition_code]
                        elif datatype == "LT":
                            string = self.night_forecast[day_number].low
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertCelsiusToFahrenheit(string)
                                string = string + tempunit
                            output = output + self.getSpaces(spaces) + string

                        elif datatype == "HT":
                            string = self.night_forecast[day_number].high
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertCelsiusToFahrenheit(string)
                                string = string + tempunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "CC":
                            if self.locale == "es":
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text_es[self.night_forecast[day_number].condition_code]
                            elif self.locale == "fr":
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text_fr[self.night_forecast[day_number].condition_code]
                            else:
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text[self.night_forecast[day_number].condition_code]
                        elif datatype == "CT":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].condition_text
                        elif datatype == "PC":
                            string = self.night_forecast[day_number].precip
                            if self.isNumeric(string) == True:
                                string = string + u"%"
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "HM":
                            string = self.night_forecast[day_number].humidity
                            if self.isNumeric(string) == True:
                                string = string + u"%"
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "WD":
                            string = self.night_forecast[day_number].wind_dir
                            if self.locale == "es":
                                output = output + self.getSpaces(spaces) + WeatherText.bearing_text_es[string]
                            elif self.locale == "fr":
                                output = output + self.getSpaces(spaces) + WeatherText.bearing_text_fr[string]
                            else:
                                output = output + self.getSpaces(spaces) + string
                            
                        elif datatype == "BF":
                            output = output + self.getSpaces(spaces) + WeatherText.bearing_arrow_font[self.night_forecast[day_number].wind_dir]
                        elif datatype == "WS":
                            string = self.night_forecast[day_number].wind_speed
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertKilometresToMiles(string)
                                string = string + speedunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "WG":
                            string = self.night_forecast[day_number].wind_gusts
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertKilometresToMiles(string)
                                string = string + speedunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "CN":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].city
                        elif datatype == "SR":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].sunrise
                        elif datatype == "SS":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].sunset
                        elif datatype == "MP":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].moon_phase
                        elif datatype == "MF":
                            output = output + self.getSpaces(spaces) + WeatherText.conditions_moon_font[self.night_forecast[day_number].moon_icon]
                        elif datatype == "BR":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].bar_read
                        elif datatype == "BD":
                            output = output + self.getSpaces(spaces) + self.night_forecast[day_number].bar_desc
                        else:
                            output = "\nERROR:Unknown data type requested"
                            break

                else: # day forecast wanted

                    for day_number in range(startday, endday+1):

                        if datatype == "DW":
                            if self.locale == "es":
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_es[self.day_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_es[self.day_forecast[day_number].day_of_week]
                            elif self.locale == "fr":
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short_fr[self.day_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_fr[self.day_forecast[day_number].day_of_week]                                    
                            else:
                                if shortweekday == True:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week_short[self.day_forecast[day_number].day_of_week]
                                else:
                                    output = output + self.getSpaces(spaces) + WeatherText.day_of_week[self.day_forecast[day_number].day_of_week]
                        elif datatype == "WF": # weather font
                            output = output + self.getSpaces(spaces) + WeatherText.conditions_weather_font[self.day_forecast[day_number].condition_code]
                        elif datatype == "LT":
                            string = self.day_forecast[day_number].low
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertCelsiusToFahrenheit(string)
                                string = string + tempunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "HT":
                            string = self.day_forecast[day_number].high
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertCelsiusToFahrenheit(string)
                                string = string + tempunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "CC":
                            if self.locale == "es":
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text_es[self.day_forecast[day_number].condition_code]
                            elif self.locale == "fr":
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text_fr[self.day_forecast[day_number].condition_code]
                            else:
                                output = output + self.getSpaces(spaces) + WeatherText.conditions_text[self.day_forecast[day_number].condition_code]
                        elif datatype == "CT":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].condition_text
                        elif datatype == "PC":
                            string = self.day_forecast[day_number].precip
                            if self.isNumeric(string) == True:
                                string = string + u"%"
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "HM":
                            string = self.day_forecast[day_number].humidity
                            if self.isNumeric(string) == True:
                                string = string + u"%"
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "WD":
                            string = self.day_forecast[day_number].wind_dir
                            
                            if self.locale == "es":
                                output = output + self.getSpaces(spaces) + WeatherText.bearing_text_es[string]
                            elif self.locale == "fr":
                                output = output + self.getSpaces(spaces) + WeatherText.bearing_text_fr[string]
                            else:
                                output = output + self.getSpaces(spaces) + string    

                        elif datatype == "BF":
                            output = output + self.getSpaces(spaces) + WeatherText.bearing_arrow_font[self.day_forecast[day_number].wind_dir]
                        elif datatype == "WS":
                            string = self.day_forecast[day_number].wind_speed
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertKilometresToMiles(string)
                                string = string + speedunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "WG":
                            string = self.day_forecast[day_number].wind_gusts
                            if self.isNumeric(string) == True:
                                if imperial == True:
                                    string = self.convertKilometresToMiles(string)
                                string = string + speedunit
                            output = output + self.getSpaces(spaces) + string
                        elif datatype == "CN":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].city
                        elif datatype == "SR":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].sunrise
                        elif datatype == "SS":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].sunset
                        elif datatype == "MP":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].moon_phase
                        elif datatype == "MF":
                            output = output + self.getSpaces(spaces) + WeatherText.conditions_moon_font[self.day_forecast[day_number].moon_icon]
                        elif datatype == "BR":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].bar_read
                        elif datatype == "BD":
                            output = output + self.getSpaces(spaces) + self.day_forecast[day_number].bar_desc
                        else:
                            output = u"\nERROR:Unknown data type requested"
                            break

            output = u""+output.strip(u" ") # lose leading/trailing spaces
            return output

        #except:
            #print "getOutputText:Unexpected error: ", sys.exc_info()[0]


    def getOutputTextFromTemplate(self,template):
        #try:

            # keys to template data
            DATATYPE_KEY = "--datatype="
            STARTDAY_KEY = "--startday="
            ENDDAY_KEY = "--endday="
            NIGHT_KEY = "--night"
            SHORTWEEKDAY_KEY = "--shortweekday"
            IMPERIAL_KEY = "--imperial"
            HIDEUNITS_KEY = "--hideunits"
            SPACES_KEY = "--spaces="

            output = u""

            optionfound = False

            #load the file
            try:
                fileinput = open(self.options.template)
                template = fileinput.read()
                fileinput.close()
            except:
                output = u"Template file no found!"

            templatelist = self.getTemplateList(template)

            # lets walk through the template list and determine the output for each item found
            for i in range(0,len(templatelist)-1):

                pos = templatelist[i].find(DATATYPE_KEY)
                if pos != -1:
                    optionfound = True
                    pos = pos + len(DATATYPE_KEY)
                    datatype = templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" ")
                else:
                    datatype = None

                pos = templatelist[i].find(STARTDAY_KEY)
                if pos != -1:
                    optionfound = True
                    pos = pos + len(STARTDAY_KEY)
                    startday = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
                else:
                    startday = None

                pos = templatelist[i].find(ENDDAY_KEY)
                if pos != -1:
                    optionfound = True
                    pos = pos + len(ENDDAY_KEY)
                    endday = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
                else:
                    endday = None

                pos = templatelist[i].find(NIGHT_KEY)
                if pos != -1:
                    optionfound = True
                    night = True
                else:
                    night = False

                pos = templatelist[i].find(SHORTWEEKDAY_KEY)
                if pos != -1:
                    optionfound = True
                    shortweekday = True
                else:
                    shortweekday = False

                pos = templatelist[i].find(IMPERIAL_KEY)
                if pos != -1:
                    optionfound = True
                    imperial = True
                else:
                    imperial = False

                pos = templatelist[i].find(HIDEUNITS_KEY)
                if pos != -1:
                    optionfound = True
                    hideunits = True
                else:
                    hideunits = False

                pos = templatelist[i].find(SPACES_KEY)
                if pos != -1:
                    optionfound = True
                    pos = pos + len(SPACES_KEY)
                    spaces = int(templatelist[i][pos:pos+4].strip("}").strip("{").strip("-").strip(" "))
                else:
                    spaces = 1

                if optionfound == True:
                    templatelist[i] = self.getOutputText(datatype,startday,endday,night,shortweekday,imperial,hideunits,spaces)
                    optionfound = False

            # go through the list concatenating the output now that it's been populated
            for item in templatelist:
                output = output + item

            return output

        #except:
            #print "getOutputTextFromTemplate:Unexpected error: ", sys.exc_info()[0]


    def fetchData(self):

        # always fetch metric data, use conversation functions on this data
        file_path_current = self.TEMP_FILEPATH_CURRENT.replace("LOCATION",self.options.location)
        file_path_dayforecast = self.TEMP_FILEPATH_DAYFORECAST.replace("LOCATION",self.options.location)
        file_path_nightforecast = self.TEMP_FILEPATH_NIGHTFORECAST.replace("LOCATION",self.options.location)

        if self.isConnectionAvailable() == False:
            if os.path.exists(file_path_current):
                RefetchData = False
            else: # no connection, no cache, bang!
                print "No internet connection is available and no cached weather data exists."
        elif self.options.refetch == True:
            RefetchData = True
        else:
             # does the data need retrieving again?
             if os.path.exists(file_path_current):
                 lastmodDate = time.localtime(os.stat(file_path_current)[ST_MTIME])
                expiryDate = (datetime.datetime.today() - datetime.timedelta(minutes=self.EXPIRY_MINUTES)).timetuple()

                if expiryDate > lastmodDate:
                    RefetchData = True
                else:
                    RefetchData = False
            else:
                RefetchData = True


                # fetch the current conditions data, either from the website or by 'unpickling'
         if RefetchData == True:

            # obtain current conditions data from xoap service
            try:

                # http://xoap.weather.com/weather/local/UKXX0103?cc=*&dayf=5&link=xoap&prod=xoap&par=1061785028&key=e374effbfd74930b

                url = 'http://xoap.weather.com/weather/local/' + self.options.location + '?cc=*&dayf=8&link=xoap&prod=xoap&par=1061785028&key=e374effbfd74930b&unit=m'
                if self.options.verbose == True:
                    print >> sys.stdout, "fetching weather data from ",url

                usock = urllib2.urlopen(url)
                xml = usock.read()
                usock.close()
                self.weatherxmldoc = minidom.parseString(xml)
            except:
                print "fetchData:Unexpected error: ", sys.exc_info()[0]
                print "Unable to contact weather source for current conditions"

            # tell the user if the location is bad...
            found = xml.find("Invalid location provided")
            if found != -1:
                print "Invalid location provided"

            # interrogate weather data, load into class structure and pickle it
            try:

                # prepare weather data lists
                self.current_conditions = []
                self.day_forecast = []
                self.night_forecast = []

                # collect general data
                weather_n = self.weatherxmldoc.documentElement
                location_n = weather_n.getElementsByTagName('loc')[0]
                city_n = location_n.getElementsByTagName('dnam')[0]
                city = self.getText(city_n.childNodes)

                # collect current conditions data
                day_of_week = u"Today"
                precip = u"N/A"
                sunrise_n = location_n.getElementsByTagName('sunr')[0]
                sunrise = self.getText(sunrise_n.childNodes)
                sunset_n = location_n.getElementsByTagName('suns')[0]
                sunset = self.getText(sunset_n.childNodes)
                current_condition_n = weather_n.getElementsByTagName('cc')[0]
                current_desc_n = current_condition_n.getElementsByTagName('t')[0]
                current_desc = self.getText(current_desc_n.childNodes)
                current_code_n = current_condition_n.getElementsByTagName('icon')[0]
                current_code = self.getText(current_code_n.childNodes)
                current_temp_n = current_condition_n.getElementsByTagName('tmp')[0]
                current_temp = self.getText(current_temp_n.childNodes)
                current_temp_feels_n = current_condition_n.getElementsByTagName('flik')[0]
                current_temp_feels = self.getText(current_temp_feels_n.childNodes)
                bar_n = current_condition_n.getElementsByTagName('bar')[0]
                bar_read_n = bar_n.getElementsByTagName('r')[0]
                bar_read = self.getText(bar_read_n.childNodes)
                bar_desc_n = bar_n.getElementsByTagName('d')[0]
                bar_desc = self.getText(bar_desc_n.childNodes)
                wind_n = current_condition_n.getElementsByTagName('wind')[0]
                wind_speed_n = wind_n.getElementsByTagName('s')[0]
                wind_speed = self.getText(wind_speed_n.childNodes)
                wind_gust_n = wind_n.getElementsByTagName('gust')[0]
                wind_gusts = self.getText(wind_gust_n.childNodes)
                wind_dir_n = wind_n.getElementsByTagName('d')[0]
                wind_direction = self.getText(wind_dir_n.childNodes)
                humidity_n = current_condition_n.getElementsByTagName('hmid')[0]
                humidity = self.getText(humidity_n.childNodes)
                moon_n = current_condition_n.getElementsByTagName('moon')[0]
                moon_icon_n = moon_n.getElementsByTagName('icon')[0]
                moon_icon = self.getText(moon_icon_n.childNodes)
                moon_phase_n = moon_n.getElementsByTagName('t')[0]
                moon_phase = self.getText(moon_phase_n.childNodes)
                current_conditions_data = WeatherData(day_of_week, current_temp, current_temp, current_code, current_desc, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
                self.current_conditions.append(current_conditions_data)

                # collect forecast data
                bar_read = u"N/A"
                bar_desc = u"N/A"
                moon_phase = u"N/A"
                moon_icon = u"na"
                forecast_n = weather_n.getElementsByTagName('dayf')[0]
                day_nodes = forecast_n.getElementsByTagName('day')
    
                for day in day_nodes:
                    day_of_week = day.getAttribute('t')
                    day_of_year = day.getAttribute('dt')
                    high_temp_n = day.getElementsByTagName('hi')[0]
                    high_temp = self.getText(high_temp_n.childNodes)
                    low_temp_n = day.getElementsByTagName('low')[0]
                    low_temp = self.getText(low_temp_n.childNodes)

                    sunrise_n = day.getElementsByTagName('sunr')[0]
                    sunrise = self.getText(sunrise_n.childNodes)
                    sunset_n = day.getElementsByTagName('suns')[0]
                    sunset = self.getText(sunset_n.childNodes)

                    # day forecast specific data
                    daytime_n = day.getElementsByTagName('part')[0] # day
                    condition_code_n = daytime_n.getElementsByTagName('icon')[0]
                    condition_code = self.getText(condition_code_n.childNodes)
                    condition_n = daytime_n.getElementsByTagName('t')[0]
                    condition = self.getText(condition_n.childNodes)
                    precip_n = daytime_n.getElementsByTagName('ppcp')[0]
                    precip = self.getText(precip_n.childNodes)
                    humidity_n = daytime_n.getElementsByTagName('hmid')[0]
                    humidity = self.getText(humidity_n.childNodes)
                    wind_n = daytime_n.getElementsByTagName('wind')[0]
                    wind_speed_n = wind_n.getElementsByTagName('s')[0]
                    wind_speed = self.getText(wind_speed_n.childNodes)
                    wind_direction_n = wind_n.getElementsByTagName('t')[0]
                    wind_direction = self.getText(wind_direction_n.childNodes)
                    wind_gusts_n = wind_n.getElementsByTagName('gust')[0]
                    wind_gusts = self.getText(wind_gusts_n.childNodes)
                    day_forecast_data = WeatherData(day_of_week, low_temp, high_temp, condition_code, condition, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
                    self.day_forecast.append(day_forecast_data)     

                    # night forecast specific data
                    daytime_n = day.getElementsByTagName('part')[1] # night
                    condition_code_n = daytime_n.getElementsByTagName('icon')[0]
                    condition_code = self.getText(condition_code_n.childNodes)
                    condition_n = daytime_n.getElementsByTagName('t')[0]
                    condition = self.getText(condition_n.childNodes)
                    precip_n = daytime_n.getElementsByTagName('ppcp')[0]
                    precip = self.getText(precip_n.childNodes)
                    humidity_n = daytime_n.getElementsByTagName('hmid')[0]
                    humidity = self.getText(humidity_n.childNodes)
                    wind_n = daytime_n.getElementsByTagName('wind')[0]
                    wind_speed_n = wind_n.getElementsByTagName('s')[0]
                    wind_speed = self.getText(wind_speed_n.childNodes)
                    wind_direction_n = wind_n.getElementsByTagName('t')[0]
                    wind_direction = self.getText(wind_direction_n.childNodes)
                    wind_gusts_n = wind_n.getElementsByTagName('gust')[0]
                    wind_gusts = self.getText(wind_gusts_n.childNodes)
                    night_forecast_data = WeatherData(day_of_week, low_temp, high_temp, condition_code, condition, precip, humidity, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
                    self.night_forecast.append(night_forecast_data) 


                # pickle the data for next time!
                fileoutput = open(file_path_current, 'w')
                 pickle.dump(self.current_conditions,fileoutput)
                 fileoutput.close()

                fileoutput = open(file_path_dayforecast, 'w')
                 pickle.dump(self.day_forecast,fileoutput)
                 fileoutput.close()

                fileoutput = open(file_path_nightforecast, 'w')
                 pickle.dump(self.night_forecast,fileoutput)
                 fileoutput.close()
        
            except:
                print "fetchData:Unexpected error: ", sys.exc_info()[0]
                print "Unable to interrogate the weather data"

        else: # fetch weather data from pickled class files
            if self.options.verbose == True:
                print >> sys.stdout, "fetching weather data from file: ",file_path_current

             fileinput = open(file_path_current, 'r')
            self.current_conditions = pickle.load(fileinput)
            fileinput.close()

            if self.options.verbose == True:
                print >> sys.stdout, "fetching day forecast data from files: ",file_path_dayforecast, file_path_nightforecast

             fileinput = open(file_path_dayforecast, 'r')
            self.day_forecast = pickle.load(fileinput)
            fileinput.close()

            if self.options.verbose == True:
                print >> sys.stdout, "fetching day forecast data from files: ",file_path_nightforecast, file_path_nightforecast

             fileinput = open(file_path_nightforecast, 'r')
            self.night_forecast = pickle.load(fileinput)
            fileinput.close()

    def outputData(self):
        #try:

            if self.options.template != None:

                output = self.getOutputTextFromTemplate(self.options.template)

            else:

                output = self.getOutputText(self.options.datatype,self.options.startday,self.options.endday,self.options.night,self.options.shortweekday,self.options.imperial,self.options.hideunits,self.options.spaces)


            print output.encode("utf-8")

        #except:
            #print "outputData:Unexpected error: ", sys.exc_info()[0]

if __name__ == "__main__":

    parser = CommandLineParser()
    (options, args) = parser.parse_args()

    if options.verbose == True:
        print >> sys.stdout, "location:",options.location
        print >> sys.stdout, "imperial:",options.imperial
        print >> sys.stdout, "datatype:",options.datatype
        print >> sys.stdout, "night:",options.night
        print >> sys.stdout, "start day:",options.startday
        print >> sys.stdout, "end day:",options.endday
        print >> sys.stdout, "spaces:",options.spaces
        print >> sys.stdout, "verbose:",options.verbose
        print >> sys.stdout, "refetch:",options.refetch

    # create new global weather object
    weather = GlobalWeather(options)
    weather.fetchData()
    weather.outputData()

Offline

#432 2009-12-06 22:58:13

toketin
Member
From: Belluno (Italy)
Registered: 2007-04-17
Posts: 326

Re: conky configs and screenshots!

I've a strange problem with conky because i'm trying to check the wifi link signal with the option of conky "wireless_link_qual_perc wlan0" but i can't see it because it displays me "unk" instead of the value of the signal, why?

Offline

#433 2009-12-13 02:06:21

agibbins
Member
From: London, England
Registered: 2009-12-13
Posts: 5
Website

Re: conky configs and screenshots!

MP2E wrote:

Where do you get archupdate-rss-color.py? I searched the forums and the wiki and I couldn't find it sad

Google says:
http://github.com/falconindy/Minor-scri … s-color.py

Appears you need the "python-feedparser" package also.

Last edited by agibbins (2009-12-13 02:08:46)

Offline

#434 2009-12-13 14:07:10

na12
Member
From: /home/serbia
Registered: 2008-12-23
Posts: 752

Re: conky configs and screenshots!

I was playing with conky-lua
Screenshot_10.jpg

.conkyrc

# -- Conky settings -- #
background no
update_interval 1
 
cpu_avg_samples 2
net_avg_samples 2
 
override_utf8_locale yes
 
double_buffer yes
no_buffers yes
 
text_buffer_size 2048
imlib_cache_size 0
 
# -- Window specifications -- #
 
own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
 
border_inner_margin 0
border_outer_margin 0
 
minimum_size 320 800
maximum_width 320
 
alignment top_right
gap_x 0
gap_y 0
 
# -- Graphics settings -- #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
 
# -- Text settings -- #
use_xft yes
xftfont MaiandraGD:size=24
xftalpha 0.4
 
uppercase no
 
default_color 000000
 
# -- Lua Load -- #
lua_load ~/.lua.lua
lua_draw_hook_pre ring_stats
 
TEXT
${alignr}${voffset 53}${goto 90}${font MaiandraGD:size=11}${time %A, %d %B %Y}


${voffset 5}${goto 164}${font MaiandraGD:size=16}${time %H:%M}



${voffset -40}${goto 100}${font MaiandraGD:size=9}Kernel:${offset 70}Uptime:
${goto 90}${font MaiandraGD:size=9}$kernel${offset 40}$uptime 
${voffset 57}${goto 117}${font snap:size=8}${cpu cpu0}%
${goto 117}${cpu cpu1}%
${goto 117}CPU
${voffset 19}${goto 145}${memperc}%
${goto 145}$swapperc%
${goto 145}MEM
${voffset 25}${goto 170}${acpitemp} C
${goto 170}TEMP
${voffset 27}${goto 198}${downspeed eth0}
${goto 198}${upspeed eth0}
${goto 205}NET
${voffset 21}${goto 222}${fs_used /}
${goto 222}${fs_used /home}
${goto 230}DISK

.lua.lua

--[[
Ring Meters by londonali1010 (2009)
 
This script draws percentage meters as rings. It is fully customisable; all options are described in the script.
 
IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
 
To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/rings-v1.2.1.lua
    lua_draw_hook_pre ring_stats
 
Changelog:
+ v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009)
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]
 
settings_table = {
    {
        -- Edit this table to customise your rings.
        -- You can create more rings simply by adding more elements to settings_table.
        -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.
        name='time',
        -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.
        arg='%I.%M',
        -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.
        max=12,
        -- "bg_colour" is the colour of the base ring.
        bg_colour=0x000000,
        -- "bg_alpha" is the alpha value of the base ring.
        bg_alpha=0.3,
        -- "fg_colour" is the colour of the indicator part of the ring.
        fg_colour=0x000000,
        -- "fg_alpha" is the alpha value of the indicator part of the ring.
        fg_alpha=0.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=191, y=145,
        -- "radius" is the radius of the ring.
        radius=32,
        -- "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 (e.g. more clockwise) than start_angle.
        end_angle=360
    },
    {
        name='time',
        arg='%M.%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=191, y=145,
        radius=37,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='time',
        arg='%S',
        max=60,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=191, y=145,
        radius=42,
        thickness=4,
        start_angle=0,
        end_angle=360
    },
    {
        name='cpu',
        arg='cpu0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=140, y=300,
        radius=26,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='cpu',
        arg='cpu1',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=140, y=300,
        radius=20,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='memperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=170, y=350,
        radius=26,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='swapperc',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=170, y=350,
        radius=20,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='time',
        arg='%d',
        max=31,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=191, y=145,
        radius=50,
        thickness=5,
        start_angle=-140,
        end_angle=-30
    },
    {
        name='time',
        arg='%m',
        max=12,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=191, y=145,
        radius=50,
        thickness=5,
        start_angle=30,
        end_angle=140
    },
    {
        name='fs_used_perc',
        arg='/',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=260, y=503,
        radius=26,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='fs_used_perc',
        arg='/home',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=260, y=503,
        radius=20,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='upspeedf',
        arg='eth0',
        max=50,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=230, y=452,
        radius=20,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='downspeedf',
        arg='eth0',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=230, y=452,
        radius=26,
        thickness=5,
        start_angle=-90,
        end_angle=180
    },
    {
        name='acpitemp',
        arg='',
        max=100,
        bg_colour=0x000000,
        bg_alpha=0.3,
        fg_colour=0x000000,
        fg_alpha=0.5,
        x=200, y=401,
        radius=26,
        thickness=6,
        start_angle=-90,
        end_angle=180
    },
}
 
require 'cairo'
 
function rgb_to_r_g_b(colour,alpha)
    return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
 
function draw_ring(cr,t,pt)
    local w,h=conky_window.width,conky_window.height
 
    local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
    local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
 
    local angle_0=sa*(2*math.pi/360)-math.pi/2
    local angle_f=ea*(2*math.pi/360)-math.pi/2
    local t_arc=t*(angle_f-angle_0)
 
    -- Draw background ring
 
    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
    cairo_set_line_width(cr,ring_w)
    cairo_stroke(cr)
 
    -- Draw indicator ring
 
    cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
    cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
    cairo_stroke(cr)        
end
 
function conky_ring_stats()
    local function setup_rings(cr,pt)
        local str=''
        local value=0
 
        str=string.format('${%s %s}',pt['name'],pt['arg'])
        str=conky_parse(str)
 
        value=tonumber(str)
        if value == nil then value = 0 end
        pct=value/pt['max']
 
        draw_ring(cr,pct,pt)
    end
 
    if conky_window==nil then return end
    local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)
 
    local cr=cairo_create(cs)    
 
    local updates=conky_parse('${updates}')
    update_num=tonumber(updates)
 
    if update_num>5 then
        for i in pairs(settings_table) do
            setup_rings(cr,settings_table[i])
        end
    end
end

conkycal.sh

#!/bin/bash
TODAY=$(date +%d)
MONTH=$(date +%-m)
case "$MONTH" in
    2)
        DAYS=28;;
    4|6|9|11)
        DAYS=30;;
    *)
        DAYS=31;;
esac
for (( i=1 ; i<=$DAYS ; i++ )); do
DAY=$(printf "%02d" $i)
    case "$i" in
        $TODAY)
            echo '$color0' $DAY'$color';;
        *)
            echo " $DAY";;
    esac
done

And put somthing like this in your .conkyrc "${execp ~/conkycal.sh}"

Last edited by na12 (2009-12-14 09:57:39)

Offline

#435 2009-12-14 07:04:54

securitybreach
Member
From: In front of my computers
Registered: 2007-11-18
Posts: 416
Website

Re: conky configs and screenshots!

na12 wrote:

Very nice wallpaper, got a link?

THanks


"Every normal man must be tempted at times to spit upon his hands, hoist the black flag, and begin slitting throats." -- H.L. Mencken
Website      Configs
Forum Admin: Bruno's All Things Linux   
securitybreach<a>archlinux.us

Offline

#436 2009-12-14 07:36:57

na12
Member
From: /home/serbia
Registered: 2008-12-23
Posts: 752

Re: conky configs and screenshots!

securitybreach wrote:
na12 wrote:

Very nice wallpaper, got a link?

THanks

http://www.gnome-look.org/content/show. … ent=117010

Offline

#437 2009-12-14 07:54:09

.:B:.
Forum Fellow
Registered: 2006-11-26
Posts: 5,819
Website

Re: conky configs and screenshots!

na12 wrote:

Nice, but where's the config? tongue Mind sharing the stuff for the calendar?

Thanks smile


Got Leenucks? :: Arch: Power in simplicity :: Get Counted! Registered Linux User #392717 :: Blog thingy

Offline

#438 2009-12-14 09:58:07

na12
Member
From: /home/serbia
Registered: 2008-12-23
Posts: 752

Re: conky configs and screenshots!

B wrote:
na12 wrote:

Nice, but where's the config? tongue Mind sharing the stuff for the calendar?

Thanks smile

Done

Offline

#439 2009-12-14 12:08:16

.:B:.
Forum Fellow
Registered: 2006-11-26
Posts: 5,819
Website

Re: conky configs and screenshots!

Thanks smile


Got Leenucks? :: Arch: Power in simplicity :: Get Counted! Registered Linux User #392717 :: Blog thingy

Offline

#440 2009-12-14 18:32:33

securitybreach
Member
From: In front of my computers
Registered: 2007-11-18
Posts: 416
Website

Re: conky configs and screenshots!

na12 wrote:
securitybreach wrote:
na12 wrote:

Very nice wallpaper, got a link?

THanks

http://www.gnome-look.org/content/show. … ent=117010

Awesome!!!! Thanks a lot.

Thanks


"Every normal man must be tempted at times to spit upon his hands, hoist the black flag, and begin slitting throats." -- H.L. Mencken
Website      Configs
Forum Admin: Bruno's All Things Linux   
securitybreach<a>archlinux.us

Offline

#441 2009-12-14 21:15:31

rent0n
Member
From: Italy
Registered: 2009-10-29
Posts: 457
Website

Re: conky configs and screenshots!

Here are mine big_smile

My lateral .conkyrc
My_lateral__conkyrc_by_rent0n86.png

My horizontal .conkyrc:
My_horizontal__conkyrc_by_rent0n86.jpg

Click on the images to download the .conkyrc code!

[Well shots are quite old...I was still using Xubuntu! tongue]


rent0n@deviantART | rent0n@bitbucket | rent0n@identi.ca | LRU #337812
aspire: Acer Aspire 5920 Arch Linux x86_64 | beetle: Gericom Beetle G733 Arch Linux i686

Offline

#442 2009-12-15 15:14:41

cahr_g
Member
Registered: 2009-09-24
Posts: 35

Re: conky configs and screenshots!

my first conky config ever
screenshotjs.th.png

Last edited by cahr_g (2009-12-15 15:15:06)

Offline

#443 2009-12-19 11:42:10

toketin
Member
From: Belluno (Italy)
Registered: 2007-04-17
Posts: 326

Re: conky configs and screenshots!

cahr_g wrote:

cool can you paste your .conkyrc please? Thanks

Offline

#444 2010-01-09 17:42:50

joe74
Member
From: Nicaragua
Registered: 2009-12-26
Posts: 20

Re: conky configs and screenshots!

My old conkyrc (a year by now using it):

# --- Window Layout & Options --- #
own_window yes
own_window_colour brown
own_window_transparent yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
use_spacer false
use_xft yes
alignment top_center
gap_x 0
gap_y 30

# --- MPD conf
mpd_host ibmx40
mpd_port 6600

# --- Colours, Sizes, Fonts & Margins --- #
update_interval 1.0
minimum_size 1024 0
stippled_borders 3
border_margin 10
border_width 10
default_color 8f8f8f

# --- Text --- #
draw_outline no
draw_borders no
font MgOpenModata:size=8
uppercase no
draw_shades yes



TEXT

${alignc}${color grey}UT:${color red} ${time %s}${color grey} ~ ${color 6795ae}${time %l:%M %p} ${color grey} | ${color grey}Uptime:${color 6795ae} $uptime ${color grey} | ${color grey}CPU:${color red} $cpu% ${color grey} | ${color grey}RAM:${color 6795ae}$mem/$memmax ${color grey} | Swap:${color 6795ae} $swap/$swapmax ${color grey} | HDD:${color 6795ae} ${fs_used /bin/bash}/${fs_size /bin/bash} ${color grey} | Down:${color 6795ae}${downspeed eth0} k/s ${totaldown eth0} ${color grey} | Up:${color 6795ae} ${upspeed eth0} k/s ${totalup eth0}

${alignc}${color grey}ncmpc++ now playing... ${color #2299cc}$mpd_smart ${color white}${color #2299cc} ${color white}Vol: ${color #2299cc}$mpd_vol ${color white}

Screenshot:
http://dl.dropbox.com/u/971466/screenshots/conky26.jpg

Offline

#445 2010-01-23 10:01:31

sen
Member
From: .de
Registered: 2007-02-18
Posts: 153
Website

Re: conky configs and screenshots!

Conky___NightDrive_by_sen7.png

Offline

#446 2010-01-23 10:24:32

teh
Member
From: Tijuana, Mexico
Registered: 2009-07-07
Posts: 374
Website

Re: conky configs and screenshots!

Very impressive.

Best conky config i've ever seen.


arst

Offline

#447 2010-01-23 15:18:56

Bruce_M
Member
From: Buenos Aires, Arg
Registered: 2009-09-21
Posts: 27
Website

Re: conky configs and screenshots!

@ sen

That's 6 stars on a 5 star scale!

Have a nice day.
Bruse


Architecturally speaking in every arch there is a keystone!
In ARCHlinux it's KISS - = Keeping It Supported Stone = -
Does that make ARCH the Keystone of Linux?

Offline

#448 2010-01-23 22:18:53

sen
Member
From: .de
Registered: 2007-02-18
Posts: 153
Website

Re: conky configs and screenshots!

Thank you very much! smile

Offline

#449 2010-01-23 22:39:03

Daisuke_Aramaki
Member
From: ++49/711
Registered: 2008-10-06
Posts: 651
Website

Re: conky configs and screenshots!

I will say it again. No on else can make conky look this good. I have seen many instances all over the net about people claiming to stretch conky's abilities, but all you end up seeing finally is a completely dirty screen where stats run amok. This one however is so tastefully done, that it is by far the best conky setup ever, period. I don't think anyone can come closer to this.


"You know what I found? Right in the kernel, in the heart of the operating system, I found a developer's comment that said, `Does this belong here?`" -- Simon Lok about Linux kernel in 2005
Reflections on the Strange and the not so Strange
http://skinwalker.wordpress.com

Offline

#450 2010-01-23 23:02:33

Chance
Member
Registered: 2008-12-05
Posts: 99

Re: conky configs and screenshots!

@sen

Amazing conky! I wish i could make that fit into my setup.

Offline

Board footer

Powered by FluxBB