bclicker

Crates.iobclicker
lib.rsbclicker
version0.1.0
created_at2025-09-17 14:57:29.217331+00
updated_at2025-09-17 14:57:29.217331+00
descriptionProfessional auto-clicker with TUI interface, global hotkeys, and system tray integration
homepagehttps://github.com/linux-brat/BClicker
repositoryhttps://github.com/linux-brat/BClicker
max_upload_size
id1843452
size178,045
Brat (linux-brat)

documentation

https://github.com/linux-brat/BClicker

README

BClicker Professional

GitHub release GitHub license Rust WARP

A professional Rust-based auto-clicker with a sleek Terminal User Interface

BClicker Screenshot

๐Ÿš€ Project Overview

BClicker Professional is a high-performance auto-clicker application with a TUI (Terminal User Interface) built using crossterm and tui-rs. The application provides professional auto-clicking functionality with global hotkey support, system tray integration, audio feedback, and statistics tracking.

โœจ Key Features

๐ŸŽฎ Core Features

  • ๐Ÿ–ฑ๏ธ High-Precision Clicking: Microsecond-accurate timing
  • โŒจ๏ธ Global Hotkeys: Control from anywhere (Windows)
  • ๐ŸŽจ Beautiful TUI: Terminal-based interface
  • ๐Ÿ“ˆ Statistics Tracking: Monitor your usage
  • ๐Ÿ”Š Audio Feedback: Optional click sounds
  • ๐Ÿ“ฑ System Tray: Background operation

โš™๏ธ Technical Features

  • ๐Ÿ Multi-threaded: Non-blocking performance
  • ๐Ÿ“‹ TOML Configuration: Human-readable settings
  • ๐Ÿ”” Cross-platform: Windows & Linux support
  • ๐Ÿ“ฆ Portable: Single executable
  • ๐Ÿšช Zero Dependencies: Standalone operation
  • ๐Ÿ”’ Memory Safe: Rust guarantees

๐Ÿ› ๏ธ Technology Stack

Component Technology Purpose
๐Ÿฆ€ Language Rust (2025 edition) High-performance systems programming
๐Ÿ–ฅ๏ธ UI Framework tui-rs + crossterm Terminal-based user interface
๐Ÿ–ฑ๏ธ Mouse Control enigo Cross-platform mouse automation
๐Ÿ”Š Audio rodio Non-blocking sound effects
โš™๏ธ Configuration TOML + serde Human-readable config files
๐Ÿ“ฑ System Tray tray-item Background system integration
๐Ÿ”” Notifications notify-rust Cross-platform notifications
๐ŸชŸ Platform Windows + Win32 API Global hotkey support

โšก Quick Start (TL;DR)

# ๐Ÿš€ Get up and running in 30 seconds!
git clone https://github.com/linux-brat/BClicker.git
cd BClicker
cargo run --release

๐ŸŽฎ Controls:

  • Space - Start/Stop clicking
  • Tab - Switch between presets
  • h - Help menu
  • q - Quit

๐Ÿ’ซ WARP Users: This works perfectly in WARP terminal with full Unicode support and beautiful rendering!


๐Ÿ“ฆ Detailed Installation

๐Ÿ”ง Prerequisites

  • ๐Ÿฆ€ Rust toolchain: Install from rustup.rs
  • ๐Ÿ“‹ Git: For cloning the repository
  • ๐ŸชŸ Windows: Windows SDK for global hotkey functionality
  • ๐Ÿง Linux: Audio development libraries (ALSA/PulseAudio)

๐Ÿ’ป One-Click Installation

๐ŸชŸ Windows (PowerShell)

# ๐Ÿš€ Quick Setup - Copy & Paste!
git clone https://github.com/linux-brat/BClicker.git
cd BClicker
cargo build --release

# โ–ถ๏ธ Run BClicker
.\target\release\bclicker.exe

# ๐ŸŒ Optional: Add to PATH for global access
# Copy target\release\bclicker.exe to C:\Windows\System32\ or your preferred PATH directory

๐Ÿ“ Note: Replace bclicker.exe with the actual executable name if different

๐Ÿง Linux (Bash)

# ๐Ÿ“ฆ Install audio libraries (Ubuntu/Debian)
sudo apt update && sudo apt install libasound2-dev pkg-config

