Minimal, customizable, and neofetch-like weather CLI inspired by rainy, written in Go
Featured on
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.
- 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
nix run github:ashish0kumar/stormy -- --city "London"
nix profile install github:ashish0kumar/stormy#stormy
# In your flake.nix
inputs.stormy.url = "github:ashish0kumar/stormy";
# In your system or home-manager configuration
environment.systemPackages = [ inputs.stormy.packages.x86_64-linux.stormy ];
go install github.com/ashish0kumar/stormy@latest
# 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/
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
XDG_CONFIG_HOME
environment variable to override the default location
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
,imperial
orstandard
).showcityname
: Whether to display the city name (true
orfalse
).use_colors
: Enables and disables text colors (true
orfalse
).live_mode
: Enables the "live" mode — long-running mode with frequent polling, never stops (true
orfalse
).compact
: Use a more compact display format (true
orfalse
).
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"
api_key = "your_openweathermap_api_key"
city = "New Delhi"
units = "metric"
showcityname = false
use_colors = false
live_mode = false
compact = false
# 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
![]() |
![]() |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- OpenWeatherMap and Open-Meteo for providing weather data
- rainy for the overall idea, structure, and design of the project
- wttr.in for the ASCII weather icons
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.
© 2025-present Ashish Kumar