A compact weather widget for your desktop.
System Tray Menu
Opacity / background transparency - (Up to 3 Cities on Free, Up to 5 Cities on Pro)
Weather Widget Location Settings
Weather Widget Appearance Settings
Weather Widget Languages Settings
You can download the latest pre-compiled binaries for Windows and Linux from the GitHub Releases page.
- Corner Positioning & Dragging: You can select a screen corner (Top-Left, Top-Right, Bottom-Left, Bottom-Right) in Settings -> Display, or drag the widget window directly on screen.
- Linux (Wayland & Snap): On Linux (including Wayland sessions and Snap packages), you can reposition the widget to any custom location by holding
Super + Left Click Drag. WeatherWidget automatically detects the new coordinates and persists them for future app launches.
$env:PATH = "C:\msys64\ucrt64\bin;" + $env:PATH; $env:CGO_ENABLED = "1"; gcc --version | Select-Object -First 1 go build -ldflags="-H windowsgui -s -w" -o weatherwidget.exe ./cmd/weatherwidget/
.\weatherwidget.exe .\installer\build-msi.ps1 -Version "1.2.0" -SkipSign-
Install dependencies:
sudo apt-get update && sudo apt-get install -y libgl1-mesa-dev xorg-dev -
Build:
make build
-
Build Snap Package:
./scripts/build-snap.sh # or make build-snap
Note: The first build may take several minutes as it compiles graphical dependencies (CGO). My updated Makefile includes the
-vflag so you can monitor progress.
{
"dataSource": "remote_api",
"cities": [
{
"name": "Holambra",
"region": "BR",
"latitude": -22.6332,
"longitude": -47.0545,
"timezone": "America/Sao_Paulo"
},
{
"name": "Edinburgh",
"region": "UK",
"latitude": 55.95,
"longitude": -3.19,
"timezone": "Europe/London"
},
{
"name": "Warsaw",
"region": "PL",
"latitude": 52.231958,
"longitude": 21.006725,
"timezone": "Europe/Warsaw"
}
],
"refreshInterval": 10,
"cornerPosition": "top-right",
"monitorIndex": 0,
"opacity": 25,
"locale": "en-GB",
"apiConfig": {
"provider": "openweathermap",
"apiKey": "YOUR_API_KEY"
}
}type $env:APPDATA\WeatherWidget\WeatherWidget\config.jsoncat $HOME/.config/WeatherWidget/WeatherWidget/config.jsonIf the app appears in your system tray (or is running in the background) but clicking Settings or Show Weather does nothing, it usually means the application failed to create the UI window.
You can verify this by running the application from the command line with the -debug flag to enable logging to a file:
.\weatherwidget.exe -debugThen, check the log file at:
type $env:APPDATA\WeatherWidget\debug.logIf you see the following error:
Cause: APIUnavailable: WGL: The driver does not appear to support OpenGL
The Fix: This happens on "clean" Windows installations (using the Microsoft Basic Display Adapter) or in Virtual Machines because the system lacks proper graphics drivers to support the required OpenGL 2.0+ context.
There are two ways to fix this:
-
Install Graphics Drivers: Install the proper Intel/AMD/NVIDIA graphics drivers for your system.
-
Use Mesa3D Software Renderer (Portable Fix): If installing drivers is not an option:
- Download a pre-compiled Mesa3D for Windows package (e.g., from fdossena.com).
- Extract the 64-bit
opengl32.dllfile. - Place that
opengl32.dllfile directly in the same folder as yourweatherwidget.exe.
Windows will automatically use this DLL to translate OpenGL hardware calls into software rendering, allowing the app to work flawlessly on any PC regardless of graphics drivers.
Note: A -software flag is also available (.\weatherwidget.exe -software) which instructs the Fyne framework to prefer software rendering, but this still requires basic OpenGL driver availability at the OS level.
- Expanded to 12 Languages & Native Font Support:
- Added support for 3 new major languages:
- ๐ฎ๐ณ Tamil (
ta-IN/ เฎคเฎฎเฎฟเฎดเฏ) - ๐ฏ๐ต Japanese (
ja-JP/ ๆฅๆฌ่ช) - ๐จ๐ณ Simplified Chinese (
zh-CN/ ไธญๆ)
- ๐ฎ๐ณ Tamil (
- Total 12 supported languages with full translation coverage across all UI tabs, settings, dialogs, and weather condition strings.
- Dynamic Script & Font Fallback: Bundled high-fidelity font resources (
NotoSansTamilfor Tamil,DroidSansFallback/ CJK fonts for Chinese & Japanese,Segoe UIfor Western languages) and integrated cross-platform system font discovery (Windows, Linux, macOS) ensuring native characters render crisply with zero encoding issues or missing glyph boxes ("tofu").
- Added support for 3 new major languages:
- Comprehensive UI & Taskbar/Tray Menu Localization:
- Cancel Button: Added full localized translations (
settings.cancel) across all 12 languages for both GTK and Fyne settings dialogs. - Live Taskbar & System Tray Menu Translation: Both GTK AppIndicator tray menu and Fyne desktop system tray now dynamically re-render all action items ("Show Widget", "Hide Widget", "Settings", "Quit") whenever the language is switched, keeping the taskbar menu perfectly in sync with the active UI locale.
- Cancel Button: Added full localized translations (
- Redesigned Language Settings Tab (Fyne & GTK):
- Modern Card Layout: Upgraded from simple badge squares to sleek 2-column language cards featuring crisp national flag icons, native language titles, and English subtitles.
- Active Selection & Glow: Selected language card features a bright cyan border, glow highlight, and a
โcheckmark indicator. - Header & Badge: Added a top header bar with globe icon (
๐), translated title, and a12 LANGUAGEScounter badge.
- Tier-based City Limits (Free vs Pro):
- Free Tier (OpenWeatherMap / Default): Restricted to a maximum of 3 cities.
- Pro Tier (EasyWeatherWidget Gateway): Allows up to 5 cities when configured with a valid Pro API key.
- Locations UI Callout Banner: Styled note in the Locations tab across all 12 languages highlighting 5 cities, 10-minute refresh rate, and extended weather data with a direct path to subscribe.
- Eye-Candy Pro Upgrade Dialog: Modern, styled modal highlighting key Pro value propositions (Up to 5 cities, 10-minute rapid refresh, extended data & insights) with direct 1-click navigation to the Data Provider tab.
- Font Size controls (GTK Linux) โ New Font Size section in the Widget tab lets you independently adjust the text size for three areas of the widget:
- City & Time โ controls city name and clock (range 8โ48 px)
- Temperature & Icon โ controls temperature value and weather icon size (range 10โ72 px)
- Weather Conditions โ controls description, humidity, wind, and all info rows below temperature (range 6โ36 px)
- Live font-size preview โ Each row has โผ / Npx / โฒ buttons that update the widget in real time as you click, with no need to hit Save first
- Icon scales with temperature โ The weather icon resizes together with the Temperature & Icon font size so both grow and shrink in proportion
- Cancel reverts preview โ Closing the settings dialog with Cancel restores all font sizes to what was last saved, discarding any unsaved live-preview changes
- Font sizes persisted โ All three font size values are saved to
config.jsonand restored on next launch; existing config files without these keys fall back to the original defaults. - Full i18n coverage โ Font size section title, subtitle, and all three row labels are fully translated across all 9 supported languages (English, German, Spanish, French, Italian, Dutch, Polish, Portuguese, Turkish)
- Added new "heavy rain" weather icon (
heavy_rain.png) for heavy intensity rain conditions across all providers (OWM, WU, EWW) - Fixed weather and time display staying frozen after PC wakes from sleep/hibernation โ the widget now detects system resume and triggers an immediate refresh
- macOS: Rounded corners โ Widget window now renders with 12pt rounded corners matching macOS design conventions
- macOS: Window transparency โ Background transparency slider (25%/50%/75%/100%) now works on macOS using
NSWindow.alphaValuewith remapped values to keep content readable - macOS: Auto-start at login โ Added LaunchAgent support so the "Launch WeatherWidget when starts" setting works on macOS (creates
~/Library/LaunchAgents/com.weatherwidget.app.plist) - macOS: Build script โ Added
scripts/build-darwin.shfor one-command universal .app + .dmg creation
- Humidity & wind display โ Each city panel now shows humidity percentage and wind speed with compass direction (e.g. "๐ง 45% ๐จ 4.5 NW") below the weather description
- Live settings preview โ Opacity, position, and temperature unit changes are applied to the widget in real-time as you adjust them in settings; reverts automatically if you close without saving
- Panel Display customization โ New Widget tab in settings with checkboxes to toggle visibility of each panel element (City, Icon, Temperature, Description, Humidity & Wind, Time, Date) with a live 3-city preview
- Dynamic panel height โ Widget window automatically resizes to fit only the visible elements when display fields are toggled
- Live About preview โ The About tab now shows live weather data for 3 default cities with ticking clocks instead of a static screenshot
- Windows opacity fix โ All transparency levels (25%/50%/75%/100%) now produce distinct visual results using combined LWA_COLORKEY + LWA_ALPHA
- Settings tab reorganization โ Appearance tab renamed to Display; new Widget tab houses Panel Display and Temperature Unit with live preview
- Modernized Locations tab โ City rows use icon buttons (move up/down/delete), bold city names, separators between entries, and coordinates grouped on a single row
- Compact panel layout โ Reduced spacing between time/date and description/humidity rows using zero-padding layout; separator line shortened to 70% width and centered