# ๐ŸŽ† For other distributions:
# Fedora: sudo dnf install alsa-lib-devel pkgconf
# Arch: sudo pacman -S alsa-lib pkgconf

# ๐Ÿš€ Quick Setup - Copy & Paste!
git clone https://github.com/linux-brat/BClicker.git
cd BClicker
cargo build --release

# โ–ถ๏ธ Run BClicker
./target/release/bclicker

# ๐ŸŒ Optional: Install system-wide
sudo cp target/release/bclicker /usr/local/bin/

๐Ÿ“ฆ Direct Cargo Installation

# ๐Ÿš€ Install directly from GitHub
cargo install --git https://github.com/linux-brat/BClicker.git

# ๐ŸŽ† Or install from crates.io (when published)
cargo install bclicker

โš™๏ธ WARP Development Commands

๐Ÿ’ก WARP Users: These commands work perfectly in WARP terminal with syntax highlighting and autocompletion!

๐Ÿ”จ Build & Run Commands

Command Description WARP Tip
cargo build ๐Ÿš€ Debug build ๐Ÿ“ Use WARP's AI to explain any build errors
cargo build --release โšก Optimized release build ๐Ÿ“Š View build progress in WARP's enhanced output
cargo run โ–ถ๏ธ Run in debug mode ๐Ÿ” Perfect for development with WARP's terminal multiplexing
cargo run --release ๐Ÿ Run optimized version โš™๏ธ Best performance for testing
# ๐Ÿš€ Quick Development Cycle
cargo run          # Fast compilation, debug info
cargo run --release # Optimized performance

๐Ÿงช Testing & Code Quality

Command Purpose WARP Feature
cargo test ๐Ÿงช Run all tests ๐Ÿ“ˆ Test results beautifully formatted
cargo check โš™๏ธ Fast syntax check โšก Lightning-fast feedback loop
cargo fmt ๐ŸŽจ Format code ๐Ÿ“ Instant code beautification
cargo clippy ๐Ÿ” Lint analysis ๐Ÿ’ก Smart suggestions in WARP
cargo clippy -- -D warnings ๐Ÿ›ก๏ธ Strict linting ๐Ÿšซ Zero tolerance for warnings
# ๐Ÿš€ Code Quality Pipeline
cargo check      # Quick syntax validation
cargo fmt        # Auto-format code
cargo clippy     # Catch common issues
cargo test       # Ensure everything works

๐Ÿ› ๏ธ Development Utilities

# ๐Ÿงผ Clean build artifacts
cargo clean

# ๐Ÿ†• Update dependencies
cargo update

# ๐ŸŒณ Show dependency tree
cargo tree

# ๐Ÿ”’ Security audit (install with: cargo install cargo-audit)
cargo audit

# ๐Ÿ“‚ Generate documentation
cargo doc --open

# ๐Ÿ“ˆ Performance profiling
cargo build --release
time ./target/release/bclicker

๐Ÿ’ซ WARP Pro Tip: Use WARP's AI assistant to explain any cargo commands or help debug build issues!

Architecture Overview

Core Application Structure

The application follows a modular architecture with clear separation of concerns:

Main Components:

  1. App State Management (App struct) - Central application state, configuration, and UI modes
  2. Event System - Multi-threaded event handling for input, ticking, and quit signals
  3. Auto-Clicker Engine - Dedicated thread for mouse clicking with precise timing
  4. UI Rendering - TUI-based interface with dynamic content and help system
  5. System Integration - Global hotkeys, system tray, and notifications

Key Data Structures

Configuration System:

  • Config struct handles all persistent settings
  • Statistics struct tracks usage metrics across sessions
  • KeyCombo struct represents global hotkey combinations
  • Auto-saves to bclicker_config.toml in the current directory

Threading Architecture:

  • Main Thread: UI rendering and input handling
  • Clicker Thread: High-precision mouse clicking loop
  • Event Threads: Separate threads for input capture and tick events
  • Hotkey Thread: Windows-specific global hotkey monitoring
  • Audio Threads: Spawned per-sound for non-blocking audio

Input Mode System

