A modern, highly customizable weather widget built specifically for KDE Plasma 6.
- Granular Precision: Uses exact Latitude/Longitude coordinates for local data rather than generic city-level lookups.
- Modern UX: A clean, native-feeling interface with smooth animations and intuitive layouts.
- Feature Rich: From interactive radar maps and air quality to space weather and moon phases - everything is configurable.
- KDE Notifications support: Stay informed with KDE notifications for weather alerts, forecasts, the UV index, and the Kp index. All notifications can be individually configured.
- π¦ Installation
- πΌοΈ Screenshots
- β¨ Detailed Features
- π» Code Contributors
- π Translation
- π External Resources
- π Entering API Keys
- π Bug Reports & Feedback
- β€οΈ Support
- π License
For the full functionality of this widget, please ensure you have the following Qt6 modules installed for your distribution:
Required for the Location map screen and GeoClue2 auto-detection.
| Distribution | Package Name |
|---|---|
| Fedora / RHEL | qt6-qtlocation |
| openSUSE | qt6-location |
| Arch Linux | qt6-location |
| Debian / Kubuntu / KDE Neon | qml6-module-qtlocation qml6-module-qtpositioning |
Required for the interactive Radar tab (Chromium-based).
| Distribution | Package Name |
|---|---|
| Fedora / RHEL | qt6-qtwebengine |
| openSUSE | qt6-webengine |
| Arch Linux | qt6-webengine |
| Debian / Kubuntu / KDE Neon | qml6-module-qtwebengine |
Note: After installing these, restart your session or run
systemctl --user restart plasma-plasmashell.
- Right-click your Panel or Desktop.
- Select Add Widgets... -> Get New Widgets -> Download New Plasma Widgets.
- Search for Advanced Weather Widget.
- Click Install.
If you prefer to install from source:
git clone https://github.com/pnedyalkov91/advanced-weather-widget.git && cd advanced-weather-widget
kpackagetool6 --type Plasma/Applet --install .
rm -rf ~/.cache/plasmashell/qmlcache
systemctl --user restart plasma-plasmashell
Panel Layout Styles
(Single line: A compact, one-row layout for a minimalist look.)
(Simple mode: Displays only the essential icon and current temperature.)
(XFCE style: A multiline display with an automatic scrollbox for detailed info.)
Detailed Widget Layouts
(Advanced mode: Choose between modern Cards or a clean List view.)
(Simple modes: Focused views for those who want weather without the tabs.)
Tabs
(Forecast tab)
(Radar tab)
- Precision: Automatic detection via GeoClue2/IP or manual search with dual geocoding (Open-Meteo + Nominatim).
- Map Picker: Integrated OpenStreetMap preview to pin your exact location.
- Smart Data: Automatic timezone, altitude detection, and localized city names.
- Choose from 11 different providers, including free options (Open-Meteo, BBC Weather, met.no) and Key-required providers.
- Adaptive Failover: Automatically cycles through providers if one goes offline, ensuring you never have a widget without data.
- National High-Res Models: When using Open-Meteo, the widget automatically prefers your country's official high-resolution model (e.g. DWD ICON for Germany/Austria, MΓ©tΓ©o-France AROME, UK Met Office, NOAA GFS/HRRR, MeteoSwiss ICON-CH, MET Norway, Environment Canada GEM, JMA, KNMI, DMI, ItaliaMeteo ARPAE, CMA) for more precise local forecasts.
For providers that require an API key, you can enter it in the widget's settings:
- Right-click on the widget in your panel or desktop.
- Select Configure Advanced Weather Widget.
- Navigate to the General settings.
- Turn off Adaptive mode and choose your preferred provider.
- Enter your API key in the corresponding field for your chosen provider.
| Provider | Key Required | Signup Link |
|---|---|---|
| Open-Meteo / MET Norway | No | - |
| OpenWeatherMap | β | Sign Up |
| WeatherAPI | β | Sign Up |
| Pirate Weather | β | Sign Up |
| Tomorrow.io | β | Sign Up |
| Visual Crossing | β | Sign Up |
| StormGlass | β | Sign Up |
| Weatherbit | β | Sign Up |
| QWeather | β | Sign Up |
- Core: Temp (Current/Apparent/Dew), Wind (Speed/Direction), Humidity, Pressure, Visibility.
- Environment: UV Index, Air Quality (CAQI), Pollen (Universal Index), Space Weather (Kp index, G-index, aurora probability).
- Astronomy: Configurable Sun Arc (Sunrise/Set) and Moon Path (Phases/Rise/Set).
- Alerts: Real-time push notifications from MeteoAlarm, NOAA NWS, LibreWXR, KDE's FOSS Public Alert Server, and provider-specific sources, including a dedicated "Purple" tier for extreme-severity alerts.
- Dual Temperature: Option to display two different temperature metrics simultaneously (e.g., Actual + Apparent).
- Panel Layouts: Single line, Multiline (XFCE weather applet style with scrollbox), or Simple (compact icon + temp).
- Widget Layouts: Advanced (Details, Forecast and Radar tabs) and Simple (no tabs)
- Themes: 6 icon themes (Symbolic, Font, Flat, 3D, KDE) plus a custom per-item picker, with an optional adjustable glow effect for weather icons.
- Visuals: Fully interactive Radar Map (RainViewer or LibreWXR), 16-day daily forecast, and hourly weather forecast.
Thank you to everyone who has contributed code to this project β€οΈ
- Mizu Ikki - QWeather provider fixes and perfomance improvements (refresh handling, forecast display, precipitation fallback)
- rcspam - PR-151, PR-146, PR-157, PR-179, PR-180
- ydimitrof - PR-168
- Katze-942 - PR-185
- KassLavender - PR-174,
Translations are welcome! If you would like to help translate the widget into your language, please follow the instructions below.
- Download the translation template:
https://github.com/pnedyalkov91/advanced-weather-widget/blob/main/translate/template.pot
- Rename the file using your locale code. You can find a list of locale codes here:
For example:
pt_BR.po
de_DE.po
fr_FR.po
ru_RU.po
- Open the
.pofile in a translation editor such as:
- Poedit
- Lokalize (KDE)
- Kate / Kwrite
- VS Code
- Translate all strings by filling the
msgstr ""fields.
Example:
msgid "Configure iconβ¦"
msgstr "Configurar Γconeβ¦"- When the translation is ready:
- open a GitHub Issue and attach the
.pofile (you may need to compress it as.zipbecause GitHub blocks.poattachments).
You can check the current translation coverage in translation-status.md.
Thank you to everyone who contributed translations to this project β€οΈ
- German - HolySoap and TomfromBerlin
- Brazilian Portuguese - PauloAlbqrq
- Dutch - Heimen Stoffels (vistausss@fastmail.com)
- Russian - Dmaliog, PhvntxmX, and Katze-942
- French - LAZER-TY and rcspam
- Turkish - herzane52
- Spanish - NecaX and BroxiCoros
- Chinese (Traditional) - Yo-oo
- Chinese (Simplified) - Guokangz
- Czech - Zero-MF
- Italian - Aldo Latino
- Hungarian - summoner001
- Polish - l3monik
- Ukrainian - NaviMen
- Japanese - presire
- Korean - vitneum
- Bulgarian - Petar Nedyalkov (Author)
If you encounter any issues or have suggestions, please open a GitHub Issue. Please include your distribution, Plasma version, and the weather provider you were using.
-
This project uses weather icons and font resources from Weather Icons:
https://github.com/erikflowers/weather-iconsLicensed under the SIL Open Font License 1.1 (OFL 1.1).
-
This project uses code from the SunCalc library:
https://github.com/mourner/suncalcCopyright Β© Vladimir Agafonkin.
Licensed under the BSD License. -
This project uses the RainViewer API for weather radar data:
https://www.rainviewer.com/ -
This project uses LibreWXR for weather radar data and weather alerts:
https://librewxr.net/ -
The Radar tab uses Leaflet.js for interactive map rendering:
https://leafletjs.com/Copyright Β© 2010β2024 Vladimir Agafonkin.
Licensed under the BSD 2-Clause License. -
Map tiles are provided by OpenStreetMap:
https://www.openstreetmap.org/copyrightΒ© OpenStreetMap contributors. Licensed under the Open Database License (ODbL).
-
This project uses the KDE FOSS Public Alert Server for displaying weather alerts:
https://alerts.kde.org/Licensed under the AGPL-3.0-or-later license.
Advanced Weather Widget is developed in my free time.
If you enjoy using it, you can support the project:
- Liberapay: https://liberapay.com/pnedyalkov
- PayPal: https://paypal.me/pnedyalkov91
- Revolut: https://revolut.me/petarnedyalkov91
This project is licensed under the GNU General Public License v2.0 or later.