# valinet/explorerpatcher architecture

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

- Interactive diagram: https://gitdiagram.com/valinet/explorerpatcher
- Repository: https://github.com/valinet/explorerpatcher

## Overview

ExplorerPatcher modifies the Windows shell to provide a configurable, Windows 10-style desktop experience. The documented user flow is installation, opening taskbar Properties, and selecting taskbar, Start menu, window-switcher, or other options; the resident patcher applies shell changes. The README also documents built-in updates and uninstall. The tree and excerpts show additional weather-flyout and settings UI components. Several feature implementations were not sampled, so links from the patcher to those subsystems are shown as unverified rather than asserted as confirmed calls.

Main entry points: [`ExplorerPatcher/dllmain.c`](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/dllmain.c) (Shell patcher), [`ep_gui/GUI.c`](https://github.com/valinet/explorerpatcher/blob/master/ep_gui/GUI.c) (Properties UI), [`ep_weather_host/ep_weather_host.c`](https://github.com/valinet/explorerpatcher/blob/master/ep_weather_host/ep_weather_host.c) (Weather flyout), [`ep_setup/ep_setup.c`](https://github.com/valinet/explorerpatcher/blob/master/ep_setup/ep_setup.c) (Setup installer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_install["Install and maintenance"]
  node_installer["Setup installer<br/>[ep_setup.c]"]
  node_updater["Built-in updates<br/>[updates.cpp]"]
end

subgraph group_config["Settings experience"]
  node_settings["Properties UI<br/>[GUI.c]"]
  node_settings_module["Settings backend"]
end

subgraph group_shell["Shell customization"]
  node_patcher["Shell patcher<br/>[dllmain.c]"]
  node_taskbar["Taskbar styles<br/>[Taskbar10.cpp]"]
  node_taskbar_center["Taskbar centering<br/>[TaskbarCenter.cpp]"]
  node_start_menu["Start menu<br/>[StartMenu.c]"]
  node_start_experience["Start experience"]
  node_window_switcher["Window switcher<br/>[main.c]"]
  node_shell_host["Shell host patches"]
  node_twinui["TwinUI patches<br/>[TwinUIPatches.cpp]"]
  node_search["Explorer search bar"]
  node_archive["Archive menu<br/>[ArchiveMenu.c]"]
  node_flyouts["Immersive flyouts<br/>[ImmersiveFlyouts.c]"]
end

subgraph group_services["Runtime services"]
  node_weather["Weather flyout<br/>[ep_weather_host.c]"]
  node_weather_factory["Weather factory"]
  node_localization["Localization<br/>[Localization.cpp]"]
  node_settings_monitor["Settings monitor<br/>[SettingsMonitor.c]"]
  node_startup_sound["Startup sound<br/>[StartupSound.cpp]"]
end

node_user(("Desktop user"))

node_user -->|"installs"| node_installer
node_installer -.->|"installs files"| node_patcher
node_user -->|"opens Properties"| node_settings
node_settings -.->|"configures options"| node_settings_module
node_user -->|"checks updates"| node_updater
node_settings -->|"configures updates"| node_updater
node_user -->|"chooses style"| node_taskbar
node_user -->|"chooses style"| node_start_menu
node_user -->|"chooses style"| node_window_switcher
node_patcher -->|"initializes flyout"| node_weather
node_settings -->|"uses weather interface"| node_weather
node_patcher -.->|"may dispatch"| node_taskbar
node_patcher -.->|"may dispatch"| node_taskbar_center
node_patcher -.->|"may dispatch"| node_start_menu
node_patcher -.->|"may dispatch"| node_start_experience
node_patcher -.->|"may dispatch"| node_window_switcher
node_patcher -.->|"may dispatch"| node_shell_host
node_patcher -.->|"may dispatch"| node_twinui
node_patcher -.->|"may dispatch"| node_search
node_patcher -.->|"may dispatch"| node_archive
node_patcher -.->|"may dispatch"| node_flyouts
node_weather_factory -.->|"creates host"| node_weather

click node_installer "https://github.com/valinet/explorerpatcher/blob/master/ep_setup/ep_setup.c"
click node_updater "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/updates.cpp"
click node_settings "https://github.com/valinet/explorerpatcher/blob/master/ep_gui/GUI.c"
click node_settings_module "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartMenuSettings.cpp"
click node_patcher "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/dllmain.c"
click node_taskbar "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/Taskbar10.cpp"
click node_taskbar_center "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/TaskbarCenter.cpp"
click node_start_menu "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartMenu.c"
click node_start_experience "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartExperience.cpp"
click node_window_switcher "https://github.com/valinet/explorerpatcher/blob/master/ep_extra_valinet.win7alttab/main.c"
click node_shell_host "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ShellExperienceHostPatches.cpp"
click node_twinui "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/TwinUIPatches.cpp"
click node_search "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/HideExplorerSearchBar.c"
click node_archive "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ArchiveMenu.c"
click node_flyouts "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ImmersiveFlyouts.c"
click node_weather "https://github.com/valinet/explorerpatcher/blob/master/ep_weather_host/ep_weather_host.c"
click node_weather_factory "https://github.com/valinet/explorerpatcher/blob/master/ep_weather_host/ep_weather_factory.c"
click node_localization "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/Localization.cpp"
click node_settings_monitor "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/SettingsMonitor.c"
click node_startup_sound "https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartupSound.cpp"

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_installer,node_updater,node_user toneBlue
class node_settings,node_settings_module toneAmber
class node_patcher,node_taskbar,node_taskbar_center,node_start_menu,node_start_experience,node_window_switcher,node_shell_host,node_twinui,node_search,node_archive,node_flyouts toneMint
class node_weather,node_weather_factory,node_localization,node_settings_monitor,node_startup_sound toneRose
```

## Components

### Install and maintenance

- [Setup installer](https://github.com/valinet/explorerpatcher/blob/master/ep_setup/ep_setup.c): `ep_setup/ep_setup.c`
- [Built-in updates](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/updates.cpp): `ExplorerPatcher/updates.cpp`

### Settings experience

- [Properties UI](https://github.com/valinet/explorerpatcher/blob/master/ep_gui/GUI.c): `ep_gui/GUI.c`
- [Settings backend](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartMenuSettings.cpp): `ExplorerPatcher/StartMenuSettings.cpp`

### Shell customization

- [Shell patcher](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/dllmain.c): `ExplorerPatcher/dllmain.c`
- [Taskbar styles](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/Taskbar10.cpp): `ExplorerPatcher/Taskbar10.cpp`
- [Taskbar centering](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/TaskbarCenter.cpp): `ExplorerPatcher/TaskbarCenter.cpp`
- [Start menu](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartMenu.c): `ExplorerPatcher/StartMenu.c`
- [Start experience](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartExperience.cpp): `ExplorerPatcher/StartExperience.cpp`
- [Window switcher](https://github.com/valinet/explorerpatcher/blob/master/ep_extra_valinet.win7alttab/main.c): `ep_extra_valinet.win7alttab/main.c`
- [Shell host patches](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ShellExperienceHostPatches.cpp): `ExplorerPatcher/ShellExperienceHostPatches.cpp`
- [TwinUI patches](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/TwinUIPatches.cpp): `ExplorerPatcher/TwinUIPatches.cpp`
- [Explorer search bar](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/HideExplorerSearchBar.c): `ExplorerPatcher/HideExplorerSearchBar.c`
- [Archive menu](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ArchiveMenu.c): `ExplorerPatcher/ArchiveMenu.c`
- [Immersive flyouts](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/ImmersiveFlyouts.c): `ExplorerPatcher/ImmersiveFlyouts.c`

### Runtime services

- [Weather flyout](https://github.com/valinet/explorerpatcher/blob/master/ep_weather_host/ep_weather_host.c): `ep_weather_host/ep_weather_host.c`
- [Weather factory](https://github.com/valinet/explorerpatcher/blob/master/ep_weather_host/ep_weather_factory.c): `ep_weather_host/ep_weather_factory.c`
- [Localization](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/Localization.cpp): `ExplorerPatcher/Localization.cpp`
- [Settings monitor](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/SettingsMonitor.c): `ExplorerPatcher/SettingsMonitor.c`
- [Startup sound](https://github.com/valinet/explorerpatcher/blob/master/ExplorerPatcher/StartupSound.cpp): `ExplorerPatcher/StartupSound.cpp`

### Other components

- **Desktop user**

## Connections

- Desktop user → Setup installer: installs
- Setup installer → Shell patcher: installs files
- Desktop user → Properties UI: opens Properties
- Properties UI → Settings backend: configures options
- Desktop user → Built-in updates: checks updates
- Properties UI → Built-in updates: configures updates
- Desktop user → Taskbar styles: chooses style
- Desktop user → Start menu: chooses style
- Desktop user → Window switcher: chooses style
- Shell patcher → Weather flyout: initializes flyout (evidence: `ExplorerPatcher/dllmain.c`)
- Properties UI → Weather flyout: uses weather interface
- Shell patcher → Taskbar styles: may dispatch
- Shell patcher → Taskbar centering: may dispatch
- Shell patcher → Start menu: may dispatch
- Shell patcher → Start experience: may dispatch
- Shell patcher → Window switcher: may dispatch
- Shell patcher → Shell host patches: may dispatch
- Shell patcher → TwinUI patches: may dispatch
- Shell patcher → Explorer search bar: may dispatch
- Shell patcher → Archive menu: may dispatch
- Shell patcher → Immersive flyouts: may dispatch
- Weather factory → Weather flyout: creates host
