How xenlism/gnome-widget-center works
GNOME Widget Center is a GNOME Shell extension for placing and configuring live desktop widgets. The main workflow begins in the Control Center or overlay, discovers and loads widget instances, renders them on the desktop, and lets users arrange them with drag, snapping, and monitor-aware layout before saving configuration. It also supports theme-pack sharing, encrypted backups, custom and architect-created widgets, styling, and localized interfaces. The README documents these capabilities; sampled source confirms the extension’s wiring and selected layout, storage, preferences, and drag behavior, but not every subsystem’s internal calls.
Main entry points: extension.js Extension lifecycle · prefsWindowController.js Preferences controller · widgetLoader.js Widget loader · storageService.js Layout and settings files
Components 23
Shell runtime
- Extension lifecycle
gnome-widget-center@xenlism.github.io/extension.js - Widget loader
gnome-widget-center@xenlism.github.io/lib/widgetLoader.js - Desktop widget layer
gnome-widget-center@xenlism.github.io/lib/shell/widgetLayer.js - Widget collection
gnome-widget-center@xenlism.github.io/widgets/settings-control/widget.js - Widget overlay
gnome-widget-center@xenlism.github.io/lib/shell/widgetCenterOverlay.js - Quick drag
gnome-widget-center@xenlism.github.io/lib/shell/dragController.js - Edit-mode drag
gnome-widget-center@xenlism.github.io/lib/shell/editModeDragController.js - Layout rules
gnome-widget-center@xenlism.github.io/lib/layoutEngine.js - Snap and grid
gnome-widget-center@xenlism.github.io/lib/snapManager.js
Widget management
- Control Center
gnome-widget-center@xenlism.github.io/prefs.js - Preferences controller
gnome-widget-center@xenlism.github.io/lib/prefsWindowController.js - Widget discovery
gnome-widget-center@xenlism.github.io/lib/prefsWidgetList.js - Widget configuration
gnome-widget-center@xenlism.github.io/lib/widgetConfigUI.js - User widget files
gnome-widget-center@xenlism.github.io/lib/widgetLoader.js
Portable setups
- Theme packs
gnome-widget-center@xenlism.github.io/lib/themeService.js - Theme export
gnome-widget-center@xenlism.github.io/lib/themePackExportDialog.js - Backup and restore
gnome-widget-center@xenlism.github.io/lib/backupService.js - Screenshot capture
gnome-widget-center@xenlism.github.io/lib/screenshotPortal.js
Settings and interface
- Layout and settings files
gnome-widget-center@xenlism.github.io/lib/storageService.js - Settings service
gnome-widget-center@xenlism.github.io/lib/settingsService.js - Translations
gnome-widget-center@xenlism.github.io/i18n/index.js
Other components
- Desktop user
- GNOME Shell
Connections 25
- Desktop user → Control Center: opens and configures
- Desktop user → Widget overlay: opens
- Control Center → Preferences controller: builds interface
- Preferences controller → Widget discovery: discovers widgets
- Preferences controller → Translations: loads translations
- Preferences controller → Layout and settings files: initializes storage
- Preferences controller → Widget configuration: configures widgets
- Extension lifecycle → Widget loader: loads instances
- Extension lifecycle → Desktop widget layer: initializes layer
- Extension lifecycle → Layout rules: creates layout rules
- Extension lifecycle → Quick drag: creates drag controller
- Extension lifecycle → Widget overlay: creates overlay
- Extension lifecycle → Layout and settings files: persists layout
- Widget loader → Widget collection: loads widget code
- Widget loader → Layout and settings files: reads widget settings
- Desktop widget layer → GNOME Shell: adds desktop actors
- Quick drag → Layout rules: checks placement
- Edit-mode drag → Snap and grid: snaps placement
- Edit-mode drag → Layout rules: checks placement
- Edit-mode drag → Layout and settings files: saves positions
- Extension lifecycle → Theme packs: applies theme packs
- Preferences controller → Theme export: opens export dialog
- Theme export → Screenshot capture: captures preview
- Desktop user → Backup and restore: backs up or restores
- Widget loader → User widget files: loads installed widgets