Files

6.8 KiB

Cursor Rush

A cross-platform application for customizing your cursor with gameified logic.

Features

  • Replace the system cursor with custom PNG images
  • Minimize to system tray for background operation
  • Windows support (macOS and Linux support in development)
  • Optimized rendering with low CPU usage
  • System tray integration with context menu
  • Global hotkey support
  • Steam integration for item drops
  • Tauri-based frontend with React

Project Structure

src/
├── app/                  # Application core logic
│   ├── mod.rs            # Main app module exports
│   ├── state.rs          # Application state management
│   ├── messages.rs       # Message definitions
│   └── cursor.rs         # Cursor-related functionality
├── ui/                   # User interface components
│   ├── mod.rs            # UI module exports
│   ├── view.rs           # View rendering logic
│   └── tray.rs           # System tray functionality
├── platform/             # Platform-specific implementations
│   ├── mod.rs            # Platform module exports
│   ├── windows/          # Windows-specific code
│   │   ├── mod.rs        # Windows module exports
│   │   ├── types.rs      # Windows type definitions
│   │   ├── state.rs      # Windows state management
│   │   └── cursor.rs     # Windows cursor handling
│   ├── macos/            # macOS-specific code (in development)
│   │   ├── mod.rs        # macOS module exports
│   │   ├── state.rs      # macOS state management
│   │   └── cursor.rs     # macOS cursor handling
│   ├── linux/            # Linux-specific code (in development)
│   │   ├── mod.rs        # Linux module exports
│   │   ├── state.rs      # Linux state management
│   │   └── cursor.rs     # Linux cursor handling
│   └── unsupported/      # Fallback for unsupported platforms
│       ├── mod.rs        # Unsupported module exports
│       ├── state.rs      # Unsupported state management
│       └── cursor.rs     # Unsupported cursor handling
├── integrations/         # External integrations
│   ├── mod.rs            # Integrations module exports
│   └── steam.rs          # Steam integration
├── utils/                # Utility functions and helpers
│   ├── mod.rs            # Utils module exports
│   ├── config.rs         # Configuration management
│   └── logging.rs        # Logging utilities
└── main.rs               # Application entry point

Building

Prerequisites

  • Rust 1.70.0 or later
  • Cargo
  • Node.js 16.0.0 or later
  • npm 7.0.0 or later
  • Platform-specific dependencies:
    • Windows: None (fully supported)
    • macOS: Development in progress
    • Linux: Development in progress

Dependencies

The application uses the following major dependencies:

  • Tauri 1.6.0 - Cross-platform framework
  • React - Frontend framework
  • image 0.24.7 - Image processing
  • winapi 0.3.9 - Windows API bindings
  • once_cell 1.19.0 - Lazy initialization

Build Commands

# Navigate to the frontend directory
cd frontend

# Install npm dependencies
npm install

# Run in development mode
npm run tauri dev

# Build for production
npm run tauri build

Usage

  1. Make sure you have Node.js and npm installed
  2. Navigate to the frontend directory: cd frontend
  3. Install dependencies if you haven't already: npm install
  4. Run the application in development mode: npm run tauri dev
  5. The application will start with a React frontend and Rust backend
  6. Use the UI to browse and select cursors
  7. The application will replace your system cursor with the selected image
  8. To exit, use the "Quit" button in the application or from the system tray

Custom Cursors

The application comes with sample cursors:

  • default.png - A simple default cursor
  • icon.png - An icon cursor
  • red.png - A red-colored cursor

To add your own cursors:

  1. Create PNG images with transparent backgrounds
  2. Place them in the frontend/src/cursors directory
  3. Restart the application to load the new cursors
  4. The cursor name in the UI will be derived from the filename

Hotkeys

  • Ctrl+Shift+F12: Exit the application (restores original system cursor)
    • If this hotkey fails, the application will try to use Ctrl+Alt+F12 or F12 as fallbacks

System Tray

  • Left-click: Show the application window
  • Right-click: Open the context menu with the following options:
    • Next cursor: Switch to the next cursor in the list
    • Show window: Show the application window
    • Quit: Exit the application and restore the original cursor

Performance

  • The application uses optimized rendering techniques to minimize CPU usage
  • On Windows, it uses the Windows API to efficiently replace system cursors
  • The application uses event-driven cursor updates instead of polling when possible
  • Cursor images are cached to improve performance when switching between cursors

Previously Fixed Issues

The following issues have been addressed in recent updates:

  • Task Manager compatibility: The application now properly handles elevated applications
  • System tray menu stability: Fixed issues with the tray menu disappearing when mousing over it

Steam Integration

The application includes integration with the Steam API for future gameified features:

  • Item drop functionality is implemented but not yet active
  • Steam must be running for this functionality to work

Project Structure (Tauri Version)

frontend/
├── src/                  # React frontend code
│   ├── App.jsx           # Main React component
│   ├── components/       # UI components
│   └── cursors/          # Cursor image files
├── src-tauri/            # Rust backend code
│   ├── src/              # Rust source code
│   │   ├── lib.rs        # Main library code
│   │   ├── main.rs       # Application entry point
│   │   └── platform/     # Platform-specific code
│   │       ├── mod.rs    # Platform module exports
│   │       ├── windows/  # Windows-specific code
│   │       ├── macos/    # macOS-specific code
│   │       └── linux/    # Linux-specific code
│   └── Cargo.toml        # Rust dependencies
└── package.json          # npm dependencies

Contributing

Contributions to Cursor Rush are welcome! Here are some ways you can contribute:

  • Report bugs and issues
  • Suggest new features or improvements
  • Submit pull requests with bug fixes or new features
  • Help with documentation
  • Contribute to macOS and Linux platform support
  • Improve the Tauri integration

License

This project is currently in development and does not yet have a specified license. A license will be added in a future update.