# amnweb/thide architecture

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

- Interactive diagram: https://gitdiagram.com/amnweb/thide
- Repository: https://github.com/amnweb/thide

## Overview

THide is a Windows taskbar visibility utility. Users launch its tray-based GUI or issue CLI commands; the CLI can start the GUI, send it control messages, or manage login autostart. In GUI mode, the app enforces single-instance operation, dispatches tray and IPC events, and monitors taskbar visibility. The excerpts show the key modules and IPC mechanism, but omit portions of the GUI event handler, so detailed handler-to-action wiring is limited to documented behavior.

Main entry points: [`src/main.rs`](https://github.com/amnweb/thide/blob/main/src/main.rs) (Application Entry), [`src/cli.rs`](https://github.com/amnweb/thide/blob/main/src/cli.rs) (CLI Commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI Control"]
  node_cli["CLI Commands<br/>[cli.rs]"]
  node_autostart["Autostart Manager<br/>[cli.rs]"]
end

subgraph group_gui["GUI Runtime"]
  node_app["Application Entry<br/>[main.rs]"]
  node_instance["Instance Guard<br/>[main.rs]"]
  node_tray["Tray Menu<br/>[main.rs]"]
  node_eventloop["GUI Event Loop<br/>[main.rs]"]
  node_ipc["IPC Window<br/>[main.rs]"]
end

subgraph group_taskbar["Taskbar Control"]
  node_monitor["Visibility Monitor<br/>[main.rs]"]
  node_manager["State Manager<br/>[main.rs]"]
  node_discovery["Taskbar Discovery<br/>[main.rs]"]
  node_visibility["Visibility Control<br/>[main.rs]"]
end

node_user(("User"))
node_registry[("Windows Registry")]
node_windows["Windows Taskbar"]

node_user -->|"runs commands"| node_cli
node_user -->|"launches GUI"| node_app
node_app -->|"dispatches CLI"| node_cli
node_cli -->|"starts GUI"| node_app
node_cli -->|"posts commands"| node_ipc
node_cli -->|"manages startup"| node_autostart
node_autostart -->|"writes or deletes"| node_registry
node_app -->|"checks instance"| node_instance
node_app -->|"creates menu"| node_tray
node_app -->|"runs loop"| node_eventloop
node_app -->|"creates window"| node_ipc
node_ipc -->|"dispatches events"| node_eventloop
node_tray -->|"provides actions"| node_eventloop
node_eventloop -->|"handles actions"| node_visibility
node_eventloop -->|"enforces state"| node_manager
node_app -->|"starts thread"| node_monitor
node_monitor -->|"checks visibility"| node_discovery
node_monitor -->|"restores hidden state"| node_visibility
node_manager -->|"sets appbar state"| node_windows
node_visibility -->|"finds taskbars"| node_discovery
node_discovery -->|"queries windows"| node_windows
node_visibility -->|"shows or hides"| node_windows

click node_cli "https://github.com/amnweb/thide/blob/main/src/cli.rs"
click node_autostart "https://github.com/amnweb/thide/blob/main/src/cli.rs"
click node_app "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_instance "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_tray "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_eventloop "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_ipc "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_monitor "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_manager "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_discovery "https://github.com/amnweb/thide/blob/main/src/main.rs"
click node_visibility "https://github.com/amnweb/thide/blob/main/src/main.rs"

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_cli,node_autostart,node_user toneBlue
class node_app,node_instance,node_tray,node_eventloop,node_ipc,node_registry toneAmber
class node_monitor,node_manager,node_discovery,node_visibility toneMint
class node_windows toneRose
```

## Components

### CLI Control

- [CLI Commands](https://github.com/amnweb/thide/blob/main/src/cli.rs): `src/cli.rs`
- [Autostart Manager](https://github.com/amnweb/thide/blob/main/src/cli.rs): `src/cli.rs`

### GUI Runtime

- [Application Entry](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [Instance Guard](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [Tray Menu](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [GUI Event Loop](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [IPC Window](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`

### Taskbar Control

- [Visibility Monitor](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [State Manager](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [Taskbar Discovery](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`
- [Visibility Control](https://github.com/amnweb/thide/blob/main/src/main.rs): `src/main.rs`

### Other components

- **User**
- **Windows Registry**
- **Windows Taskbar**

## Connections

- User → CLI Commands: runs commands
- User → Application Entry: launches GUI
- Application Entry → CLI Commands: dispatches CLI
- CLI Commands → Application Entry: starts GUI
- CLI Commands → IPC Window: posts commands
- CLI Commands → Autostart Manager: manages startup
- Autostart Manager → Windows Registry: writes or deletes
- Application Entry → Instance Guard: checks instance
- Application Entry → Tray Menu: creates menu
- Application Entry → GUI Event Loop: runs loop
- Application Entry → IPC Window: creates window
- IPC Window → GUI Event Loop: dispatches events
- Tray Menu → GUI Event Loop: provides actions
- GUI Event Loop → Visibility Control: handles actions
- GUI Event Loop → State Manager: enforces state
- Application Entry → Visibility Monitor: starts thread
- Visibility Monitor → Taskbar Discovery: checks visibility
- Visibility Monitor → Visibility Control: restores hidden state
- State Manager → Windows Taskbar: sets appbar state
- Visibility Control → Taskbar Discovery: finds taskbars
- Taskbar Discovery → Windows Taskbar: queries windows
- Visibility Control → Windows Taskbar: shows or hides
