A modern, cross-platform desktop application for creating and managing custom Discord Rich Presence activities. Built with Tauri, Vue 3, and Rust.
- Custom Activity Details: Set custom details and state text for your Discord presence
- Image Support: Upload and use custom large and small images with hover text
- Interactive Buttons: Add up to 2 clickable buttons with custom labels and URLs
- Timestamp Control: Configure elapsed time, remaining time, or no time display
- Real-time Updates: Instantly update your Discord presence without reconnecting
- Automatic Image Upload: Upload images directly from your device
- Image Optimization: Automatically resize images to Discord's 512x512 requirement
- Multiple Formats: Support for PNG, JPG, and other common image formats
- Cloud Storage: Images are uploaded to a reliable hosting service for Discord compatibility
- Bilingual Interface: Full support for English and Turkish languages
- Modern UI: Clean, responsive interface built with Tailwind CSS
- Toast Notifications: Real-time feedback for all operations
- Advanced Settings: Collapsible advanced options for power users
- Connection Status: Clear indication of Discord RPC connection status
- Cross-platform: Works on Windows, macOS, and Linux
- Lightweight: Small footprint with fast startup times
- Secure: Built with Tauri's security-first approach
- No Dependencies: Standalone executable with no external requirements
-
Discord Application: You need to create a Discord application to get an Application ID
- Go to Discord Developer Portal
- Click "New Application" and give it a name
- Copy the "Application ID" from the General Information page
-
Discord Desktop: Make sure Discord desktop application is running
- Go to the Releases page
- Download the appropriate version for your operating system
- Run the installer or extract the portable version
Prerequisites:
Build Steps:
# Clone the repository
git clone https://github.com/sw3do/discord-custom-rpc.git
cd discord-custom-rpc
# Install dependencies
npm install
# Run in development mode
npm run tauri dev
# Build for production
npm run tauri build- Launch the application
- Enter your Discord Application ID in the "Application ID" field
- Click "Connect" to establish connection with Discord
- Wait for the "Connected" status confirmation
- Details: Main activity text (e.g., "Playing a game")
- State: Secondary activity text (e.g., "In a match")
- Large Image: Main image displayed in the presence
- Small Image: Small overlay image (appears in bottom-right of large image)
- Image Text: Hover tooltips for both images
- No Time: Don't show any timestamp
- Elapsed Time: Show time since activity started
- Remaining Time: Show countdown timer (specify duration)
- Add up to 2 clickable buttons
- Each button needs a label and a valid URL
- Buttons appear at the bottom of the presence
- Fill in the desired fields
- Click "Update Presence" to apply changes
- Check Discord to see your custom presence
- Use "Clear Presence" to remove the activity
discord-custom-rpc/
โโโ src/ # Vue.js frontend
โ โโโ App.vue # Main application component
โ โโโ main.ts # Application entry point
โ โโโ style.css # Global styles
โโโ src-tauri/ # Rust backend
โ โโโ src/
โ โ โโโ lib.rs # Main Rust library
โ โ โโโ main.rs # Tauri application entry
โ โโโ Cargo.toml # Rust dependencies
โ โโโ tauri.conf.json # Tauri configuration
โโโ public/ # Static assets
โโโ package.json # Node.js dependencies
# Development
npm run dev # Start Vite dev server
npm run tauri dev # Start Tauri development mode
# Building
npm run build # Build frontend
npm run tauri build # Build complete application
# Code Quality
cargo clippy # Run Rust linter (in src-tauri/)
cargo fmt # Format Rust code (in src-tauri/)The Rust backend exposes these Tauri commands:
connect_discord_rpc(client_id: String)- Connect to Discord RPCset_activity(activity: ActivityData)- Update Discord presenceclear_activity()- Clear current presencedisconnect_discord_rpc()- Disconnect from Discordget_connection_status()- Check connection statusupload_image_to_api(image_data: String)- Upload and resize imagesresize_image_for_discord(image_data: String)- Resize images locally
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Follow the existing code style
- Add comments for complex logic
- Test your changes thoroughly
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Discord Rich Presence - Official Discord RPC documentation
- Tauri - The framework that makes this application possible
- Vue.js - The progressive JavaScript framework
- Tailwind CSS - For the beautiful UI styling
If you encounter any issues or have questions:
- Check the Issues page for existing solutions
- Create a new issue with detailed information about your problem
- Join our community discussions
- Initial release
- Basic Discord RPC functionality
- Image upload and management
- Bilingual interface (English/Turkish)
- Cross-platform support
- Advanced timestamp controls
- Interactive buttons support
Made with โค๏ธ by sw3do