Merge pull request #478 from wayvr-org/move-doc

docs: move out docs to a separate repo/website, fix typos
This commit is contained in:
oo8dev 2026-03-25 18:39:59 +00:00 committed by GitHub
commit a4115f5e4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 22 additions and 286 deletions

View File

@ -1,4 +1,4 @@
![WayVR splash screen header](https://github.com/wlx-team/wayvr/blob/guide/wayvr-readme-header.webp?raw=true)
![WayVR splash screen header](https://github.com/wayvr-org/wayvr/blob/guide/wayvr-readme-header.webp?raw=true)
# WayVR (previously WlxOverlay-S)
@ -8,13 +8,13 @@ WayVR lets you access your desktop screens while in VR, and even launch apps dir
In comparison to similar overlays, WayVR aims to run alongside VR games and experiences while having as little performance impact as possible. The UI appearance and rendering techniques are kept as simple and efficient as possible, while still allowing a high degree of customizability.
![Screenshot of WayVR being used as an OpenXR home environment](https://github.com/wlx-team/wayvr/blob/guide/wayvr-readme-screenshot.webp?raw=true)
![Screenshot of WayVR being used as an OpenXR home environment](https://github.com/wayvr-org/wayvr/blob/guide/wayvr-readme-screenshot.webp?raw=true)
## Join the Linux VR Community
We are available on either **Discord** or **Matrix space**:
[![LVRA Discord](https://img.shields.io/discord/1065291958328758352?style=for-the-badge&logo=discord)](https://discord.gg/EHAYe3tTYa) [![LVRA Matrix](https://img.shields.io/matrix/linux-vr-adventures:matrix.org?logo=matrix&style=for-the-badge)](https://matrix.to/#/#linux-vr-adventures:matrix.org)
[![LVRA Discord](https://img.shields.io/discord/1065291958328758352?style=for-the-badge/&logo=discord)](https://discord.gg/EHAYe3tTYa) [![LVRA Matrix](https://img.shields.io/matrix/linux-vr-adventures:matrix.org?logo=matrix&style=for-the-badge)](https://matrix.to/#/#linux-vr-adventures:matrix.org)
Questions/issues specific to WayVR will be handled in the `wayvr` chat room. Feel free to ask anything.
@ -24,10 +24,10 @@ Questions/issues specific to WayVR will be handled in the `wayvr` chat room. Fee
There are multiple ways to install WayVR:
1. AppImage: Download from [Releases](https://github.com/wlx-team/wayvr/releases)
1. AUR package: [wayvr](https://aur.archlinux.org/packages/wayvr) or [wayvr-git](https://aur.archlinux.org/packages/wayvr-git)
1. AppImage: Download from [Releases](https://github.com/wayvr-org/wayvr/releases)
1. AUR package: [wayvr](https://aur.archlinux.org/packages/wayvr) or [wayvr-git](https://aur.archlinux.org/packages/wayvr-git)
1. Nix package: [wayvr](https://search.nixos.org/packages?channel=unstable&show=wayvr&query=wayvr) or [unstable package from nixpkgs-xr](https://github.com/nix-community/nixpkgs-xr)
1. [Building from source](https://github.com/wlx-team/wayvr/wiki/Building-from-Source).
1. [Docs: Building from source](https://wayvr.org/docs/basics/building-from-source/).
### General Setup
@ -40,7 +40,7 @@ There are multiple ways to install WayVR:
For users specifically running **SteamVR via Steam Flatpak**, follow these steps:
1. Grab the latest AppImage from [Releases](https://github.com/wlx-team/wayvr/releases).
1. Grab the latest AppImage from [Releases](https://github.com/wayvr-org/wayvr/releases).
1. `WayVR-*.AppImage --appimage-extract`
1. `chmod +x squashfs-root/AppRun`
1. Move the newly created `squashfs-root` folder to a location accessible by the Steam Flatpak.
@ -64,7 +64,7 @@ In case screens were selected in the wrong order:
**Envision users**: Go to the Plugins menu and select the WayVR plugin. This will download and run the AppImage version of the overlay.
To run a standalone installation (for instance, from the AUR), create a bash script containing `wayvr --openxr --show` and then set this bash script as a custom Envision plugin.
This will show a home environment with headset passthrough enabled by default or a [customizable background](https://github.com/wlx-team/wayvr/wiki/OpenXR-Skybox)!
This will show a home environment with headset passthrough enabled by default or a [customizable background](https://wayvr.org/docs/various/openxr-skybox/)!
**SteamVR users**: WayVR will register itself for auto-start, so there is no need to start it every time. Disclaimer: SteamVR will sometimes disregard this and not start WayVR anyway.
@ -131,23 +131,23 @@ Typing
- While using the ORANGE laser, all keystrokes will have SHIFT applied.
- Purple laser is customizable via the settings, no modifier by default.
**Modifier Keys are sticky**. They will remain pressed until eiter:
**Modifier Keys are sticky**. They will remain pressed until either:
- a non-modifier key is pressed
- the modifier is toggled off by clicking again
- the keyboard is hidden (including via show-hide)
### Default Bindings
![Index Controller Bindings](https://github.com/wlx-team/wayvr/blob/guide/wlx-index.png)
![Touch Controller Bindings](https://github.com/wlx-team/wayvr/blob/guide/wlx-oculus.png)
![Index Controller Bindings](https://github.com/wayvr-org/wayvr/blob/guide/wlx-index.png)
![Touch Controller Bindings](https://github.com/wayvr-org/wayvr/blob/guide/wlx-oculus.png)
### Changing Bindings
SteamVR: Simply change the bindings from the SteamVR bindings section. If WayVR doesn't show up on the list, select any other title and then press back on the top left. (SteamVR is weird like that sometimes)
OpenXR (Monado/WiVRn): See [Wiki: OpenXR Bindings](https://github.com/wlx-team/wayvr/wiki/OpenXR-Bindings)
OpenXR (Monado/WiVRn): See [Docs: OpenXR Bindings](https://wayvr.org/docs/various/openxr-bindings/)
If your controllers are not supported, please reach out. \
We would like to work with you and include additional bindings.
@ -155,9 +155,10 @@ We would like to work with you and include additional bindings.
## Customization
See these relevant wiki pages:
- For all available config options, check [Wiki: Configuration](https://github.com/wlx-team/wayvr/wiki/Configuration)
- Looking to customize look & feel, or add functionality? See [Wiki: Customization](https://github.com/wlx-team/wayvr/wiki/Customization)
- Looking to change the OpenXR background? See [Wiki: OpenXR Skybox](https://github.com/wlx-team/wayvr/wiki/OpenXR-Skybox)
- For all available config options, check [Docs: Configuration](https://wayvr.org/docs/basics/configuration/)
- Looking to customize look & feel, or add functionality? See [Docs: Customization](https://wayvr.org/docs/basics/customization/)
- Looking to change the OpenXR background? See [Docs: OpenXR Skybox](https://wayvr.org/docs/various/openxr-skybox/)
## Troubleshooting
@ -165,7 +166,7 @@ When an error is detected, we often print tips for fixing it into the log file.
Logs will be at `/tmp/wayvr.log` for most distros.
Check [here](https://github.com/wlx-team/wayvr/wiki/Troubleshooting) for tips.
Check [here](https://wayvr.org/docs/various/troubleshooting/) for tips.
## Known Issues

View File

@ -2,8 +2,4 @@
This repository contains the IPC specification and client implementation for the WayVR protocol. The primary purpose is to enable communication between applications and the WayVR server, offering a range of API functions.
[WayVR Server README](https://github.com/wlx-team/wayvr/tree/main/wayvr/contrib/wayvr)
## Usage
[Example WayVR IPC Client usage in WayVR Dashboard (Legacy)](https://github.com/olekolek1000/wayvr-dashboard/blob/master/src-tauri/src/frontend_ipc.rs)
[Wayvrctl Documentation](https://wayvr.org/docs/various/integrations/wayvr-ipc/)

View File

@ -1,42 +0,0 @@
<p align="center">
<img src="https://raw.githubusercontent.com/galister/wlx-overlay-s/refs/heads/guide/wayvr/logo.svg" height="120"/>
</p>
# Overview
### Features
- Display Wayland applications without GPU overhead (zero-copy via dma-buf)
- Mouse and keyboard input, with precision scrolling support
- Tested on AMD and Nvidia
### Supported software
- Basically all Qt and GTK applications (they work out of the box)
- Most XWayland applications via `cage`
### Launching external apps inside WayVR
To launch your app externally:
```sh
DISPLAY= WAYLAND_DISPLAY=wayland-$(cat $XDG_RUNTIME_DIR/wayvr.disp) yourapp
```
or (in the most cases):
```
DISPLAY= WAYLAND_DISPLAY=wayland-20 yourapp
```
Setting `DISPLAY` to an empty string forces various apps to use Wayland instead of X11.
# Troubleshooting
### My application doesn't launch but others do!
Even though some applications support Wayland, some still check for the `DISPLAY` environment variable and an available X11 server, throwing an error. This can also be fixed by running `cage` on top of them.
### Floating windows
Context menus are not functional in most cases yet, including drag & drop support.

View File

@ -1,221 +0,0 @@
# Custom UI Elements
Elements on custom panels may be modified at runtime using `wayvrctl`.
For more, refer to: `wayvrctl panel-modify --help`
### Labels
#### Clock label
Clock labels are driven by the current time, adhering to the user's 12/24 hour setting as well as timezone settings.
Available display values are: `name` (timezone name), `time`, `date`, `dow` or a custom [format string](https://docs.rs/chrono/latest/chrono/format/strftime/index.html) like `%H:%M:%S`.
See the Custom Timezones section for more info on timezones. Skip `_timezone` to use local time.
```xml
<label _source="clock" _display="time" _timezone="0" [...] />
```
#### Timer label
Instead of a clock, this label shows the amount of time since program start, (aka time in VR).
Use `_format` to arrange `%h` hours, `%m` minutes, and `%s` seconds.
```xml
<label _source="timer" _format="%h:%m:%s" [...] />
```
#### Battery label
This is a label type that's used internally to display battery states.
```xml
<label _source="battery" _device="0" [...] />
```
#### IPD
Displays IPD value in millimeters. Not parametrizable.
Format: `ipd`
```xml
<label _source="ipd" [...] />
```
### Buttons
Buttons consist of a label component and one or more actions to handle press and/or release events.
Supported events:
```xml
<button _press="..." _release="..." />
```
Laser-color-specific variants are also available
- `_press_left` & `_release_left` for blue laser
- `_press_right` & `_release_right` for orange laser
- `_press_middle` & `_release_middle` for purple laser
Release after short/long press (length controlled by config `long_press_duration`)
- `_short_release` & `_long_release` for any laser
- `_short_release_left` & `_long_release_left` for blue laser
- `_short_release_right` & `_long_release_right` for orange laser
- `_short_release_middle` & `_long_release_middle` for purple laser
#### Supported button actions
##### `::ShellExec <command> [args ..]`
This button action executes a shell script using the `sh` shell.
- Long-running processes are allowed, but a new execution will not be triggered until the previous process has exited.
- If triggered again while the previous process is still running, SIGUSR1 will be sent to that child process.
```xml
<button _press="::ShellExec $HOME/myscript.sh test-argument" [...] />
```
##### `::OscSend <path>` `::OscSend <path> <args ..>`
Send an OSC message. The target port comes from the `osc_out_port` configuration setting.
There are two formats; here is an example for both formats writing a message to the VRChat Chatbox:
```xml
<!-- parameter form - OSC arguments are listed as parameters labelled `_arg<n>` where `n` is 0-indexed -->
<Button _press="::OscSend /chatbox/input" _arg0="Hello World! I am WayVR." _arg1="true" _arg2="true"> </Button>
<!-- will send: ("Hello World! I am WayVR.", True, True) to /chatbox/input -->
```
```xml
<!-- shorthand form - OSC arguments are space-separated in one string. note that single strings cannot contain spaces -->
<Button _press="::OscSend /chatbox/input Hello_World!_I_am_WayVR. true true"> </Button>
<!-- will send: ("Hello_World!_I_am_WayVR.", True, True) to /chatbox/input -->
```
The two can be combined; parameter-form arguments will be appended after shorthand-form arguments:
```xml
<!-- combined-form - rectangle bounds with a name -->
<Button _press="::OscSend /graphthing/rectangle 0i32 0i32 50i32 200i32" _arg0="tall rectangle"> </Button>
<!-- will send: (0, 0, 50, 200, "tall rectangle") to /graphthing/rectangle -->
```
Available argument value types (case insensitive):
- Bool: `true` or `false`
- Nil: `nil`
- Inf: `inf`
- Int: suffix `i32` (`-1i32`, `1i32`, etc)
- Long: suffix `i64` (`-1i64`, `1i64`, etc)
- Float: suffix `f32` (`1f32`, `1.0f32`, etc)
- Double: suffix `f64` (`1f64`, `1.0f64`, etc)
- String: any other value
- Shorthand form will treat Strings with spaces as multiple arguments. Use parameter form if you need spaces.
##### `::SendKey <VirtualKey> <UP|DOWN>`
Sends a key using the virtual keyboard. If WayVR is focused, the key is sent to the WayVR app.
Supported VirtualKey values are listed [here](https://github.com/galister/wlx-overlay-s/blob/f2bd169c2217d51cd2de862a6429444bf326f471/wlx-overlay-s/src/subsystem/hid/mod.rs#L336).
##### `::PlayspaceReset`
Resets the STAGE space to (0,0,0) with identity rotation.
##### `::PlayspaceRecenter`
Recenters the STAGE space position so that the HMD is in the center. Does not modify floor level.
##### `::PlayspaceFixFloor`
Adjusts the level of floor for STAGE and LOCAL_FLOOR spaces.
The user is asked to place one controller on the floor.
##### `::ContextMenuOpen <name>`
Opens the `<context_menu>` of the given name at the location of the click.
##### `::ContextMenuClose`
Closes any active context menus.
##### `::ElementSetDisplay <id> <none|flex|block|grid>`
Sets the visiblitity of the element with `id`.
##### `::SetToggle <index>`
If the given set is visible, it will be hidden.
Otherwise, it will be set visible.
##### `::SetSwitch <index>`
Switch to the given set. If the set is already visible, nothing happens.
##### `::AddSet`
Add a new set and switch to it. The keyboard will be set to visible.
##### `::DeleteSet`
Hides the current set, then deletes it.
##### `::DashToggle`
Toggle the dashboard
##### `::EditToggle`
Toggle edit mode
##### `::NewMirror`
Opens a new PipeWire mirror (Wayland-only)
##### `::CleanupMirrors`
Destroys all mirrors that are not currently visible (including those that are in a different set).
##### `::Restart`
Restarts WayVR, reloading all settings.
##### `::ShutDown`
Gracefully shuts down WayVR.
##### `::OverlayReset <overlay_name>`
Resets the position of the given overlay and makes it visible.
##### `::OverlayToggle <overlay_name>`
Toggle the visibility of this overlay for the current set
##### `::OverlayDrop <overlay_name>`
Destroys the overlay permanently. Mostly useful for mirrors.
##### `::CustomOverlayReload <overlay_name>`
If this is a custom overlay, reloads its XML from disk.
##### `::WvrOverlayCloseWindow <overlay_name>`
If this is an application, send a close window request to its wl_surface (e.a. X'ing the window)
##### `::WvrOverlayTermProcess <overlay_name>`
If the overlay belongs to an application, sends SIGTERM (graceful exit request) to its process.
##### `::WvrOverlayKillProcess <overlay_name>`
If the overlay belongs to an application, sends SIGKILL (forced exit request) to its process.
Also destroys all overlays belonging to the process.

View File

@ -249,7 +249,7 @@ enum Subcommands {
/// Name for the overlay
#[arg(short, long, default_value = "")]
name: String,
/// Enviroment variables, separated by comma
/// Environment variables, separated by comma
#[arg(short, long, default_value = "")]
env: String,
/// Executable to run

View File

@ -7,3 +7,5 @@
an experimental gui library for WayVR and friends
powered by Vulkan
Wgui documentation available at [wayvr.org](https://wayvr.org/docs/wgui/) or [here](https://github.com/wayvr-org/website).