Weather that lives in your top bar. The panel icon animates with the sky outside - sun, drifting clouds, rain, snow, thunderstorms - beside a live temperature. Open the menu and the whole card is the sky: a live animated backdrop of drifting clouds, twinkling stars and falling precipitation, painted frame by frame. What's inside: * Animated menu backdrop with eleven scenes, from clear sun and moon to fog, sleet, hail and lightning * Hourly chart: switch between temperature, precipitation or wind * The moon carries the real lunar phase at night; sunrise and sunset bathe the card in golden-hour light * Eight days of forecast tiles, current conditions at a glance * 20 languages with full bidirectional support: the entire card mirrors in Arabic, Hebrew, Persian and Urdu * Metric or imperial units, 12- or 24-hour clock, live scene previews in preferences * Three backdrop styles: animated sky, solid, or theme background with accent charts Weather data from Open-Meteo (global), Met.no (ECMWF) and NOAA NWS - choose your favourite forecaster, no API keys needed. Location: detected automatically through GNOME's own location service (IP lookup where none is available), or a city you pick. No accounts, no tracking, no analytics: weather requests go straight from your machine to the provider you choose. Automatic detection prefers the system location service, with the standard GNOME prompt naming this extension; its IP-lookup and city-label fallbacks each contact one free keyless endpoint and are used only when needed. Nothing is cached on disk. Demo: https://github.com/vijaybala-lang/weatherglass/releases/download/v8/weatherglass-demo-card.mp4
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-A-001 manual_review
extension code must not be minified or obfuscated
File appears obfuscated: 66% of identifiers are 1–2 characters (avg length 2.6).
sky.js
short identifier ratio: 66%, identifiers scored: 705
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
menu.js:148
this._clockId = GLib.timeout_add(GLib.PRIORITY_LOW, FRAME_MS, () => {
const now = GLib.get_monotonic_time();
if (this.mapped ?? true) {
this._time += Math.min((now - this._lastUs) / 1000000, 0.1);
this.queue_repaint();
}
| Version | Status |
|---|---|
| 10 | Unreviewed |
| 9 | Active |
| 8 | Active |
| 7 | Rejected |
| 6 | Rejected |
| 5 | Active |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Rejected |
1. Why are you using `i18n.js`? Please use normal gettext as mentioned in the docs: https://gjs.guide/extensions/development/translations.html 2. Please don't use the same property for holding the source id of different timeouts (line 148, 575 `menu.js`).
Thanks again for taking the time to review the changes! I am hoping this is a useful extension that users will enjoy using. 1) Removed i18n.js and using gettext through out the code. 2) Using different properties for different timeouts. 3) Addressed the superfluous comments littered throughout the code. Thanks again, Vijay