Important
Full documentation: github.com/Quadstronaut/QuadClicker/wiki β Installation, CLI Reference, hotkey notes, troubleshooting, and building from source. This README is the quickstart and status overview; the wiki is the canonical deep reference.
QuadClicker is a fast, native, open-source auto-clicker: fully configurable, scriptable via CLI, and built as a monorepo with three separate native applications β no cross-platform frameworks, ever.
| Platform | Language | Framework | Min OS |
|---|---|---|---|
| πͺ Windows 10/11 | C# / .NET 10 | WPF | Windows 10 22H2 |
| π macOS | Swift | SwiftUI | macOS 13 Ventura |
| π§ Linux | C++ | Qt6 | Ubuntu 22.04 / Fedora 38 |
| Feature | Description |
|---|---|
| Click Rate | Pick Delay (ms / sec / min) or Frequency (per sec / per min / per hour) via radio. CLI accepts free-form: 100ms, 5s, 2min, 10/s, 10cps, 600/min, 600cpm, 60/h, 60cph, or a bare integer (ms). Bounds: 1 ms β€ delay β€ 360 min. |
| Mouse Button | Left, Right, or Middle |
| Click Type | Single or Double (uses OS double-click interval) |
| Location Modes | Current cursor position Β· Fixed XY coordinate Β· Visual overlay picker |
| Stop Conditions | After N clicks Β· After N seconds Β· Manual stop |
| Idle Detection | Wait for N seconds of system idle before starting |
| Hotkeys | Independently configurable start and stop hotkeys (global, works when minimized) |
| System Tray | Minimize to tray; close button quits |
| Always on Top | Optional float above all windows |
| Settings Persistence | All settings saved and restored between launches |
| CLI Mode | Same binary, full headless execution |
| Dark Theme | Native dark mode. Windows ships the new "Taneth" palette (deep-green hull, warm gold HUD accent); macOS and Linux still ship the original emerald-green palette in source until the redesign is ported. |
QuadClicker/
βββ windows/ β WPF / C# / .NET 10
βββ macos/ β SwiftUI / Swift
βββ linux/ β Qt6 / C++
βββ .github/workflows/ β CI/CD per platform + release
βββ Chocolatey/ β Chocolatey package manifest
βββ Scoop/ β Scoop bucket manifest
βββ CODE_SIGNING.md β Signing and notarization guide
βββ LICENSE
βββ README.md
graph TD
subgraph Monorepo["QuadClicker Monorepo"]
W["πͺ windows/<br/>C# Β· .NET 10 Β· WPF"]
M["π macos/<br/>Swift Β· SwiftUI"]
L["π§ linux/<br/>C++ Β· Qt6"]
end
subgraph CI[".github/workflows/"]
BW["build-windows.yml"]
BM["build-macos.yml"]
BL["build-linux.yml"]
R["release.yml"]
end
subgraph Dist["Distribution"]
EXE["QuadClicker.exe<br/>(self-contained)"]
PKG["Chocolatey / Scoop<br/>winget Β· Homebrew<br/>(in flight)"]
end
W --> BW --> EXE
M --> BM
L --> BL
BW & BM & BL --> R --> EXE
EXE --> PKG
πͺ Windows β C# / .NET 10 / WPF
Requirements: .NET 10 SDK, Windows 10 22H2+
# Build
dotnet build windows/QuadClicker.csproj -c Release
# Run tests
dotnet test windows/Tests/QuadClicker.Tests.csproj
# Publish self-contained single-file (matches release.yml)
dotnet publish windows/QuadClicker.csproj -c Release -r win-x64 --self-contained true \
-p:PublishSingleFile=true \
-p:IncludeNativeLibrariesForSelfExtract=true \
-p:EnableCompressionInSingleFile=true \
-o artifacts/windowsπ macOS β Swift / SwiftUI
Requirements: Xcode 15+, macOS 13+, Apple Developer account (for signing/notarization)
# Open in Xcode
open macos/QuadClicker.xcodeproj
# Build from command line
xcodebuild -project macos/QuadClicker.xcodeproj \
-scheme QuadClicker \
-configuration Release \
-derivedDataPath artifacts/macos
# Run tests
xcodebuild test -project macos/QuadClicker.xcodeproj \
-scheme QuadClickerTests \
-destination 'platform=macOS'[!WARNING]
CGEventPostand global hotkeys require Accessibility permission. The app prompts on first launch when hotkeys are configured. Code signing and notarization are required for distribution β seeCODE_SIGNING.md.
π§ Linux β C++ / Qt6 / CMake
Requirements: Qt 6.2+, CMake 3.20+, GCC 11+ or Clang 13+, libXtst, libXss, libX11
[!NOTE] Verified: Ubuntu 24.04 LTS (Qt 6.4.2, GCC 13.3) β including under WSL2 with WSLg.
# Install dependencies (Ubuntu/Debian)
sudo apt install build-essential cmake ninja-build pkg-config \
qt6-base-dev qt6-base-dev-tools qt6-tools-dev \
libqt6svg6-dev libxtst-dev libxss-dev
# Configure and build
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release linux/
cmake --build build
# Run tests
ctest --test-dir build --output-on-failure
# Install
sudo cmake --install buildWhen any argument other than --minimized, --no-update-check, or --post-update is passed, the app runs headless with no GUI. See the wiki CLI Reference for the full flag table and examples.
quadclicker [OPTIONS]
π Full flag table
| Argument | Type | Default | Description |
|---|---|---|---|
--rate <value> |
string | required | Click rate. Formats: 100ms Β· 5s Β· 2min Β· 10/s Β· 600/min Β· 60/h (1 ms β 360 min) |
--button <left|right|middle> |
enum | left |
Mouse button |
--type <single|double> |
enum | single |
Click type |
--location <x,y> |
int pair | cursor | Fixed screen coordinate |
--stop-after-clicks <n> |
int | 0 (unlimited) | Stop after N clicks |
--stop-after-seconds <n> |
float | 0 (unlimited) | Stop after N seconds |
--idle-wait <n> |
float | 0 (disabled) | Wait for N seconds of idle before starting |
--no-gui |
flag | auto | Force headless mode |
--minimized |
flag | off | Launch GUI minimized to tray (GUI-compatible β does not trigger CLI mode) |
--no-update-check |
flag | off | Skip the launch-time update check; GUI-compatible (Windows only) |
--check-update |
flag | β | Check for update, print result, exit 0 (Windows only) |
--version |
flag | β | Print version and exit 0 |
--help |
flag | β | Print usage and exit 0 |
Exit codes: 0 success Β· 1 invalid argument Β· 2 runtime error Β· 130 Ctrl+C
Examples:
# Click at cursor, 10 times/second
quadclicker --rate 10/s
# Right-click at (500,300), stop after 100 clicks
quadclicker --rate 10/s --location 500,300 --button right --stop-after-clicks 100
# Double-click every 2 seconds for 30 seconds
quadclicker --rate 2000ms --type double --stop-after-seconds 30
# One click per minute, for an hour (using the new units)
quadclicker --rate 60/h --stop-after-seconds 3600
# One click every 5 minutes
quadclicker --rate 5min
# Click after 5 seconds of idle
quadclicker --rate 1000ms --idle-wait 5
# Launch GUI minimized to tray
quadclicker --minimizedThe Windows app ships the Taneth palette: a deep-green hull background with a warm gold HUD accent. macOS and Linux still ship the original emerald-green tokens in source β porting the new palette is tracked under the Phase 2/3 follow-ups.
ποΈ Full Taneth token table (Windows)
| Token | Value | Usage |
|---|---|---|
| Accent | #E8B547 |
Start button, focus rings, active status (gold) |
| Accent Hover | #F5C75A |
Hover on accent elements |
| Accent Pressed | #B88A2A |
Pressed state |
| Accent Foreground | #0A1410 |
Dark text on accent fills |
| Danger | #E04030 |
Stop button, errors |
| Danger Hover | #C8331E |
Hover on danger elements |
| Background | #0A1410 |
Window background |
| Surface | #13211C |
Input backgrounds |
| Surface Elevated | #1B2E27 |
Raised surfaces (small buttons, hover items) |
| Border | #2D5448 |
Input borders |
| Text Primary | #E8DCB0 |
Main text |
| Text Secondary | #7A9088 |
Labels, helpers |
| Text Disabled | #3D5048 |
Disabled text |
| Status Waiting | #5BA89A |
Idle wait indicator |
Settings are persisted automatically on exit and loaded on launch. JSON format is identical across platforms for cross-platform compatibility.
| Platform | Settings Path |
|---|---|
| πͺ Windows | %APPDATA%\QuadClicker\settings.json |
| π macOS | ~/Library/Application Support/QuadClicker/settings.json |
| π§ Linux | ~/.config/quadclicker/settings.json |
| Phase | Description | Status |
|---|---|---|
| 0 | Monorepo restructure + CI/CD skeleton | β Done |
| 1 | Windows WPF β shipped at v0.1.1 as a single-file EXE; version label visible bottom-right of the window, tray tooltip "QuadClicker - now with 4x the clicks" | β Done |
| 2 | macOS SwiftUI β code-complete, unverified (never compiled or run; build-macos.yml is a no-op placeholder) |
π¨ Pending Mac + Xcode |
| 3 | Linux Qt6/C++ β build verified on Ubuntu 24.04 (Qt 6.4.2) under WSL2/WSLg: clean compile, all unit tests pass, CLI happy + parse-error paths exercised, GUI launches and renders. CI (build-linux.yml) now runs the real build. No .deb / AppImage published yet. |
β Built + tested |
Warning
Linux Wayland: Global hotkeys are not supported under Wayland. XGrabKey (X11) is used; the HotkeyManager detects the Wayland platform at startup and disables itself entirely. Use the Start/Stop button or the system tray instead. A compositor-side D-Bus shortcut API is a future milestone.
Note
The mode-based Click Rate redesign and the Taneth palette are now in all three platforms' source. Linux is verified end-to-end; macOS source has them but remains unbuilt pending an Xcode-equipped machine.
Latest builds are published on GitHub Releases:
github.com/Quadstronaut/QuadClicker/releases/latest
| Platform | Artifact | Status | Notes |
|---|---|---|---|
| πͺ Windows x64 | QuadClicker.exe (v0.1.1) |
β Available | Self-contained single-file EXE β no .NET install required. Download and run. |
| π macOS | β | β³ Not yet released | Phase 2 build is unverified; no signed/notarized artifact yet. |
| π§ Linux | β | β³ Not yet released | Build verified on Ubuntu 24.04 (Qt 6.4.2). No signed .deb / .rpm / AppImage published yet β packaging is the next step. |
Caution
The Windows binary is currently unsigned β Windows SmartScreen will warn on first launch until an Authenticode certificate is in place (see CODE_SIGNING.md).
QuadClicker is being prepared for distribution through every major package manager. Manifests for these are already in the repo and pinned at v0.1.1:
| Channel | Manifest | Install command (once published) |
|---|---|---|
| Chocolatey (Windows) | Chocolatey/quadclicker.nuspec |
choco install quadclicker |
| Scoop (Windows) | Scoop/quadclicker.json |
scoop install quadclicker |
| winget (Windows) | planned | winget install Quadstronaut.QuadClicker |
| Homebrew Cask (macOS) | planned | brew install --cask quadclicker |
Snap, Flatpak, AppImage, .deb (Linux) |
planned | various |
- Fork the repo
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push and open a Pull Request
Tip
Please open an issue first for major changes.
Copyright Β© 2026 Kyle Green / Quadstronaut. Licensed under the MIT License with an attribution clause: redistributions must retain credit to Kyle Green (Quadstronaut) and link back to github.com/Quadstronaut/QuadClicker.
Kyle Green (Quadstronaut) β github.com/Quadstronaut/QuadClicker
Inspired by Autoclick by Mahdi Bchatnia (2011β2021, GNU GPLv2)