diff --git a/README.md b/README.md index fc28f0c..b3e775b 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,11 @@ A cross-platform application for customizing your cursor with gameified logic. - Replace the system cursor with custom PNG images - Minimize to system tray for background operation -- Cross-platform support (Windows, macOS, Linux) -- Steam integration +- 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 ## Project Structure @@ -28,12 +31,19 @@ src/ │ │ ├── mod.rs # Windows module exports │ │ ├── types.rs # Windows type definitions │ │ ├── state.rs # Windows state management -│ │ ├── cursor.rs # Windows cursor handling -│ │ ├── window.rs # Windows window management -│ │ └── hook.rs # Windows mouse hook handling -│ ├── macos.rs # macOS-specific code -│ ├── linux.rs # Linux-specific code -│ └── unsupported.rs # Fallback for unsupported platforms +│ │ └── 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 @@ -50,6 +60,19 @@ src/ - Rust 1.70.0 or later - Cargo +- Platform-specific dependencies: + - Windows: None (fully supported) + - macOS: Development in progress + - Linux: Development in progress + +### Dependencies + +The application uses the following major dependencies: +- iced 0.13.1 - GUI framework +- tray-icon 0.20.1 - System tray functionality +- image 0.24.7 - Image processing +- global-hotkey 0.4.2 - Global hotkey registration +- steamworks 0.11.0 - Steam integration ### Build Commands @@ -63,21 +86,68 @@ cargo build --release ## Usage -1. Place your cursor PNG files in the `assets` directory -2. Run the application -3. Select a cursor from the list -4. Press Ctrl+Shift+F12 to exit the application +1. Place your cursor PNG files in the `assets` directory (PNG format only) +2. Run the application using `cargo run` or the compiled executable +3. The application will load all PNG files from the assets directory +4. Select a cursor from the list in the UI +5. The application will replace your system cursor with the selected image +6. When closing the window, the application minimizes to the system tray +7. To fully exit, use the system tray menu or press the exit hotkey + +### Custom Cursors + +The application comes with two sample cursors in the `assets` directory: +- `default.png` - A simple default cursor +- `red.png` - A red-colored cursor + +To add your own cursors: +1. Create PNG images with transparent backgrounds +2. Place them in the `assets` 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 +- 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 - - Next cursor: Switch to the next cursor +- 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 + - 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 + +## 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 + +## License + +This project is currently in development and does not yet have a specified license. A license will be added in a future update.