https://github.com/ashish0kumar/stormy
minimal neofetch-style weather cli
https://github.com/ashish0kumar/stormy
ascii cli go weather weather-cli
Last synced: 13 days ago
JSON representation
minimal neofetch-style weather cli
- Host: GitHub
- URL: https://github.com/ashish0kumar/stormy
- Owner: ashish0kumar
- License: mit
- Created: 2025-03-30T17:24:54.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-11-24T18:34:05.000Z (2 months ago)
- Last Synced: 2026-01-19T22:37:40.866Z (15 days ago)
- Topics: ascii, cli, go, weather, weather-cli
- Language: Go
- Homepage: https://terminaltrove.com/stormy
- Size: 770 KB
- Stars: 685
- Watchers: 6
- Forks: 23
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://github.com/liveslol/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
```bash
nix run github:ashish0kumar/stormy -- --city "London"
```
#### Permanent installation
```bash
nix profile install github:ashish0kumar/stormy#stormy
```
#### Add to your system configuration (using flakes)
```bash
# 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`
```bash
go install github.com/ashish0kumar/stormy@latest
```
### Build from Source
```bash
# 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)
```toml
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](https://openweathermap.org/api))
```toml
provider = "OpenWeatherMap"
api_key = "your_openweathermap_api_key"
city = "New Delhi"
units = "metric"
showcityname = false
use_colors = false
live_mode = false
compact = false
```
## Usage
```bash
# 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](https://openweathermap.org/) and [Open-Meteo](https://open-meteo.com/) for providing weather data
- [rainy](https://github.com/liveslol/rainy) for the overall idea, structure, and
design of the project
- [wttr.in](https://github.com/chubin/wttr.in?tab=readme-ov-file) for the ASCII
weather icons
## 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