green
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
- Make sure you have Node.js and npm installed
- Navigate to the frontend directory:
cd frontend - Install dependencies if you haven't already:
npm install - Run the application in development mode:
npm run tauri dev - The application will start with a React frontend and Rust backend
- Use the UI to browse and select cursors
- The application will replace your system cursor with the selected image
- 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 cursoricon.png- An icon cursorred.png- A red-colored cursor
To add your own cursors:
- Create PNG images with transparent backgrounds
- Place them in the
frontend/src/cursorsdirectory - Restart the application to load the new cursors
- 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.
Languages
Rust
43.1%
CSS
28.5%
JavaScript
28.1%
HTML
0.3%