mirror of https://github.com/wayvr-org/wayvr.git
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:
commit
a4115f5e4b
35
README.md
35
README.md
|
|
@ -1,4 +1,4 @@
|
|||

|
||||

|
||||
|
||||
# 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.
|
||||
|
||||

|
||||

|
||||
|
||||
## Join the Linux VR Community
|
||||
|
||||
We are available on either **Discord** or **Matrix space**:
|
||||
|
||||
[](https://discord.gg/EHAYe3tTYa) [](https://matrix.to/#/#linux-vr-adventures:matrix.org)
|
||||
[](https://discord.gg/EHAYe3tTYa) [](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
|
||||
|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
Loading…
Reference in New Issue