Skip to content
This repository has been archived by the owner on Aug 3, 2024. It is now read-only.

Setup Instructions

galister edited this page May 25, 2023 · 29 revisions

How to Run

  1. Download release
  2. chmod +x WlxOverlay-*.AppImage
  3. With SteamVR running: ./WlxOverlay-*.AppImage

After running once, the app will be registered to auto-start with SteamVR. You can disable this in the SteamVR startup settings or in config.yaml (see below).

Trouble?

Look here for frequently encountered issues: Troubleshooting

See the README for known issues and their workarounds!

Customization Options

Custom Configuration using config.yaml

Grab yourself a copy of the config file:

mkdir -p ~/.config/wlxoverlay
cd ~/.config/wlxoverlay
wget https://github.com/galister/WlxOverlay/raw/master/Resources/config.yaml

The config file is self-documenting, so give it a peek and you'll surely find what you're looking for!

SteamVR Bindings

WlxOverlay ships with bindings for Index and Oculus controllers. If you do have a different controller and need help with bindings, feel free to reach out.

Extra bindings can be found here!

Instructions to create your own bindings:

  • Click: keyboard typing and clicking on the screen. set this to your triggers.
  • Grip: for moving overlays.
    • Recommended: Grip input with pressure mode, pressure 70%. Release pressure 50%
  • Pose: set this to the controller tip, if you have that option.
  • Scroll: set this to your joystick, and choose smooth mode
  • ShowHide: Show/hide the current layout.
    • Recommended: DoubleClick on B / Y on your non-dominant hand
  • AltClick: push-to-talk or arbitrary shell execute, optional. config.yaml to configure.
  • ClickModifierRight: bind this to a capacitive touch action, if able
  • ClickModifierMiddle: bind this also to a capacitive touch action
    • ClickModifierRight takes precedence, so this can be a button that you may accidentally touch while reaching for ClickModifierRight

If you can't bind the modifiers due to lack of buttons, see the config.yaml for alternatives.

If you're left handed, set primary_hand: Left in config.yaml.

Creating your own Bindings

Pull the original bindings into your config folder:

mkdir -p ~/.config/wlxoverlay
cd ~/.config/wlxoverlay
wget https://github.com/galister/WlxOverlay/raw/master/Resources/actions.json
wget https://github.com/galister/WlxOverlay/raw/master/Resources/actions_binding_knuckles.json
wget https://github.com/galister/WlxOverlay/raw/master/Resources/actions_binding_oculus.json
wget https://github.com/galister/WlxOverlay/raw/master/Resources/actions_binding_vive.json

Now you can edit the bindings file that corresponds to your controller.

Bindings from here will only be loaded if actions.json is also present in this folder.

If you need to add a new type of controller, don't forget to add it in the default_bindings section of actions.json.

Custom Keyboard

The layout can be changed using a custom keyboard.yaml file:

mkdir -p ~/.config/wlxoverlay
cd ~/.config/wlxoverlay
wget https://github.com/galister/WlxOverlay/raw/master/Resources/keyboard.yaml

You are then free to edit this file.

If you do end up making a layout, please submit it with a pull request, in order to so save others the trouble.

Building from Source

WlxOverlay has 2 optional native components:

  • wlxshm for X11 capture
  • wlxpw for Pipewire capture

Both of these are built via the prebuild.sh script. If either of these libraries are not present when dotnet build is ran, the given capture methods will not be supported at runtime. You may also build these manually and copy the resulting .so files next to the main WlxOverlay executable.

Depending on the platform you'll be using WlxOverlay on, you will need different components:

  • wlroots: none necessary
  • Mir: none necessary
  • KWin: wlxpw
  • Mutter: wlxpw
  • Weston: wlxpw
  • X11: wlxshm

wlxpw dependencies

  • libpipewire-0.3
  • libspa-0.2

wlxshm dependencies

  • libxcb
  • libxcb-randr
  • libxcb-shm
  • libxcb-xinerama

In addition to the dependencies above, you'll also need the dotnet-6.0 SDK (or later?) installed

Building WlxOverlay

git clone https://github.com/galister/WlxOverlay.git
cd WlxOverlay
./prebuild.sh
dotnet build

Then, run with:

cd bin/debug/net6.0
./WlxOverlay

(Start SteamVR before running this.)