# siubikyt/autoclicker architecture

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

## Overview

Autoclicker is a small Linux desktop app: it discovers mouse event devices, lets the user choose one and set clicks per second, starts and stops clicking on that device’s extra-button events, and emits left-button events through a virtual mouse. The workflow and UI are implemented together in `main.c`; the separate style file supplies the dashboard’s appearance. The README gives only the product name, so this map relies on the sampled `main.c` for behavior.

Main entry points: [`main.c`](https://github.com/siubikyt/autoclicker/blob/main/main.c) (Autoclicker app), [`Assets/Styles/style_amber.rgs`](https://github.com/siubikyt/autoclicker/blob/main/Assets/Styles/style_amber.rgs) (Amber style)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_controls["Dashboard controls"]
  node_app["Autoclicker app<br/>[main.c]"]
  node_style["Amber style<br/>[style_amber.rgs]"]
end

subgraph group_clicking["Click workflow"]
end

subgraph group_linuxio["Linux input/output"]
  node_mouse["Mouse input device"]
  node_inputdevices["Input event devices"]
  node_virtualmouse["Virtual mouse"]
end

node_user(("User"))

node_user -->|"sets CPS and device"| node_app
node_app -->|"loads style"| node_style
node_app -->|"discovers devices"| node_inputdevices
node_mouse -->|"sends button events"| node_app
node_app -->|"emits click events"| node_virtualmouse

click node_app "https://github.com/siubikyt/autoclicker/blob/main/main.c"
click node_style "https://github.com/siubikyt/autoclicker/blob/main/Assets/Styles/style_amber.rgs"

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_style,node_user toneBlue
class node_mouse,node_inputdevices,node_virtualmouse toneMint
```

## Components

### Dashboard controls

- [Autoclicker app](https://github.com/siubikyt/autoclicker/blob/main/main.c): `main.c`
- [Amber style](https://github.com/siubikyt/autoclicker/blob/main/Assets/Styles/style_amber.rgs): `Assets/Styles/style_amber.rgs`

### Linux input/output

- **Mouse input device**
- **Input event devices**
- **Virtual mouse**

### Other components

- **User**

## Connections

- User → Autoclicker app: sets CPS and device
- Autoclicker app → Amber style: loads style
- Autoclicker app → Input event devices: discovers devices
- Mouse input device → Autoclicker app: sends button events
- Autoclicker app → Virtual mouse: emits click events
