Visual NovelRPC docs
DiscordGitHub39Download

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/srcWhat
engine.rs, state.rsThe loop: detection, reading time, idle mode, Discord.
engines.rs, title_parser.rsEngine detection, title cleaning, chapter and route parsing.
config.rs, vndb.rs, vndb_list.rs, steam.rsLibrary files, VNDB search, covers, list, rating and wishlist.
discord.rsRich Presence over Discord's IPC pipe.
screenshots.rs, capture.rs, hotkey.rs, sound.rsCapture key, window capture, shutter sound.
mascot.rs, ui_windows.rs, tray.rsDesktop mascot, speech balloon, toast, main window, tray.
launcher.rs, backup.rs, updater.rs, autostart.rsPlay (Locale Emulator, NTLEA), export and import, updates, startup.
images.rs, clipboard.rs, shell.rs, winapi.rsThumbnails, clipboard, Explorer, Win32.
commands/What the windows can call, by feature.
ui/jsWhat
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.jsStartup, 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.