Skip to content

Settings

Settings is one of the Dash areas. Categories run down the left, the pane fills the rest of the panel. Every change applies the moment you make it — there is no Apply button and no confirm step.

The General settings pane, with the settings rail listing the other panes down the side.

The same eight panes run in the desktop app at desktop density, from the same values. Change your theme in the headset and the desktop window re-themes within the same second; change it at the desk and the Dash follows. Nothing in Settings is VR-only.

Two rules hold across every pane. A control that does not currently apply is disabled, not hidden — it still shows its value. And each row carries a second line naming the consequence of that row, so you are not guessing what a toggle does before you flip it.

Pane What it holds
General Startup, new-overlay defaults, clock, which Dash controls show, the Performance area
Audio routing Which device each audio role plays on, and its volume
Keyboard Layout, auto-show, key repeat, modifier behaviour
Controls Movement hand, grab behaviour, the summon chords and their SteamVR binding, the right-click pose, and pose detection
Themes The eight themes, and UI scale
Accessibility Scale, reduced motion, high contrast, click tuning, right-click
Language The nine locales
Extensions What is installed, and what each one is allowed to do

Startup. Launch with SteamVR. Let vrOS start SteamVR — off unless you turn it on, and the row says so: with it on, vrOS may start SteamVR when it starts. Quit with SteamVR. Restore overlays on launch.

New overlays. Opacity 1–100%, width 0.1–10.0 m, distance 0.1–5.0 m. A panel you spawn from ADD arrives with exactly these.

Clock. 24-hour or 12-hour. 24-hour is the default in every language.

Dash controls. Three toggles — size slider, curve slider, 4K quality — that reveal those controls on the overlay rows, on the Dash and in the desktop list at the same time. 4K quality also needs a source at least 3840 px wide.

Performance area. Layout, the I/O monitor, the devices band, and whether that band sits above or below.

Audio is routed by role, not by picking a device each time something plays. Three roles, each with a device, a volume from 0 to 100, and a TEST button that plays a chime down the real path.

Role What uses it
soundboard The default target for sounds an extension plays
mic The virtual-mic feed — point it at a VB-Cable-class device to reach your microphone mix in VRChat or OBS
ui Keyboard and interface feedback

If the device a role points at is gone — unplugged, or renamed by a driver update — the row turns amber and says so. vrOS never quietly substitutes another output. The exception is ui, which follows your system default whenever you have not overridden it, so keyboard feedback survives unplugging a headset DAC.

The settings half of the VR keyboard. The layouts themselves, and how typing works, are on the keyboard page.

Row Values
Layout The six built-ins, plus any layout you have made
Auto show On / off
Persist until blur On / off
Hide on click away On / off
Repeat delay 100–2000 ms
Repeat rate 15–500 ms
Modifier mode One-shot / toggle / timeout
Modifier timeout 500–10000 ms, active only in timeout mode
Shift double-tap lock On / off
Layout switcher On / off

The built-ins are English at 70%, 80% and 100%, Korean 두벌식, Japanese romaji, and the Japanese 12-key flick board.

Movement hand, left or right — the locomotion stick never adjusts an overlay you are holding.

Then the grab rows: face me on grab, face my free hand (available when face-me is on), face-me minimum distance 0.50–2.00 m, stick push/pull, stick resize, hand-depth resize, invert hand resize, lock position while resizing, hand resize speed 0.25–2.00, and disable joystick resize.

Hide / show all and Hide / show dash are the two summon chords, one group each. Both start with a Binding row: it shows the words SteamVR reports for the bound input right now, and EDIT IN STEAMVR opens SteamVR’s binding editor. On a desk with no runtime up, that button is disabled rather than hidden. Under it, the hand that wears the pose, then the pose list — the seven poses, plus NONE (the tap alone summons) and DISABLED. Out of the box, hide / show all is NONE on the left hand and the Dash chord is the left finger gun. Picking the same pose and hand for both says so in a line under the list: the Dash chord wins every tap.

Right click is a pose too, and its list is eight rows — the seven poses and DISABLED, with no NONE. Hold the pose on one hand and the other hand’s trigger clicks right. It defaults to POINT on either hand.

Pose detection holds the grip threshold, 0.05–0.90, default 0.25 — how firm a grip reads as a curled hand on controllers without finger tracking.

Eight themes: SIGNAL (the default), GRAPHITE, OLED, AURA, MEOW, DAYLIGHT, HC DARK, HC LIGHT. Each tile is drawn in its own tokens, so the swatch is the theme. One tap applies it live, and extension panels inherit whatever you pick.

DAYLIGHT is a desktop-first light theme; its tile carries a glare warning, and applying it in VR shows one. HC DARK and HC LIGHT are the high-contrast pair — 3 px borders, no low-contrast text tier, and a focus ring that inverts.

UI scale sits beside the tiles, 85% to 150% in steps of 5. It is the same setting as the one in Accessibility: one value, two places to reach it.

UI scale and reduced motion. With reduced motion on, every animation has a still equivalent — toasts appear instead of rising, a dwell ring fills in four steps, and the one-second hold counts down instead of sweeping.

High contrast is a two-way choice between HC DARK and HC LIGHT, with no off switch: you leave high contrast by picking another theme in Themes.

Click tuning. Click deadzone, 0.05°–2.00°, default 0.30° — how far your laser may travel before a press counts as a drag instead of a click. Flick travel, 0.10°–3.00°, default 0.80° — the travel a click gesture is allowed inside the hold window. Both are angular, so they mean the same thing on a small panel at arm’s length and a big one across the room.

Right-click. Long-press right-click is off by default, and turning it on trades away the stationary press-and-hold left drag — the row says so before you flip it. Long-press time is 300–1500 ms, default 650 ms. The pose modifier is the other way to right-click, and it lives in Controls.

A footer lists what is always on and never a setting: status words beside colour, focus rings, gamepad reachability, and the 24 px text floor.

Nine locales, listed as endonyms in their own scripts: English, Deutsch, Español (Latinoamérica), Français, Italiano, 日本語, 한국어, Русский, 中文(简体). The picker shows a globe and no flags — a flag is a country, not a language.

One tap switches. The interface reloads in place and your overlay layout is untouched. If the language you picked has a built-in keyboard and your active layout is not it, an offer appears under the list; one tap takes it, and ignoring it changes nothing. Numbers, units and the clock follow the language.

Extensions arrive disabled, with the capabilities they ask for shown as chips. Enabling one walks a consent screen that names each grant in plain language. Grants are per capability and revocable from this pane. If a new version asks for something the old one did not, you are asked about that difference only, not the whole set again.

The split matters: bus, overlays, capture, audio, and secrets are enforced by the host — a call an extension was not granted is refused at the wire. osc and network are disclosure. vrOS cannot stop a native process from opening a socket, so instead it tells you which extensions said they would. See how extensions work.

Everything on these panes is one line in config.toml, under %APPDATA%\vrOS\ on Windows and ~/.config/vros/ on Linux. vrOS watches that file: an edit you make in a text editor applies without a restart. A value outside its range clamps to the nearest legal one, and a malformed file warns once and leaves the running values alone.

The Themes pane showing the eight built-in themes as selectable swatch cards.

The Themes pane rendered in HC DARK: pure black behind white text, with heavier borders than the other themes.

The Accessibility pane at 1.5x UI scale, every control and label proportionally larger.