A lightweight Electron desktop app that gives you complete control over your Discord Rich Presence status. Customize every aspect of how your activity appears to friends - from activity type to images, buttons, and timestamps.
- Multiple Activity Types - Playing, Streaming, Listening, Watching, Competing
- Custom Text - Set details and state with full control
- Image Support - Large and small images with hover text (asset names or URLs)
- Clickable Buttons - Add up to 2 buttons with custom labels and links
- Timestamps - Show elapsed time or countdown remaining
- Auto-Reconnect - Automatically reconnects if Discord restarts
- Dark Theme - Discord-inspired UI that feels native
# Clone the repository
git clone https://github.com/ijuice-j/custom-discord-rp.git
cd custom-discord-rp
# Install dependencies
npm install
# Run the app
npm start- Go to the Discord Developer Portal
- Create a new application (or use an existing one)
- Copy the Application ID from the General Information page
- In your Discord application, go to Rich Presence → Art Assets
- Upload images you want to use for large/small icons
- Note the asset names for use in the app
- Paste your Application ID in the app
- Click Connect
- Fill in the fields you want to display
- Click Update Presence
| Field | Description | Max Length |
|---|---|---|
| Details | First line of text | 128 chars |
| State | Second line of text | 128 chars |
| Large Image | Asset name or HTTPS URL | - |
| Large Image Text | Hover text for large image | 128 chars |
| Small Image | Asset name or HTTPS URL | - |
| Small Image Text | Hover text for small image | 128 chars |
| Button 1/2 Label | Button text | 32 chars |
| Button 1/2 URL | Button link | Valid URL |
| Type | Display Format |
|---|---|
| Playing | "Playing {details}" |
| Streaming | "Streaming {details}" |
| Listening | "Listening to {details}" |
| Watching | "Watching {details}" |
| Competing | "Competing in {details}" |
- Elapsed - Shows "XX:XX elapsed" counting up from when you started
- Remaining - Shows "XX:XX left" counting down (requires duration input)
src/
├── main/
│ ├── index.js # Electron main process & window management
│ ├── discord-service.js # Discord RPC client & activity handling
│ ├── timer-manager.js # Reconnection timer management
│ └── constants.js # Shared constants
├── renderer/
│ ├── index.html # Application UI
│ ├── styles.css # Discord-themed styling
│ └── renderer.js # UI logic & event handlers
└── preload.js # Secure IPC bridge (context isolation)
- Electron - Cross-platform desktop framework
- @xhayper/discord-rpc - Discord RPC library
- Vanilla JS/HTML/CSS - No frontend framework bloat
- Discord must be running for Rich Presence to work
- Buttons are only visible to other users (not yourself)
- Image URLs must be publicly accessible HTTPS URLs
- Changes may take a few seconds to appear in Discord
MIT