pax_global_header00006660000000000000000000000064141201474440014513gustar00rootroot0000000000000052 comment=92b1761221879bd21ce0c9fdfd55b9b13c74fa6e ansiweather-1.18.0/000077500000000000000000000000001412014744400141145ustar00rootroot00000000000000ansiweather-1.18.0/AUTHORS000066400000000000000000000001461412014744400151650ustar00rootroot00000000000000AnsiWeather is developed by: Frederic Cambus Site: https://www.cambus.net ansiweather-1.18.0/ChangeLog000066400000000000000000000112131412014744400156640ustar00rootroot00000000000000AnsiWeather 1.18.0 (2021-09-14) - Update man page to add the -v option (Thanks Takayuki Hirota) - Add support for displaying feels like temperature (Thanks Andrew Abdalian) - Use command -v instead of which (Thanks er0k) - Add SPDX short license identifier in source file AnsiWeather 1.17.0 (2020-06-16) - Use cut instead of awk for parsing the config file, allowing to use the colon character as part of the config value (Thanks Niklas Lindgren) AnsiWeather 1.16.0 (2020-01-21) - Switch default delimiter from "=>" to ":" and stop prepending space - Do not hardcode colon in forecast mode, use $delimiter instead AnsiWeather 1.15.0 (2019-11-14) - Use HTTPS for performing weather API calls AnsiWeather 1.14.0 (2019-08-13) - Add final dots for options descriptions in ansiweather.1 - Stop mentioning that ftp can be used on Mac OS X, as it's apparently not the case anymore in Mojave - Remove space before percent sign for humidity display - Respect freedesktop/XDG spec for configuration (Thanks Ryan Delaney) AnsiWeather 1.13.0 (2018-07-16) - Do not attempt to fetch UV data when in forecast mode AnsiWeather 1.12.0 (2018-06-29) - Replace spaces in city names by '%20', underscores are not accepted anymore by the OpenWeatherMap API - Add support for fetching and displaying UV index - Document the UV index feature and related flags and options AnsiWeather 1.11 (2017-06-21) - Unicode symbols display is now off by default - Shorten default greeting text: "Current weather" => "Weather" AnsiWeather 1.10 (2017-02-16) - Add a '-v' option to show version number - Exit with error code when an unknown option is invoked - Make wind direction customizable AnsiWeather 1.09 (2016-10-18) - Allow toggling display of wind, humidity, and pressure data (Thanks John Kaczmarek) - The -h option does not show help anymore, as everything is available in the manpage - Remove extraneous whitespace before daylight data - Rename 'daylight' variable to 'show_daylight' for consistency with the newly introduced options (user configuration files must be updated) - Various documentation and manpage updates and reformatting AnsiWeather 1.08 (2016-07-26) - Use env printf instead of hardcoding printf path - Added a $forecast_text variable allowing to customize forecast text - Relicensed under the BSD 2-Clause license AnsiWeather 1.07 (2016-01-19) - Exit with non-zero return code on failure - Documentation updates - Added a manual page AnsiWeather 1.06 (2015-10-30) - Added support for OpenWeatherMap API keys - Changed curl options from '-s' to '-sf' to fail silently on server errors - Removing auto location helper, user location must now be explicitly set - Changed default city to Rzeszow, Poland - Changing rain and thunderstorm icons default colors to white and yellow - Documentation updates AnsiWeather 1.05 (2015-09-27) - Fixes for numeric translation on NetBSD (Thanks Kamil Rytarowski) - Use xargs printf construct to avoid hardcoding path to external printf command (Thanks Kamil Rytarowski) - Use '/bin/sh' shebang instead of '/usr/bin/env sh' for portability reasons (Thanks Kamil Rytarowski) - Replacing spaces by underscores in location name before calling the weather API - Force bc to always return integers for wind directions (Thanks Lornix) - Documentation updates AnsiWeather 1.04 (2015-09-10) - Added a '-a' option to toggle ANSI colors display - Daylight option in the example configuration file now default to false to match program default - Better formatting for usage display - Documentation updates AnsiWeather 1.03 (2015-09-08) - Removed dependency on Bash, AnsiWeather is now using plain sh - Detect all numeric locations and switching from 'q' to 'id' API query parameter in this case - Do not attempt to convert pressure data to imperial units in forecast mode (Bugfix) - Added a '-h' option to display usage - Parse arguments before setting options (Thanks Lucas Hoffmann) - Documentation updates - Linting and minor fixes AnsiWeather 1.02 (2015-05-09) - Documentation updates - Populated ChangeLog - Allow overriding default config file location using ANSIWEATHERRC environment variable (Thanks Lucas Hoffmann) - Check if 'bc' is installed before starting AnsiWeather 1.01 (2015-03-16) - Add ability to store options in config file (Thanks Aaron Bieber) - Automatic location detection (Thanks Michael Price) - Showing wind direction and speed - Add ability to display upcoming weekly forecast (Thanks Michael Reinhardt) - Add ability to display daylight data (Thanks Roy Hodgman) - Allow custom geolocation server to be set (Thanks Aaron Bieber) - Removed dependency on seq AnsiWeather 1.00 (2013-10-19) - Initial release ansiweather-1.18.0/LICENSE000066400000000000000000000024411412014744400151220ustar00rootroot00000000000000Copyright (c) 2013-2021, Frederic Cambus All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ansiweather-1.18.0/README.md000066400000000000000000000131101412014744400153670ustar00rootroot00000000000000## Description AnsiWeather is a Shell script for displaying the current weather conditions in your terminal, with support for ANSI colors and Unicode symbols. ![AnsiWeather Screenshot][1] Weather data comes from the `OpenWeatherMap` free weather API. ## Requirements AnsiWeather requires the following dependencies: - A command to fetch HTTP data such as FTP, cURL or wget - [jq][2] (lightweight and flexible command-line JSON processor) - [bc][3] (arbitrary precision numeric processing language), for doing float arithmetic ## Installation After cloning the repository, simply invoke the script by typing: ./ansiweather AnsiWeather packages are available for: - [OpenBSD][4] - [NetBSD][5] - [FreeBSD][6] - [Debian][7] - [Ubuntu][8] - [Homebrew][9] ## Usage ### Synopsis ansiweather [-l location] [-u system] [-f days] [-F] [-a value] [-s value] [-k key] [-i value] [-w value] [-h value] [-H value] [-p value] [-d value] [-v] ### Options -l location Specify location. -u system Specify unit system to use ( metric or imperial ). -f days Toggle forecast mode for the specified number of upcoming days. -F Toggle forecast mode for the next five days. -a value Toggle ANSI colors display ( true or false ). -s value Toggle symbols display ( true or false ). -k key Specify OpenWeatherMap API key. -i value Toggle UV Index display ( true or false ). -w value Toggle wind data display ( true or false ). -h value Toggle humidity data display ( true or false ). -H value Toggle Feels like display ( true or false ). -p value Toggle pressure data display ( true or false ). -d value Toggle daylight data display ( true or false ). -v Display version. ### Examples Display forecast using metric units for the next five days (showing symbols and daylight data) for Rzeszow, Poland: ansiweather -l Rzeszow,PL -u metric -s true -f 5 -d true ## Configuration The default config file is ~/.ansiweatherrc. The environment variable ANSIWEATHERRC can be set to override this. The following configuration options (detailed below) are available and should be set according to your location and preferences. Example: `~/.ansiweatherrc` location:Rzeszow,PL fetch_cmd:ftp -V -o - units:metric show_daylight:true The file `ansiweatherrc.example` contains all available configuration variables. ### Location Location format is `city,CC` where `CC` is a two-letter ISO 3166-1 alpha-2 country code. A list of country codes is available [here][10]. Alternatively, it's also possible to specify locations by their ID, a city list is available [here][11]. In case no location is specified, AnsiWeather will fallback to the default location. Example: `Rzeszow,PL` location:Rzeszow,PL ### Fetch Command Various tools can be used to fetch data: `curl`, `wget`, `ftp`. Please note that `ftp` flags and options might differ among implementations and versions, and the example provided here is known to work only on OpenBSD and NetBSD. Example: `curl -sf` fetch_cmd:curl -sf Example: `wget -qO-` fetch_cmd:wget -qO- Example: `ftp -V -o -` fetch_cmd:ftp -V -o - Default: `curl -sf` ### System of Units Both `metric` and `imperial` systems are supported. units:metric Default: `metric` ### Display ANSI sequences Toggle ANSI sequences display. Value can be either `true` (requires an ANSI capable display) or `false`. ansi:true Default: `true` ### Display symbols Toggle Unicode symbols display. Value can be either `true` (requires a Unicode capable display) or `false`. symbols:true Default: `false` Symbols can be configured or replaced by custom text using the following configuration variables: `sun`, `moon`, `clouds`, `rain`, `fog`, `mist`, `haze`, `snow`, `thunderstorm`. ### Display forecast Show upcoming forecast for the next `N` days (for 0 <= N <= 7). `0` will show standard output. forecast:5 Default: `0` ### Display wind / humidity / pressure Toggle UV Index, wind, humidity, and/or pressure display. Values can be either `true` or `false`. show_uvi:true show_wind:true show_humidity:true show_pressure:true Default: `true` ### Display sunrise / sunset Toggle daylight display. Value can be either `true` or `false`. show_daylight:false Default: `false` ### Date and Time format Configure date and time format display. See Unix date formatting docs for details. dateformat:%a %b %d Default: `%a %b %d` timeformat:%b %d %r Default: `%b %d %r` ### OpenWeatherMap API key Specify an OpenWeatherMap API key. By default AnsiWeather uses its own key, but users can optionally get their own one by creating a free [OpenWeatherMap account][12]. api_key:85a4e3c55b73909f42c6a23ec35b7147 ## License AnsiWeather is released under the BSD 2-Clause license. See `LICENSE` file for details. ## Author AnsiWeather is developed by Frederic Cambus. - Site: https://www.cambus.net ## Resources GitHub: https://github.com/fcambus/ansiweather [1]: https://www.cambus.net/files/ansiweather/ansiweather.png [2]: https://stedolan.github.io/jq/ [3]: https://www.gnu.org/software/bc/ [4]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/astro/ansiweather [5]: https://pkgsrc.se/misc/ansiweather [6]: https://www.freshports.org/misc/ansiweather [7]: https://packages.debian.org/search?keywords=ansiweather [8]: https://packages.ubuntu.com/search?keywords=ansiweather [9]: https://formulae.brew.sh/formula/ansiweather [10]: https://www.statdns.com/cctlds/ [11]: https://bulk.openweathermap.org/sample/ [12]: https://home.openweathermap.org/users/sign_up ansiweather-1.18.0/ansiweather000077500000000000000000000254121412014744400163600ustar00rootroot00000000000000#!/bin/sh # # AnsiWeather 1.18.0 # Copyright (c) 2013-2021, Frederic Cambus # https://github.com/fcambus/ansiweather # # Created: 2013-08-29 # Last Updated: 2021-09-14 # # AnsiWeather is released under the BSD 2-Clause license # See LICENSE file for details # # SPDX-License-Identifier: BSD-2-Clause # ###[ Configuration options ]################################################### LC_ALL=C; export LC_ALL if [ -n "$ANSIWEATHERRC" ] ; then config_file="$ANSIWEATHERRC" elif [ -s "$XDG_CONFIG_HOME"/ansiweather/config ] ; then config_file="$XDG_CONFIG_HOME"/ansiweather/config elif [ -s "$HOME"/.config/ansiweather/config ] ; then config_file="$HOME"/.config/ansiweather/config else config_file=~/.ansiweatherrc fi get_config() { ret="" if [ -f "$config_file" ] then ret=$(grep "^$1:" "$config_file" | cut -d: -f2-) fi if [ "X$ret" = "X" ] then return 1 else echo "$ret" fi } fetch_cmd=$(get_config "fetch_cmd" || echo "curl -sf") ###[ Parse the command line ]################################################## # Get config options from command line flags while getopts l:u:f:FH:a:s:k:i:w:h:p:d:v option do case "${option}" in l) location=${OPTARG};; u) units=${OPTARG};; f) forecast=${OPTARG};; F) forecast="5";; H) show_feels_like=${OPTARG};; a) ansi=${OPTARG};; s) symbols=${OPTARG};; k) api_key=${OPTARG};; i) show_uvi=${OPTARG};; w) show_wind=${OPTARG};; h) show_humidity=${OPTARG};; p) show_pressure=${OPTARG};; d) show_daylight=${OPTARG};; v) echo "AnsiWeather 1.18.0" && exit 0;; \?) exit 64;; # EX_USAGE esac done ###[ Check if bc and jq are installed ]######################################## jqpath=$(command -v jq) if [ "$jqpath" = "" ] then echo "ERROR: Cannot find jq binary" exit 69 # EX_UNAVAILABLE fi bcpath=$(command -v bc) if [ "$bcpath" = "" ] then echo "ERROR: Cannot find bc binary" exit 69 # EX_UNAVAILABLE fi ###[ Set options that are not set from command line ]########################## # OpenWeatherMap API key [ -z "$api_key" ] && api_key=$(get_config "api_key" || echo "85a4e3c55b73909f42c6a23ec35b7147") # Location: example "Rzeszow,PL" [ -z "$location" ] && location=$(get_config "location" || echo "Rzeszow,PL") # System of Units: "metric" or "imperial" [ -z "$units" ] && units=$(get_config "units" || echo "metric") # Show forecast: How many days, example "5". "0" is standard output [ -z "$forecast" ] && forecast=$(get_config "forecast" || echo 0) # Display ANSI colors: "true" or "false" [ -z "$ansi" ] && ansi=$(get_config "ansi" || echo true) # Display symbols: "true" or "false" (requires a Unicode capable display) [ -z "$symbols" ] && symbols=$(get_config "symbols" || echo false) # Show feels-like: "true" or "false" [ -z "$show_feels_like" ] && show_feels_like=$(get_config "show_feels_like" || echo false) # Show UVI: "true" or "false" [ -z "$show_uvi" ] && show_uvi=$(get_config "show_uvi" || echo true) # Show wind: "true" or "false" [ -z "$show_wind" ] && show_wind=$(get_config "show_wind" || echo true) # Show humidity: "true" or "false" [ -z "$show_humidity" ] && show_humidity=$(get_config "show_humidity" || echo true) # Show pressure: "true" or "false" [ -z "$show_pressure" ] && show_pressure=$(get_config "show_pressure" || echo true) # Show daylight: "true" or "false" [ -z "$show_daylight" ] && show_daylight=$(get_config "show_daylight" || echo false) dateformat=$(get_config "dateformat" || echo "%a %b %d") timeformat=$(get_config "timeformat" || echo "%b %d %r") ###[ Colors and characters ]################################################### background=$(get_config "background" || echo "\033[44m") text=$(get_config "text" || echo "\033[36;1m") data=$(get_config "data" || echo "\033[33;1m") delimiter=$(get_config "delimiter" || echo "\033[35m:") dashes=$(get_config "dashes" || echo "\033[34m-") ###[ Text Labels ]############################################################# greeting_text=$(get_config "greeting_text" || echo "Weather in") wind_text=$(get_config "wind_text" || echo "Wind") feels_like_text=$(get_config "feels_like_text" || echo "Feels like") humidity_text=$(get_config "humidity_text" || echo "Humidity") pressure_text=$(get_config "pressure_text" || echo "Pressure") sunrise_text=$(get_config "sunrise_text" || echo "Sunrise") sunset_text=$(get_config "sunset_text" || echo "Sunset") forecast_text=$(get_config "forecast_text" || echo "forecast") ###[ Unicode Symbols for icons ]############################################### sun=$(get_config "sun" || echo "\033[33;1m\xe2\x98\x80") moon=$(get_config "moon" || echo "\033[36m\xe2\x98\xbd") clouds=$(get_config "clouds" || echo "\033[37;1m\xe2\x98\x81") rain=$(get_config "rain" || echo "\033[37;1m\xe2\x98\x94") fog=$(get_config "fog" || echo "\033[37;1m\xe2\x96\x92") mist=$(get_config "mist" || echo "\033[34m\xe2\x96\x91") haze=$(get_config "haze" || echo "\033[33m\xe2\x96\x91") snow=$(get_config "snow" || echo "\033[37;1m\xe2\x9d\x84") thunderstorm=$(get_config "thunderstorm" || echo "\033[33;1m\xe2\x9a\xa1") ###[ Fetch Weather data ]###################################################### api_cmd=$([ "$forecast" != 0 ] && echo "forecast/daily" || echo "weather") if [ "$location" -gt 0 ] 2> /dev/null then # Location is all numeric weather=$($fetch_cmd "https://api.openweathermap.org/data/2.5/$api_cmd?id=$location&units=$units&appid=$api_key") else # Location is a string location=$(echo "$location" | sed "s/ /%20/g") weather=$($fetch_cmd "https://api.openweathermap.org/data/2.5/$api_cmd?q=$location&units=$units&appid=$api_key") fi if [ -z "$weather" ] then echo "ERROR: Cannot fetch weather data" exit 75 # EX_TEMPFAIL fi status_code=$(echo "$weather" | jq -r '.cod' 2>/dev/null) if [ "$status_code" != 200 ] then echo "ERROR: Cannot fetch weather data for the given location" exit 69 # EX_UNAVAILABLE fi ###[ Fetch UV data ]########################################################### if [ "$show_uvi" = true ] && [ "$forecast" = 0 ] then lat=$(echo "$weather" | jq -r '.coord.lat') lon=$(echo "$weather" | jq -r '.coord.lon') uvdata=$($fetch_cmd "https://api.openweathermap.org/data/2.5/uvi?lat=$lat&lon=$lon&appid=$api_key") uvi=$(echo "$uvdata" | jq -r '.value') fi ###[ Process Weather data ]#################################################### epoch_to_date() { if date -j -r "$1" +"%a %b %d" > /dev/null 2>&1; then # BSD ret=$(date -j -r "$1" +"$dateformat") else # GNU ret=$(date -d "@$1" +"$dateformat") fi echo "$ret" } if [ "$forecast" != 0 ] then city=$(echo "$weather" | jq -r '.city.name') flength=$(echo "$weather" | jq '.list | length') forecast=$([ "$forecast" -gt "$flength" ] && echo "$flength" || echo "$forecast") else city=$(echo "$weather" | jq -r '.name') temperature=$(echo "$weather" | jq '.main.temp' | xargs printf "%.0f") humidity=$(echo "$weather" | jq '.main.humidity') feels_like=$(echo "$weather" | jq '.main.feels_like' | xargs printf "%.0f") pressure=$(echo "$weather" | jq '.main.pressure') sky=$(echo "$weather" | jq -r '.weather[0].main') sunrise=$(echo "$weather" | jq '.sys.sunrise') sunset=$(echo "$weather" | jq '.sys.sunset') wind=$(echo "$weather" | jq '.wind.speed') azimuth=$(echo "$weather" | jq '.wind.deg') fi ###[ Process Wind data ]####################################################### set -- $(get_config "wind_directions" || echo "N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW") if [ "$forecast" = 0 ] then shift "$(echo "scale=0; ($azimuth + 11.25)/22.5 % 16" | bc)" direction=$1 fi ###[ Process Sunrise and Sunset data ]######################################### epoch_to_time() { if date -j -r "$1" +"%r" > /dev/null 2>&1; then # BSD ret=$(date -j -r "$1" +"$timeformat") else # GNU ret=$(date -d "@$1" +"$timeformat") fi echo "$ret" } if [ "$forecast" = 0 ] then if [ -n "$sunrise" ] then sunrise_time=$(epoch_to_time "$sunrise") fi if [ -n "$sunset" ] then sunset_time=$(epoch_to_time "$sunset") fi fi ###[ Set the period ]########################################################## now=$(date +%s) if [ "$forecast" != 0 ] then period="none" else if [ -z "$sunset" ] || [ -z "$sunrise" ] then period="day" elif [ "$now" -ge "$sunset" ] || [ "$now" -le "$sunrise" ] then period="night" else period="day" fi fi ###[ Set the scale ]########################################################### case $units in metric) scale="°C" speed_unit="m/s" pressure_unit="hPa" pressure=$(echo "$pressure" | xargs printf "%.0f") ;; imperial) scale="°F" speed_unit="mph" pressure_unit="inHg" if [ "$forecast" = 0 ] then pressure=$(echo "$pressure*0.0295" | bc | xargs printf "%.2f") fi ;; esac ###[ Set icons ]############################################################### get_icon() { case $1 in Clear) if [ $period = "night" ] then echo "$moon " else echo "$sun " fi ;; Clouds) echo "$clouds " ;; Rain) echo "$rain " ;; Fog) echo "$fog " ;; Mist) echo "$mist " ;; Haze) echo "$haze " ;; Snow) echo "$snow " ;; Thunderstorm) echo "$thunderstorm " ;; esac } ###[ Display current Weather ]################################################# if [ "$forecast" != 0 ] then output="$background$text $city $forecast_text$text$delimiter " i=0 while [ $i -lt "$forecast" ] do day=$(echo "$weather" | jq ".list[$i]") date=$(epoch_to_date "$(echo "$day" | jq -r '.dt')") low=$(echo "$day" | jq -r '.temp.min' | xargs printf "%.0f") high=$(echo "$day" | jq -r '.temp.max' | xargs printf "%.0f") icon="" if [ "$symbols" = true ] then sky=$(echo "$day" | jq -r '.weather[0].main') icon=$(get_icon "$sky") fi output="$output$text$date$delimiter $data$high$text/$data$low $scale $icon" if [ $i -lt $((forecast-1)) ] then output="$output$dashes " fi i=$((i + 1)) done else if [ "$symbols" = true ] then icon="$(get_icon "$sky")" fi output="$background$text $greeting_text $city$delimiter$data $temperature $scale $icon" if [ "$show_feels_like" = true ] then output="$output$dashes$text $feels_like_text$delimiter$data $feels_like $scale " fi if [ "$show_uvi" = true ] then output="$output$dashes$text UVI$delimiter$data $uvi " fi if [ "$show_wind" = true ] then output="$output$dashes$text $wind_text$delimiter$data $wind $speed_unit $direction " fi if [ "$show_humidity" = true ] then output="$output$dashes$text $humidity_text$delimiter$data $humidity%% " fi if [ "$show_pressure" = true ] then output="$output$dashes$text $pressure_text$delimiter$data $pressure $pressure_unit " fi if [ "$show_daylight" = true ] then output="$output$dashes$text $sunrise_text$delimiter$data $sunrise_time $dashes$text $sunset_text$delimiter$data $sunset_time " fi fi if [ "$ansi" = true ] then env printf "$output\033[0m\n" else env printf "$output\n" | sed "s/$(printf '\033')\[[0-9;]*m//g" fi ansiweather-1.18.0/ansiweather.1000066400000000000000000000062231412014744400165130ustar00rootroot00000000000000.\" .\" Copyright (c) 2013-2021, Frederic Cambus .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions are met: .\" .\" * Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" .\" * Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" .\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd $Mdocdate: September 14 2021 $ .Dt ANSIWEATHER 1 .Os .Sh NAME .Nm ansiweather .Nd weather in terminal, with ANSI colors and Unicode symbols .Sh SYNOPSIS .Nm .Op Fl l Ar location .Op Fl u Ar system .Op Fl f Ar days .Op Fl F .Op Fl a Ar value .Op Fl s Ar value .Op Fl k Ar key .Op Fl i Ar value .Op Fl w Ar value .Op Fl h Ar value .Op Fl H Ar value .Op Fl p Ar value .Op Fl d Ar value .Op Fl v .Sh DESCRIPTION .Nm is a shell script for displaying the current weather conditions in a terminal, with support for ANSI colors and Unicode symbols. .Pp Weather data comes from the OpenWeatherMap free weather API. .Pp The options are as follows: .Bl -tag -width Ds .It Fl l Ar location Specify location. .It Fl u Ar system Specify unit system to use ( .Ar metric or .Ar imperial ). .It Fl f Ar days Toggle forecast mode for the specified number of upcoming days. .It Fl F Toggle forecast mode for the next five days. .It Fl a Ar value Toggle ANSI colors display ( .Ar true or .Ar false ). .It Fl s Ar value Toggle symbols display ( .Ar true or .Ar false ). .It Fl k Ar key Specify OpenWeatherMap API key. .It Fl i Ar value Toggle UV Index display ( .Ar true or .Ar false ). .It Fl w Ar value Toggle wind data display ( .Ar true or .Ar false ). .It Fl h Ar value Toggle humidity data display ( .Ar true or .Ar false ). .It Fl H Ar value Toggle Feels like display ( .Ar true or .Ar false ). .It Fl p Ar value Toggle pressure data display ( .Ar true or .Ar false ). .It Fl d Ar value Toggle daylight data display ( .Ar true or .Ar false ). .It Fl v Display version. .El .Sh EXAMPLES Display forecast using metric units for the next five days (showing symbols and daylight data) for Rzeszow, Poland: .Pp ansiweather -l Rzeszow,PL -u metric -s true -f 5 -d true .Sh AUTHORS .Nm was written by .An Frederic Cambus . ansiweather-1.18.0/ansiweather.plugin.zsh000077500000000000000000000000421412014744400204500ustar00rootroot00000000000000export PATH=${PATH}:$(dirname $0) ansiweather-1.18.0/ansiweatherrc.example000066400000000000000000000016311412014744400203310ustar00rootroot00000000000000# .ansiweatherrc example showing all available options api_key:85a4e3c55b73909f42c6a23ec35b7147 fetch_cmd:curl -sf location:Rzeszow,PL units:metric forecast:0 ansi:true symbols:false show_feels_like:false show_uvi:true show_wind:true show_humidity:true show_pressure:true show_daylight:false dateformat:%a %b %d timeformat:%b %d %r # Text and Colors background:\033[44m text:\033[36;1m data:\033[33;1m delimiter:\033[35m: dashes:\033[34m- forecast_text:forecast greeting_text:Weather in humidity_text:Humidity pressure_text:Pressure sunrise_text:Sunrise sunset_text:Sunset wind_directions:N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW wind_text:Wind # Icons sun:\033[33;1m\xe2\x98\x80 moon:\033[36m\xe2\x98\xbd clouds:\033[37;1m\xe2\x98\x81 rain:\033[37;1m\xe2\x98\x94 fog:\033[37;1m\xe2\x96\x92 mist:\033[34m\xe2\x96\x91 haze:\033[33m\xe2\x96\x91 snow:\033[37;1m\xe2\x9d\x84 thunderstorm:\033[33;1m\xe2\x9a\xa1 ansiweather-1.18.0/screenshot/000077500000000000000000000000001412014744400162715ustar00rootroot00000000000000ansiweather-1.18.0/screenshot/ansiweather.png000066400000000000000000000220321412014744400213100ustar00rootroot00000000000000PNG  IHDR*LbKGD pHYs  tIME ;-Si IDATxy\TهUAQ qODcҸ'i}5MRk6M&5K߾MMLTLb6{D+ 0lD5|?~wsysKM<9`0 ` `0 3 `01< p U=, {X5Hm&&}ŀ{ʪ۳*jfo$=]}"qp0缴:~;nP<ѓj_̬OyBVy1c 9*ĸU:ّe}TF3׍K(O1`tX+M#?o7[I<(Ϳ/lH%7Q-,1* U?"AcQ?Qyp4鱓?6n`2 lr'UߥbWf3WCf__0^_WRJ, |wQJH壛CB)}*;RxꅼyMzu|BlW}}AąLT;zSٸd_/M-z]o8*RyY=2MIu]uUID{i]ޙ^c1=/#IoKod ӿYl=¤4}^E)5+9y[%_ߦ_r?,R|gdsn(cmNZJ~>2.{kFs)MG`T<"R{?`*j1 eV#(MPJIsW/'12ӽ|[SCkf]3Lf@iَ7 Ws j]ִrƪoCM66c2ճ"N*oli;蝩%5˺/|&" nѫn q5wXPUkiȜW_V 4PBrޗ /PI@_T;,w?=&^.^!@C-B?0fslшIwZѽw[D,8qd #2 n4N;? \5NܓX?E=33 *!/A -KtU셺9REeG)jK5S*A݉#(h'=Q+pMz3/r쬨 0Oqe!mC#s?;r(HX8Y^WFο\U*O Sk ֜NW9XG(;40B?o9-к}g?]@G@S8'T|zlvmդG?*P,lĕɆ R \*uY|`vWPk(ivL9qn%ۆFpTPؖW.u(gqμ}ci~:(bI% msp^tsnȬd3oK)o{9%{?+]4a/:z`_wD}kۜ7Dqgo\@qXW^,{ȍ"h/-%g(cKɰ=_ ;IL>1:-,Z}I8%r@fD0L+_j]7r@?!Q<JSnK%^rŇWM;d먴Fo0?1dNP|6@ުa7sǥz>-XoaM}/9`qb %B@` @uO[^h {euc(;T /MIe߫?|wY;(FPZ>H Ra<{D;A?ouƍ%ı> N)bMKe\V\edQ~[ %\Q%[ؘ H`};[L1t؈97\nF1p?(`+GisJ`[%0-{z` OZ!iYEvv'^Zh^@W^;[}~K%윯x%սeW ZNkc#<X'k]Gk3G }Tj2wRMľ?-~ؚ͍l'[!0yʹM)+Nz*.UG4`25dT)i1複[8j Weabz} g9,M SVW^6^$ Hd{Zv[4\50![+τ*K^.uJs:BΫ'r^mv]; M'6p^ӱc_Ͱ -o],j{%siHS)7v]3Wh_x\÷oPJ*<`/We/ZTӃ^C(@)qPkgzdSK*Q>k:ڽѫ59D$Z˯ tXs(?-sYH*sWWeo_.z|SafjpR;)?8J=5%j[.B㒧QfD%Jo}w|胺3:3}bٖ_MW{>g꬗tmB=`٘tb4:t^VXT[#y`*g/V}NNoBub`RG!4-$}o;>(]gc"x+fA~Q  1k/j:#;ʇ6yIH6S_SƟe<2lT_<۹aDJQ'Wa2jZ"6bdscd5-,jɁOW";ȫ/*Q3bT 9p`l+{VM(%7ZnJE&)%؎z2Sؐ#ܙ3+fC4 .! R_4 pĄ1*KpdVWKpRBvT'`-qxپLPG‹u~:s`ƴ*n;oÂQEDQRcgj2Q@䈁~Fs($o-/POչs#gtrUףzbݯt@88!\Z mγvk]GyT~ё8y3/X [.׹|Ay֙'d)l^:B3WR<դ mٱragȾw #҆`D#- %ELZ͙s#u*XsN{4 N'\ y%]_hXE9?zTsF_3#z*hZ GOCA Z~u+x-Õo YŦPsӏMǟJ&K\]kO|EN-@:%tDnSr]:dE97abCzz3ʟH)! yO|G `/'6}>YCx7;T*/_Y4-ZFZW챵}L,.5 1!ٔObi(x ՝{bMrBKzCy9>Kr5c\xhchpzM|g ] WPQIWC?{}f8tpM>s-wPj8j\y՛ʜ !jw|4򍹐Lԑެgnb; Ć"V8l `1\jn<[9wrFW^FhDa8w[^o**hf|#2nurZ *?OdaPh<,lP=͡4C[Nl,J]>}7;x8aR2oԂHT(ef7{ޮ=8[͓)™ Fa ix'+%DҠlOj T+6^ 2dM2BJk9͹Ɂf溜= sܩ{/tc)fIgV]66#/TcQx+sP{x\^8EwK3h{ę/')9_ܼP䝦݊}\ΧdRkbʜ*fNvbڎBvFo^Mv̊9udil蘫o~Rrvpk箛/j{#n}h:ck orѹ$+)X xEׂT)dzWRd )xO}c(Ǻ_r*0-e=TR L}XGiWShq*:w0ɂ3:p|$!'5 3 y6 @}>q%)11E%yY}ÁO7?p`=ӎ%8toUy%;k=׺٥?:dHt~ 9(5,,8{旽dX% /Z+ <)5f3jJ9{Wt*@׊ @u];kD?؇级VKQ3c>C-|)r< ㋟(87%_qܿi;Gp2z㓻WP&WCmՍƋe/_]/vQ2VD!xNƔWwW( cŗ_9Z{(e_~YF~k>IWS}';vzI51>x~6rV%_~^֢*C Fb}ze7bqW|:= &j@Es`4 ] Qm/ ꍁЀcFscцj}f _^ug,b~2TvNߑ0T\p_BpyMa:I גɵ?qϨ=ZxS_%{tunٵ?j<}eosƨe8uYb-53mx8b?AQzhhFX &iļokR T^.u*=C]{%;>pӜQoҗg=%l+[Ϊ/ojZI6;%( G[ ar:JjybW{@YYVmʺ!+6++r?CD.cp: +KD\Vx NsaͭTZZ4\˹ à4(Ua*ڙrÔ 8ꡜ;K )yeR+ rFa"󤽦  2ʐWx^>Pvˤ9RW :Кy-řT ,Ьڤ2k(\P5,tȺB'Ty{XLQH|NUN8riOo|7BaGUePmU [ KI ZQsl5*Z]uX`5O@/?>׳kr5p|!sƼvUh6\MLɍ24hׄ))8P.m\,Mv6LpҢ sA t[㺵oM+ h;#t5[[3UҞ {ek,d!)jR9ԳW&P@|WG+bg9[jS {kOIDATԗhK7XpV*%5G_+4no6N[ʺN>I'E=;ߌi&yCVts4cfeFX1K kd;J'72W>_|$ 􎏹p"!YeR|Rw(UyɞӺCc8bujѝ#ѓjgn;cf/NЏzJ ~;Adv"g0 μO L9I) 4X(PL$  `4AEE510w< p X `A B] &,`0 `0 `0 `0 `0 `0 nɋS `0>n `0 q7_ܻϧ ѨC' N^`?`0 q@pQ>z(%8y7-t7`0 0ه#xH^5G|Xa210 `0w exoۿL `0 DF^޼DP `0 { |j#Cw`a0 `0_,?}¯WT2e(f1& `0 C|x(Zuۭ`0 qWcg}$[C`a0 `0_HR-&QU~& `0 (‚@xTv/I`0 Xjw_`r`0 `0&ֿHerg2a0 `0*ny&`0 `0 `0 `0 wJIENDB`