# mpurses/sonder architecture

> Architecture diagram of the GitHub repository mpurses/sonder, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mpurses/sonder
- Repository: https://github.com/mpurses/sonder

## Overview

Sonder is a Rainmeter desktop-skin suite. Users load a supplied layout in Rainmeter, then interact with individual widgets for information, tracking, visualization, and Windows controls. The README documents the product capabilities and several interactions, but no source excerpts were provided; edges therefore reflect only those documented relationships, not assumed wiring between skin files.

Main entry points: [`Skins/Sonder/Weather`](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Weather) (Weather skins), [`Skins/Sonder/Space/WorldMap.ini`](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Space/WorldMap.ini) (World map), [`Skins/Sonder/System`](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/System) (Device controls), [`Skins/Sonder/Recycle/Bin_1.ini`](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Recycle/Bin_1.ini) (Recycle bin)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_display["Time and weather"]
  node_date["Date and time"]
  node_weather["Weather skins"]
end

subgraph group_tracking["Calendars and map"]
  node_calendar["Monthly calendar<br/>[Calendar.ini]"]
  node_habits["Habit tracker"]
  node_worldmap["World map<br/>[WorldMap.ini]"]
  node_iss["ISS and launch data"]
end

subgraph group_system["System widgets"]
  node_network["Network graph<br/>[Network.ini]"]
  node_system_stats["System statistics<br/>[System.ini]"]
  node_advanced_stats["Advanced statistics"]
  node_controls["Device controls"]
  node_recycle["Recycle bin<br/>[Bin_1.ini]"]
end

subgraph group_settings["Settings and visuals"]
  node_settings_ui["Settings screens"]
  node_presets["Theme and visualizer presets"]
  node_visualizer["Dot visualizer"]
end

node_user(("Desktop user"))
node_rainmeter["Rainmeter"]
node_layout["Sonder layouts<br/>[Rainmeter.ini]"]
node_weather_service["Weather Channel"]
node_windows["Windows system"]

node_user -->|"loads skin"| node_rainmeter
node_rainmeter -->|"loads layout"| node_layout
node_user -->|"opens settings"| node_weather
node_weather -->|"gets weather data"| node_weather_service
node_user -->|"opens calendar"| node_calendar
node_user -->|"tracks habits"| node_habits
node_user -->|"views map"| node_worldmap
node_worldmap -->|"uses tracking data"| node_iss
node_user -->|"views traffic"| node_network
node_user -->|"views usage"| node_system_stats
node_advanced_stats -.->|"reads hardware stats"| node_windows
node_user -->|"controls devices"| node_controls
node_controls -->|"operates controls"| node_windows
node_user -->|"opens or empties"| node_recycle
node_recycle -->|"operates bin"| node_windows
node_user -->|"customizes skin"| node_settings_ui
node_user -->|"views audio visualization"| node_visualizer
node_visualizer -->|"uses presets"| node_presets

click node_layout "https://github.com/mpurses/sonder/blob/master/Layouts/Sonder%20Layout/Rainmeter.ini"
click node_date "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Date"
click node_weather "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Weather"
click node_calendar "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Calendar/Calendar.ini"
click node_habits "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/EverydayHabitCalendar"
click node_worldmap "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Space/WorldMap.ini"
click node_iss "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/%40Resources/Scripts/ISS-LocationWriteCheck.lua"
click node_network "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Network/Network.ini"
click node_system_stats "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/System/System.ini"
click node_advanced_stats "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/System/System-Advanced.ini"
click node_controls "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/System"
click node_recycle "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Recycle/Bin_1.ini"
click node_settings_ui "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Settings"
click node_presets "https://github.com/mpurses/sonder/tree/master/Skins/Sonder/%40Resources/Presets/DefaultPresets"
click node_visualizer "https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Visualizer/Dots-Visualizer.ini"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_date,node_weather,node_user toneBlue
class node_calendar,node_habits,node_worldmap,node_iss toneAmber
class node_network,node_system_stats,node_advanced_stats,node_controls,node_recycle toneMint
class node_settings_ui,node_presets,node_visualizer toneRose
class node_rainmeter,node_weather_service,node_windows toneIndigo
class node_layout toneTeal
```

## Components

### Time and weather

- [Date and time](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Date): `Skins/Sonder/Date`
- [Weather skins](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Weather): `Skins/Sonder/Weather`

### Calendars and map

- [Monthly calendar](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Calendar/Calendar.ini): `Skins/Sonder/Calendar/Calendar.ini`
- [Habit tracker](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/EverydayHabitCalendar): `Skins/Sonder/EverydayHabitCalendar`
- [World map](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Space/WorldMap.ini): `Skins/Sonder/Space/WorldMap.ini`
- [ISS and launch data](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/%40Resources/Scripts/ISS-LocationWriteCheck.lua): `Skins/Sonder/@Resources/Scripts/ISS-LocationWriteCheck.lua`

### System widgets

- [Network graph](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Network/Network.ini): `Skins/Sonder/Network/Network.ini`
- [System statistics](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/System/System.ini): `Skins/Sonder/System/System.ini`
- [Advanced statistics](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/System/System-Advanced.ini): `Skins/Sonder/System/System-Advanced.ini`
- [Device controls](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/System): `Skins/Sonder/System`
- [Recycle bin](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Recycle/Bin_1.ini): `Skins/Sonder/Recycle/Bin_1.ini`

### Settings and visuals

- [Settings screens](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/Settings): `Skins/Sonder/Settings`
- [Theme and visualizer presets](https://github.com/mpurses/sonder/tree/master/Skins/Sonder/%40Resources/Presets/DefaultPresets): `Skins/Sonder/@Resources/Presets/DefaultPresets`
- [Dot visualizer](https://github.com/mpurses/sonder/blob/master/Skins/Sonder/Visualizer/Dots-Visualizer.ini): `Skins/Sonder/Visualizer/Dots-Visualizer.ini`

### Other components

- **Desktop user**
- **Rainmeter**
- [Sonder layouts](https://github.com/mpurses/sonder/blob/master/Layouts/Sonder%20Layout/Rainmeter.ini): `Layouts/Sonder Layout/Rainmeter.ini`
- **Weather Channel**
- **Windows system**

## Connections

- Desktop user → Rainmeter: loads skin
- Rainmeter → Sonder layouts: loads layout
- Desktop user → Weather skins: opens settings
- Weather skins → Weather Channel: gets weather data
- Desktop user → Monthly calendar: opens calendar
- Desktop user → Habit tracker: tracks habits
- Desktop user → World map: views map
- World map → ISS and launch data: uses tracking data
- Desktop user → Network graph: views traffic
- Desktop user → System statistics: views usage
- Advanced statistics → Windows system: reads hardware stats
- Desktop user → Device controls: controls devices
- Device controls → Windows system: operates controls
- Desktop user → Recycle bin: opens or empties
- Recycle bin → Windows system: operates bin
- Desktop user → Settings screens: customizes skin
- Desktop user → Dot visualizer: views audio visualization
- Dot visualizer → Theme and visualizer presets: uses presets
