Skip to content

ashish0kumar/stormy

Repository files navigation

stormy

Minimal, customizable, and neofetch-like weather CLI inspired by rainy, written in Go

screenshot

Featured on

Terminal Trove logo


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

Nix

One-time run

nix run github:ashish0kumar/stormy -- --city "London"

Permanent installation

nix profile install github:ashish0kumar/stormy#stormy

Add to your system configuration (using flakes)

# 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 ];

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 XDG_CONFIG_HOME environment 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, imperial or standard).
  • showcityname: Whether to display the city name (true or false).
  • use_colors: Enables and disables text colors (true or false).
  • live_mode: Enables the "live" mode — long-running mode with frequent polling, never stops (true or false).
  • compact: Use a more compact display format (true or false).

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"
api_key = "your_openweathermap_api_key"
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

Base Colored
Minimal City name
1 3
4 2

Acknowledgements

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



catppuccin

© 2025-present Ashish Kumar

LICENSE  

About

🌦️ Minimal, customizable, and neofetch-like weather CLI

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project