1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# panahone ⛅
simple yet *somewhat* 🤷 feature-rich GTK3 system tray weather applet using [wttr.in](https://wttr.in/)'s API, written in Python.
## features
- 🌡️ **semi-realtime weather information** with automatic updates
- 💾 **smart caching** to reduce API calls (10-minute cache by default)
- 🔄 **auto-refresh** support (configurable interval)
- 🎨 **dynamic weather icons** that change based on conditions
- 📍 **location-based** weather (or auto-detect)
- 🌡️ **temperature units** (celsius/fahrenheit) with easy toggle
- 💨 **comprehensive weather data**:
- current temperature and "feels like" temperature
- weather conditions
- humidity levels
- wind speed and direction
- uv index
- visibility
- ⚙️ **persistent configuration** with JSON config file ***(EXPERIMENTAL)***
- 📝 **detailed logging** for debugging
- 🖱️ **interactive system tray**:
- left click: fetch/refresh weather
- middle click: quit
- right click: context menu
- 🔔 **desktop notifications** with customizable timeout
## install
### system dependencies
- python 3.6+
- gtk3
- gobject
- libnotify
on Arch Linux:
```bash
sudo pacman -S python python-gobject gtk3 libnotify
```
on Ubuntu/Debian:
```bash
sudo apt install python3 python3-gi gir1.2-gtk-3.0 gir1.2-notify-0.7
```
on Fedora:
```bash
sudo dnf install python3 python3-gobject gtk3 libnotify
```
### in-app/venv Dependencies
```bash
cd src
pip install -r requirements.txt
```
## usage
```bash
# auto-detect location
./panahone
# specify location
./panahone -l "New York"
# use fahrenheit
./panahone -f
# enable debug logging
./panahone --debug
```
### cli args
```
-h, --help Show help message
-l, --location LOCATION Specify location (city, coordinates, airport code)
-f, --fahrenheit Use Fahrenheit instead of Celsius
-v, --version Show version
--debug Enable debug logging
```
### mouse
- **left click**: fetch/refresh weather
- **middle click**: quit application
- **right click**: context menu (refresh, toggle units, about, quit)
## config (honestly, still experimental I would still use overrides at this point)
config file: `~/.config/panahone/config.json` (auto-created on first run)
```json
{
"location": "", // default location (empty = auto-detect)
"use_fahrenheit": false, // temperature unit
"auto_refresh": true, // enable auto-updates
"refresh_interval_minutes": 30, // update frequency
"show_wind": true, // show wind data
"show_humidity": true, // show humidity
"show_feels_like": true, // show "feels like" temp
"notification_timeout": 10000 // notification duration (ms)
}
```
**file:**
- config: `~/.config/panahone/config.json`
- cache: `~/.cache/panahone/weather_cache.json`
- logs: `~/.cache/panahone/panahone.log`
## weather icons
`panahone` uses system theme icons and automatically maps weather conditions to appropriate icons (yaru would have all of these, but some icon themes may have some missing):
- ☀️ clear/sunny → `weather-clear`
- 🌤️ partly cloudy → `weather-few-clouds`
- ☁️ cloudy/overcast → `weather-overcast`
- 🌫️ fog/mist → `weather-fog`
- 🌧️ rain → `weather-showers`
- ⛈️ thunderstorm → `weather-storm`
- ❄️ snow/sleet → `weather-snow`
## troubleshooting
**Debug mode:**
```bash
./panahone --debug
cat ~/.cache/panahone/panahone.log
```
## changelog (2025.10.22)
**improvements:**
- added persistent configuration system with json config file
- implemented smart caching to reduce api calls
- added auto-refresh functionality with configurable intervals
- enhanced weather display with humidity, wind, uv index, and visibility
- added dynamic weather icons that change based on conditions
# 📸

|