Run from source
For contributors, or if you'd rather build the .exe yourself. Since 2.0 the app is written in Rust with Tauri.
What you need
- Windows 10 or 11 (WebView2 is already part of Windows).
- Rust and the MSVC build tools.
- Node.js.
Run
git clone https://github.com/lennmoe/vnrpc cd vnrpc npm install npm run dev
Keep your real data apart
Set the VNRPC_DATA_DIR environment variable to a test folder: the app then keeps its settings and Library there instead of %APPDATA%, and can run next to your normal copy.
Build the .exe
npm run build
Close the app first. The result is src-tauri\target\release\vnrpc.exe (published as VisualNovelRPC.exe).
Tests and formatting
cd src-tauri
cargo test
cargo fmt
cd ..
npx prettier --write "ui/**/*.{js,css,html}"Project layout
The engine is in Rust (src-tauri/src). The interface is plain HTML, CSS and JavaScript modules (ui/), with no build step.
| src-tauri/src | What |
|---|---|
engine.rs, state.rs | The loop: detection, reading time, idle mode, Discord. |
engines.rs, title_parser.rs | Engine detection, title cleaning, chapter and route parsing. |
config.rs, vndb.rs, vndb_list.rs, steam.rs | Library files, VNDB search, covers, list, rating and wishlist. |
discord.rs | Rich Presence over Discord's IPC pipe. |
screenshots.rs, capture.rs, hotkey.rs, sound.rs | Capture key, window capture, shutter sound. |
mascot.rs, ui_windows.rs, tray.rs | Desktop mascot, speech balloon, toast, main window, tray. |
launcher.rs, backup.rs, updater.rs, autostart.rs | Play (Locale Emulator, NTLEA), export and import, updates, startup. |
images.rs, clipboard.rs, shell.rs, winapi.rs | Thumbnails, clipboard, Explorer, Win32. |
commands/ | What the windows can call, by feature. |
| ui/js | What |
|---|---|
pages/ | One file per page: home, cover, library, game, wishlist, screenshots, share, settings, what's new. |
components/ | Chart, share card, theme tab, hotkey input, Play, release notes, update, Discord button. |
popups/ | The mascot, its speech balloon, the screenshot toast. |
app.js, router.js, store.js, ui.js | Startup, navigation, shared state, small widgets. |
Version 1.x was a Python app. Its code is still in the repository's history if you need it.