Review of "Retro LCD 7-Segment Clock" version 82

Details Page Preview

Vintage digital display with a high-fidelity 7-segment look. 10 color themes, custom colors, ghost segments, CRT scanlines, desktop widget mode, a quick color-switch menu, a date tooltip on hover, and integrated alarms with an on-screen dialog so they're never missed. Draws its digits from SVG path data embedded in the extension's code (no system font installation needed) and plays alarms through GNOME Shell's native sound theme; no bundled audio, font or image files.

Extension Homepage
https://gitlab.com/corral1976/gnome-shell-extension-relojlcd

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental)

Shexli did not find any issues.

All Versions

Previous Reviews on this Version

Corral1976 posted a review
Hello, and thank you for the review of v81. You were right: extension.js was still far too big. In v81 I had only moved a few files into folders, while the whole clock controller (about 1,000 lines) stayed inside extension.js. In v82 I split it into small modules, following the best practices page you linked ("keep the default entry point as small as possible"). WHAT CHANGED 1. extension.js is now 15 lines (it was 1,150). enable() creates a Clock object and disable() destroys it. Nothing else lives in the entry point. 2. All internal code is now under src/, split by responsibility: - src/clock/ clock coordinator, view, settings/theme helpers, time formatting, display effects, update notice - src/ui/ everything that builds St/Clutter widgets: the display, the panel/widget host (with dragging), the panel indicator, the digit row, the alarm dialog - src/alarm/ alarm scheduling and snooze - src/graphics/ glyph texture cache - src/shared/ plain modules used by both the Shell and the preferences window - src/prefs/ modules used only by the preferences window 3. The SVG digit data has its own file (src/shared/svgData.js), separate from the code that uses it. 4. Shell and preferences processes are kept apart: - Modules in src/shared/ import no gi:// or shell resources, so prefs.js can safely import them. - Everything that needs Gtk/Adw is in src/prefs/ and is loaded only by prefs.js. 5. Each class cleans up what it creates. Before, one big class owned every timer, signal and actor. Now: - ClockDisplay: its actors and allocation signals - ClockHost: the panel button or desktop widget, drag handlers and the monitors-changed signal - DisplayEffects: flicker, lamp test and alarm blink timers - ClockView: the clock tick, style debounce, panel-fit idle, theme signal and the settings handlers it registered - Clock: the alarm manager, texture cache and the current view Timeouts are removed right before being recreated, and everything is released in destroy(), which disable() reaches through Clock. 6. prefs.js is now 24 lines (it was 851). Each preferences page is its own module, and one small helper keeps track of every settings connection and disconnects them all when the window closes. 7. Smaller cleanups: - Removed the _teardownInProgress and _skipInitialRedraw flags; they are unnecessary now that each class destroys its own sources and signals. - Wrapped the long SVG path strings and one other long line so no line is over 200 characters. The glyph data is identical to before. - No comments were added, as before. BEHAVIOR The extension should look and behave exactly like v80. Two small differences: - Changing "Desktop Widget Mode" or "Panel Position" rebuilds the whole clock display. If an alarm is ringing at that moment, it keeps blinking. - The faint ghost and shadow rows are always redrawn when the style is applied, so they can no longer keep an old size in compact panel mode. Version bumped to 82.
JustPerfection active
Corral1976 posted a review
Thank you for your time, professionalism and constructive feedback. It helped me improve the structure of the extension a lot.