powerline-owmweather icon indicating copy to clipboard operation
powerline-owmweather copied to clipboard

A Powerline segment for fetching and showing the weather in the current location

PyPI Downloads

powerline-owmweather 🌦

Example 1

A light-hearted Powerline segment for fetching and showing the weather in the current location (either by IP geolocation or by setting a location, see Configuration below).

Keep in mind that powerline_owmweather is in early, rapid development stage so its API/configuration format may change.

  • Motivation
  • Requirements
  • Installation
  • Activiation
  • Configuration and Customization
  • Changelog
  • TODO

Motivation

The built-in weather segment is using Yahoo Weather API which is no longer available so I decided to create an almost drop-in replacement using OpenWeather.

Requirements

Installation

pip install powerline-owmweather

Activiation

The very minimum required to activate the segment is to add the following to your theme JSON:

{
   "function": "powerline_owmweather.weather",
   "args": {
       "openweathermap_api_key": API_KEY
   }
}

and the following to your colorscheme JSON (the colors can be customized):

"groups": {
      ...,
      "owmweather": {
          "fg": "gray9",
          "bg": "gray2",
          "attrs": []
    }
}

Configuration and Customization

The following optional args are available:

Argument Type Description Default
condition_as_icon boolean If true, condition will be displayed as an icon (if one of known conditions).
If false condition will be displayed as a string
true
humidity_format string A Python format string that accepts humidity as an argument "{humidity:.0f}"
location_query string Location in format CITY, 2-LETTERS-COUNTRY-CODE Retrived using IP geolocation
post_condition string String to append after condition ""
post_humidity string String to append after humidity ""
post_location string String to append after location ""
post_temp string String to append after temp ""
pre_condition string String to prepend before condition " "
pre_humidity string String to prepend before humidity " "
pre_location string String to prepend before location " "
pre_temp string String to prepend before temp " "
show string Comma-separated string specifies what data to show.
Can include "condition", "humidity", "location", "temp".
See Highlight Groups
"temp"
temp_format string A Python format string that accepts temp as an argument "{temp:.0f}"
ttl_in_minutes integer Time in minutes for which location and weather are cached.
Warning: The lower the value the slower your terminal will be
60
units string Temperature units.
Should be one of "C", "F", "K"
"C"

Highlight Groups

Every data in "show" is displayed in its own segment with its own highlight group, meaning it can be styled independently in your colorscheme JSON. Each highlight group is composed of owmweather_{data_name}, for example:

"owmweather_condition": {
    "fg": "gray6",
    "bg": "gray3",
    "attrs": []
},
"owmweather_temp": {
    "fg": "gray9",
    "bg": "gray2",
    "attrs": []
}

"pre_{data_name}" and "post_{data_name}" can also be customized using "owmweather_pre_{data_name}" and "owmweather_post_{data_name}" highlight groups.

If a specific highlight group is not defined then the style of "owmweather" group will be used.

Changelog

0.4 - Nov. 3 2020

  • '%' is no longer in the default humidity_format
  • Added pre_data and post_data arguments and highlight groups
  • Added ability to show location

0.3 - Nov. 1 2020

  • Added ability to display humidity

0.2 - Nov. 1 2020

  • Added ability to display temperature, condition
  • Added ability to display condition as either icons or strings

0.1.1 - Oct. 31 2020

  • Fixed a bug that prevented setting a custom ttl_in_minutes
  • Added debug logs

0.1.0 - Oct. 31 2020

Initial release

TODO

  • [x] Support icons
  • [x] Support weather description ("cloudy", "windy", etc)
  • [ ] Support configurable information to display:
    • [x] Temperature
    • [x] Condition
    • [ ] Wind speed/direction
    • [x] Humidity
    • [ ] Pressure