minimal neofetch-style weather cli
stormy
Minimal, customizable, and neofetch-like weather CLI inspired by rainy, written in Go
Featured on
Motivation
stormy’s idea, structure, and design are based off rainy, but it’s written in Go instead of Python.
I built this because I really liked the concept of a Neofetch-style weather CLI. The simplicity and visual appeal of rainy instantly clicked with me, and I wanted to recreate that experience in Go — partly for my own satisfaction and partly because I enjoy building clean CLI tools.
Features
- Multiple weather providers: OpenMeteo (default, no API key required) and OpenWeatherMap
- Current weather conditions with ASCII art representation
- Temperature, wind, humidity, and precipitation information
- Customizable units (metric, imperial, standard)
- Local configuration file
- Color support for terminals
- Compact display mode
- Works out of the box with OpenMeteo
Installation
AUR
yay -S stormy
FreeBSD
pkg install stormy
Homebrew
brew install stormy
Nix
nix profile install github:ashish0kumar/stormy#stormy
Via go install
go install github.com/ashish0kumar/stormy@latest
Build from Source
# Clone the repository
git clone https://github.com/ashish0kumar/stormy.git
cd stormy
Build the application
go build
Move to a directory in your PATH
sudo mv stormy /usr/local/bin/
Configuration
stormy follows the XDG Base Directory Specification for configuration files and will create a default configuration file on first run:
- Linux/macOS:
~/.config/stormy/stormy.toml - Windows:
%APPDATA%\stormy\stormy.toml - Custom: Set
XDGCONFIGHOMEenvironment variable to override the default location
Configuration Options
provider: Weather data provider ("OpenMeteo" or "OpenWeatherMap"). Defaults to "OpenMeteo".api_key: Your OpenWeatherMap API key.city: The city for which to fetch weather data.units: Units for temperature and wind speed (metric,imperialor
standard).
showcityname: Whether to display the city name (trueorfalse).use_colors: Enables and disables text colors (trueorfalse).live_mode: Enables the "live" mode — long-running mode with frequent polling, never stops (trueorfalse).compact: Use a more compact display format (trueorfalse).
Example Config
Default Configuration (OpenMeteo — No API Key Required)
provider = "OpenMeteo"
api_key = ""
city = "New Delhi"
units = "metric"
showcityname = false
use_colors = false
live_mode = false
compact = false
OpenWeatherMap Configuration (Requires an API key from OpenWeatherMap)
provider = "OpenWeatherMap"
apikey = "youropenweathermapapikey"
city = "New Delhi"
units = "metric"
showcityname = false
use_colors = false
live_mode = false
compact = false
Usage
# Basic usage
stormy
Specify city via command line
stormy --city "New York"
Use imperial units
stormy --units imperial
Use compact display mode
stormy --compact
Show version
stormy --version
Show help
stormy --help
Display Examples
|
|
| |----------------------------------|-------------------------------------| |
|
| |
|
|
Acknowledgements
- OpenWeatherMap and Open-Meteo for providing weather data
- rainy for the overall idea, structure, and
- wttr.in for the ASCII
Contributing
Contributions are always welcome! If you have ideas, bug reports, or want to submit code, please feel free to open an issue or a pull request.
Contributors
© 2025-present Ashish Kumar