# joyhak/quickswitch architecture

> Architecture diagram of the GitHub repository joyhak/quickswitch, 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/joyhak/quickswitch
- Repository: https://github.com/joyhak/quickswitch

## Overview

QuickSwitch is a Windows AutoHotkey utility for switching to directories from supported file managers, saved favorites, or clipboard paths while opening or saving files. The documented workflow is: open a file dialog, press Ctrl+Q to show the Menu, then select a path; AutoSwitch can instead change the dialog path automatically. The tree suggests separate menu, dialog, settings, and manager-integration modules, but no source excerpts were provided, so internal call relationships are not asserted.

Main entry points: [`Lib/MenuFrontend.ahk`](https://github.com/joyhak/quickswitch/blob/main/Lib/MenuFrontend.ahk) (Path menu), [`Lib/TotalCommander.ahk`](https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander.ahk) (Total Commander), [`Lib/SettingsFrontend.ahk`](https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsFrontend.ahk) (Settings UI), [`Lib/ManagerClasses.ahk`](https://github.com/joyhak/quickswitch/blob/main/Lib/ManagerClasses.ahk) (Manager paths)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application and menu"]
  node_app["QuickSwitch app<br/>[QuickSwitch.ahk]"]
  node_menu["Path menu<br/>[MenuFrontend.ahk]"]
  node_menu_logic["Menu logic<br/>[MenuBackend.ahk]"]
end

subgraph group_paths["Path sources"]
  node_manager_paths["Manager paths<br/>[ManagerClasses.ahk]"]
  node_total_commander["Total Commander<br/>[TotalCommander.ahk]"]
  node_tc_tabs["Commander tabs<br/>[Tabs.ahk]"]
  node_tc_search["Commander search<br/>[Search.ahk]"]
  node_tc_ini["Commander config<br/>[Ini.ahk]"]
  node_favorites["Favorite paths"]
  node_clipboard["Clipboard paths<br/>[Values.ahk]"]
end

subgraph group_dialogs["Dialog behavior"]
  node_dialogs["File dialogs<br/>[FileDialogs.ahk]"]
  node_autoswitch["AutoSwitch<br/>[Processes.ahk]"]
end

subgraph group_settings["Configuration"]
  node_settings_ui["Settings UI"]
  node_settings_logic["Settings logic"]
  node_settings_mouse["Mouse settings<br/>[SettingsMouse.ahk]"]
end

node_user(("User"))

node_user -->|"launches"| node_app
node_user -->|"opens Ctrl+Q"| node_menu
node_manager_paths -->|"supplies paths"| node_menu
node_total_commander -->|"provides tabs"| node_manager_paths
node_tc_tabs -.->|"exposes tabs"| node_total_commander
node_tc_search -.->|"supports search"| node_total_commander
node_tc_ini -.->|"uses configuration"| node_total_commander
node_favorites -->|"supplies paths"| node_menu
node_clipboard -->|"supplies paths"| node_menu
node_menu -->|"opens selected path"| node_dialogs
node_dialogs -->|"can auto-change"| node_autoswitch
node_user -->|"customizes menu"| node_settings_ui
node_settings_ui -.->|"configures options"| node_settings_logic
node_settings_ui -.->|"sets mouse controls"| node_settings_mouse

click node_app "https://github.com/joyhak/quickswitch/blob/main/QuickSwitch.ahk"
click node_menu "https://github.com/joyhak/quickswitch/blob/main/Lib/MenuFrontend.ahk"
click node_menu_logic "https://github.com/joyhak/quickswitch/blob/main/Lib/MenuBackend.ahk"
click node_manager_paths "https://github.com/joyhak/quickswitch/blob/main/Lib/ManagerClasses.ahk"
click node_total_commander "https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander.ahk"
click node_tc_tabs "https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Tabs.ahk"
click node_tc_search "https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Search.ahk"
click node_tc_ini "https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Ini.ahk"
click node_favorites "https://github.com/joyhak/quickswitch/tree/main/Favorites"
click node_clipboard "https://github.com/joyhak/quickswitch/blob/main/Lib/Values.ahk"
click node_dialogs "https://github.com/joyhak/quickswitch/blob/main/Lib/FileDialogs.ahk"
click node_autoswitch "https://github.com/joyhak/quickswitch/blob/main/Lib/Processes.ahk"
click node_settings_ui "https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsFrontend.ahk"
click node_settings_logic "https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsBackend.ahk"
click node_settings_mouse "https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsMouse.ahk"

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_app,node_menu,node_menu_logic,node_user toneBlue
class node_manager_paths,node_total_commander,node_tc_tabs,node_tc_search,node_tc_ini,node_favorites,node_clipboard toneAmber
class node_dialogs,node_autoswitch toneMint
class node_settings_ui,node_settings_logic,node_settings_mouse toneRose
```

## Components

### Application and menu

- [QuickSwitch app](https://github.com/joyhak/quickswitch/blob/main/QuickSwitch.ahk): `QuickSwitch.ahk`
- [Path menu](https://github.com/joyhak/quickswitch/blob/main/Lib/MenuFrontend.ahk): `Lib/MenuFrontend.ahk`
- [Menu logic](https://github.com/joyhak/quickswitch/blob/main/Lib/MenuBackend.ahk): `Lib/MenuBackend.ahk`

### Path sources

- [Manager paths](https://github.com/joyhak/quickswitch/blob/main/Lib/ManagerClasses.ahk): `Lib/ManagerClasses.ahk`
- [Total Commander](https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander.ahk): `Lib/TotalCommander.ahk`
- [Commander tabs](https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Tabs.ahk): `Lib/TotalCommander/Tabs.ahk`
- [Commander search](https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Search.ahk): `Lib/TotalCommander/Search.ahk`
- [Commander config](https://github.com/joyhak/quickswitch/blob/main/Lib/TotalCommander/Ini.ahk): `Lib/TotalCommander/Ini.ahk`
- [Favorite paths](https://github.com/joyhak/quickswitch/tree/main/Favorites): `Favorites`
- [Clipboard paths](https://github.com/joyhak/quickswitch/blob/main/Lib/Values.ahk): `Lib/Values.ahk`

### Dialog behavior

- [File dialogs](https://github.com/joyhak/quickswitch/blob/main/Lib/FileDialogs.ahk): `Lib/FileDialogs.ahk`
- [AutoSwitch](https://github.com/joyhak/quickswitch/blob/main/Lib/Processes.ahk): `Lib/Processes.ahk`

### Configuration

- [Settings UI](https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsFrontend.ahk): `Lib/SettingsFrontend.ahk`
- [Settings logic](https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsBackend.ahk): `Lib/SettingsBackend.ahk`
- [Mouse settings](https://github.com/joyhak/quickswitch/blob/main/Lib/SettingsMouse.ahk): `Lib/SettingsMouse.ahk`

### Other components

- **User**

## Connections

- User → QuickSwitch app: launches (evidence: `README.md`)
- User → Path menu: opens Ctrl+Q (evidence: `README.md`)
- Manager paths → Path menu: supplies paths (evidence: `README.md`)
- Total Commander → Manager paths: provides tabs (evidence: `README.md`)
- Commander tabs → Total Commander: exposes tabs
- Commander search → Total Commander: supports search
- Commander config → Total Commander: uses configuration
- Favorite paths → Path menu: supplies paths (evidence: `README.md`)
- Clipboard paths → Path menu: supplies paths (evidence: `README.md`)
- Path menu → File dialogs: opens selected path (evidence: `README.md`)
- File dialogs → AutoSwitch: can auto-change (evidence: `README.md`)
- User → Settings UI: customizes menu (evidence: `README.md`)
- Settings UI → Settings logic: configures options
- Settings UI → Mouse settings: sets mouse controls
