Settings, i18n, Theme
User settings
settings.rs holds preferences of the program, not of the project. They are stored as JSON in $XDG_CONFIG_HOME/venturi/settings.json (default ~/.config/venturi/settings.json).
| Group | Fields |
|---|---|
| General | Language, kinetic scrolling (timeline, media pool) |
| Playback | Proxies on/off and quality, look-ahead / behind seconds, frame-cache budget, HW decode mode (Auto, Off, NVDEC, Vulkan; Auto/Off on macOS), HW decode budget, Intel experimental decode |
| Recording | Input device, take format, take folder |
| Integrations | Serve MCP on the local socket |
| Shortcuts | Keymap: one or more shortcuts per Action (34 actions) |
| Not in the dialog | Panel layout, recent projects, EQ and compressor presets |
Persistence rules
| Rule | Why |
|---|---|
| Missing or unreadable file → defaults; every key in the file is optional. | Old or hand-edited files never block startup; new settings get their default. |
Enum values are stored as stable string ids ("nvdec", "it"…), never as indices. | Reordering or adding variants does not corrupt saved files. |
| Actions missing from the file keep their default shortcuts. | New actions get a binding without resetting the user's keymap. |
Saved by eframe's periodic save() and on close; presets are saved immediately. | Panel sizes change every frame while resizing; writing on each change would be wasteful, but a preset must not be lost. |
| Loaded before any thread starts. | The Intel experimental-decode flag must set an environment variable while the process is still single-threaded. |
Localisation
- Strings come from
rust-i18n:i18n!("locales", fallback = "en")inmain.rs, looked up witht!("key"). crates/vv-app/locales/*.ymlholds one file per area (menu, timeline, viewer, mixer…), each key withenanditentries.Languageis System, English or Italian. System reads the OS locale (sys-locale) and falls back to English if it is not available.- Language names are shown in their own language, so the setting can be found from an interface the user cannot read.
Theme
theme.rs keeps egui's default visuals and overrides only the identity colours, taken from the logo:
| Constant | Use |
|---|---|
ACCENT (#FF6A1F) | Selection highlights, active toggles, keyframes, links |
ACCENT_FILL | Darker accent for fills that carry light text |
ACCENT_TRANSLUCENT | Box selections |
ERROR, PLAYHEAD | Offline media and clipping; the playhead line |
The overrides are applied to both egui's dark and light themes.
Input tweaks
- Timeline zoom uses Alt+wheel instead of egui's default Ctrl, so Shift+wheel is free for track height and Ctrl+wheel scrolls horizontally.
raw_input_hookclears stuck wheel modifiers and, on macOS, fixes the ISO key.- Shortcuts are ignored while a text field has focus, so typing a title never cuts or deletes clips.
No comments to display
No comments to display