The application uses a state machine for different input modes:

  • Normal - Standard navigation and controls
  • EditingCps - Custom CPS value input
  • SettingKeybind - Capturing hotkey combinations
  • AwaitingKeybind - Brief preparation state before capturing
  • ShowingHelp - Help screen display

Platform-Specific Features

Windows Integration:

  • Global hotkey registration via Win32 API (RegisterHotKey)
  • System message loop for hotkey detection
  • Windows-specific virtual key code mapping

Cross-Platform Considerations:

  • Mouse control works on all platforms via enigo
  • System tray and notifications have fallback behavior
  • Global hotkeys currently Windows-only with graceful degradation

Configuration and Data Files

Primary Configuration File

  • Location: bclicker_config.toml (current directory)
  • Format: TOML with nested sections
  • Auto-generated: Creates default config if missing
  • Auto-saved: Persists changes immediately

Configuration Structure

cps_presets = [20, 30, 40, 50]  # Available CPS preset values
selected_preset = 2              # Currently selected preset index
custom_cps_value = 99           # User-defined CPS value
using_custom_cps = false        # Whether to use custom vs preset
selected_button = 0             # 0=Left, 1=Right mouse button
sound_enabled = false           # Audio feedback toggle

[toggle_keybind]                # Global hotkey configuration
mods = 6                        # Modifier bitmask (1=Shift, 2=Ctrl, 4=Alt)
key = "B"                       # Key character or function key

[statistics]                    # Usage tracking
total_clicks = 0                # All-time click count
session_clicks = 0              # Current session clicks
total_sessions = 0              # Number of application launches
last_session_start = 0          # Unix timestamp
session_duration = 0            # Session length in seconds

Development Considerations

Performance Characteristics

  • Click Precision: Microsecond-accurate timing using Duration::from_micros(1_000_000 / cps)
  • UI Responsiveness: 60 FPS rendering loop with conditional redrawing
  • Memory Efficiency: Minimal allocations in hot paths, Arc/Mutex for shared state
  • CPU Usage: Adaptive sleep timing based on UI visibility

Thread Safety Patterns

  • Arc<AtomicBool> for simple boolean flags (clicker running, UI visibility)
  • Arc<Mutex<T>> for complex shared data (statistics, configuration)
  • MPSC channels for event communication between threads
  • Lock contention minimized through brief critical sections

Error Handling Strategy

  • Graceful degradation for system integration features
  • Configuration corruption handled with default fallback
  • Non-critical errors logged but don't crash application
  • Proper cleanup on exit with terminal restoration

Key Extension Points

Adding New Features:

  1. New Input Modes: Extend InputMode enum and add handlers in handle_input()
  2. Additional Statistics: Add fields to Statistics struct with migration logic
  3. Audio Enhancements: Extend AudioManager with new sound methods
  4. Platform Support: Implement platform-specific modules for hotkeys/tray

UI Customization:

  • Theme system already in place with Theme struct
  • Modular widget rendering in draw_ui() function
  • Help system supports scrolling and formatted content
  • Status bar easily extensible with new information

Common Patterns

Configuration Changes:

// Always save config after modifications
app.config.some_setting = new_value;
app.save_config();
app.needs_redraw = true;  // Trigger UI update

Shared State Updates:

// Safe access to shared statistics
if let Ok(mut stats) = app.stats_tracker.lock() {
    stats.some_field += 1;
    // Lock automatically released
}

Event-Driven Updates:

// Mark redraw needed for next frame
app.needs_redraw = true;
// Only redraw when UI is visible and needs update

Troubleshooting

Common Build Issues

  • Missing Windows SDK: Global hotkeys require Windows development headers
  • Audio Dependencies: rodio may need system audio libraries on Linux
  • Terminal Compatibility: Some terminals may not support all TUI features

Runtime Considerations

  • Hotkey Conflicts: Global hotkeys may conflict with other applications
  • Permission Issues: Some antivirus software may flag mouse automation
  • Terminal Encoding: Unicode characters in UI require UTF-8 terminal support

Development Tips

  • Use cargo run for development with debug info and faster compilation
  • The application handles terminal cleanup automatically on exit
  • Configuration file is human-readable and can be manually edited
  • Statistics are preserved across application restarts
Commit count: 8

cargo fmt