Simula is a VR window manager for Linux that runs on top of Godot. It takes less than 1 minute to install.
For the past few years we’ve been focused primarily on our custom VR computer hardware. Please check our website for details.
Video: Demonstration.
Compatibility: Simula is only compatible with headsets equipped with monado-compatible drivers (e.g. HTC Vive, HTC Vive Pro, Valve Index, & Rokid Max). We’re working on the Simula One headset to to add to this list.
Simula One Headset: We’re developing a portable VR headset which will come with this compositor pre-installed. If you’re interested, check out our website to preorder or receive periodic updates on its development.
Our Mission: Allow you to work productively in AR/VR.
Origins: Simula is a reimplementation fork of motorcar. To read about motorcar, see Toward General Purpose 3D User Interfaces: Extending Windowing Systems to Three Dimensions
A common objection to the viability of VR Desktop is that it exhibits poor text quality; however, with our low pass filter, Simula has taken special care to make text quality as clear as possible:
The left image is a VR terminal without our filter applied; the right is the same image with our filter applied. Compared to other VR Desktops, Simula allows for longer sessions without uncomfortable eye strain.
To install Simula on all Linux distros, run:
nix profile install github:SimulaVR/Simula # install
# NOTE: When installing for the first time, you'll be prompted:
#
# > "do you want to allow configuration setting 'extra-substituters'
# > to be set to 'https://simula.cachix.org' (y/N)?"
#
# Answering "y" to this (and the other messages) will allow nix to just
# download the Simula binaries onto your machine, saving you the time of
# compiling everything locally (which can take awhile)
and then launch it via
simula-monado-service & # Launch Simula's monado backend first, which runs in the background to detect Linux-compatible headsets and sync them up with Simula
simula # Launch Simula
# Be careful when launching Simula though(!), as it will grab your mouse & keyboard from your host window manager
# You can press `Super + z` to escape Simula after launching
Installing Simula requires the nix package manager. If you don’t have it, you can install it via
curl -L https://nixos.org/nix/install | sh
. $HOME/.nix-profile/etc/profile.d/nix.sh
git clone --recursive https://github.com/SimulaVR/Simula # You need --recursive to get all of our git submodules
nix develop # Enter a nix shell with all of our dependencies in place
just build # Compiles everything locally
In Simula, VR Windows become “active” once you look at them. Active windows receive (i) typing events from the keyboard and (ii) cursor events from any mouse movement. In addition, the following window-manipulation shortcuts are provided by default into Simula (these can be adjusted by changing /.config/Simula/config.dhall
):
Key binding. | Action |
---|---|
Super + Shift + Escape | Terminate Simula |
Super + z | Toggle Simula’s mouse & keyboard grab from your host OS (see below) |
Super + / | Quick launch terminal |
Super + Apostrophe | Send window cursor to gaze point (hold down to make cursor follow gaze) |
Super + Enter | Left click surface cursor at gaze point |
Super + Shift + Enter | Right click surface cursor at gaze point |
Super + Alt | Grab surface for movement (release to let go) |
Super + m | Grab all surfaces for movement (release to let go) |
Super + Shift + m | Grab all surfaces in all workspaces at once for movement (release to let go) |
Super + a | Launch Simula’s app launcher (synapse) |
Super + e | Cycle Simula’s background environment |
Super + f | Orient window towards user gaze |
Super + 9 | Scale window to smaller size |
Super + 0 | Scale window to larger size |
Super + <number between 1 and 8> | Switch to workspace <num> |
Super + Shift + <number between 1 and 8> | Move window to workspace <num> |
Super + Shift + 0 | Pin window to all workspaces |
Super + - | Increase window resolution (“zoom out”) |
Super + = | Increase window resolution (“zoom in”) |
Super + <right> | Extend window horizontally |
Super + <left> | Contract window horizontally |
Super + <down> | Extend window vertically |
Super + <up> | Contract window vertically |
Super + Alt + <down> | Decrease window transparency |
Super + Alt + <up> | Increase window transparency |
Super + s | Resize window to take its default (typically square) dimensions |
Super + Comma | Move window towards you |
Super + Period | Move window away from you |
Super + Backspace | Kill surface being looked at |
Super + k | Quick launch firefox (requires firefox to not already be launched on host) |
Super + g | Quick launch google-chrome (requires chrome to not already be launched on host) |
Super + w | Launch headset webcam view |
PrtSc | Toggle “screenshot” mode (drag a selection on the current window to generate a ./media/*.png and copy it to the X clipboard). |
Shift + PrtSc | Take global screenshot (saved to ./media/*.png ) |
Super + Shift + PrtSc | Toggle video recording (saved to ./media/*.mkv ); useful for sending bug reports. |
Super + r | Reload Simula’s configuration (./config.dhall ) |
NOTE: In order to prevent Simula’s keyboard shortcuts from conflicting with your existing window manager’s shortcuts, Simula “grabs” the system keyboard and cursor from your host OS to prevent input events from propagating past Simula. This has a side effect: it’s impossible for you to escape Simula once you launch it! In order to get around this, press Super + z
to “ungrab” Simula which will restore mouse & keyboard control to your normal window manager.
Simula has a headset webcam view (binded presently to Super + w
) that allows you to see your mouse and keyboard from VR. This will be deprecated once the Simula One releases (since it’ll have full-blown “AR Mode”).
- Many things are configurable in Simula. See
/.config/Simula/config.dhall
for a self-documenting list of things to adjust.
We’re developing portable VR headsets which will come with this compositor pre-installed. If you’re interested, check out our website to preorder or receive periodic updates on its development.
For troubleshooting and discussion, join our community at https://discordapp.com/invite/a4PnP7n.