Skip to content
3D Window Manager for Linux
Haskell Shell C Nix Makefile
Branch: gdwlroots
Clone or download


Simula is a 3D window manager for Linux that runs on top of Godot.

Mission: Facilitate a Linux future for VR & AR Desktop. In the short-run, this means allowing people to run 2D Linux apps with current generation headsets. In the long-run, this means allowing people to run Linux in standalone AR & VR HMDs. Currently, Simula is only compatible with the HTC Vive and HTC Vive Pro.

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



Simula is in alpha phase, and can be difficult to get working on many setups. For help with installation, please visit our chat room. Note that Simula has only been tested on Ubuntu 19.04 (Disco Dingo), but the instructions below should in principle work on (i) older versions of Ubuntu and/or other distros that use apt (i.e., Debian) or (ii) Arch Linux (or distros that use pacman).

  1. Clone Simula and install its dependencies. Depending upon your distro, you’ll need to run some combination of make ubuntu, make arch, make nvidia and make amd.
    git clone --recursive
    cd Simula
    make ubuntu    # Installs needed packages via apt-get
    # make arch    # Installs needed packages via pacman
  2. Compile Simula. Warning: this can take a while.
    make all
  3. Launch Simula. You must first launch SteamVR before you can run Simula.
    steam &        # First launch SteamVR from steam
    make run       # ..then launch Simula
  4. Launch some apps. Once Simula starts, launch some Wayland apps to interact with (at this point Simula only supports Wayland apps). Apps must be launched with WAYLAND_DISPLAY set to simula-0.
    WAYLAND_DISPLAY=simula-0 sakura   # Wayland-based terminal
    WAYLAND_DISPLAY=simula-0 epiphany # Wayland-based web browser

Using Simula

  • Left-clicking. Use (7) gently (you don’t have to go all the way down to click).
  • Right-clicking. Not yet implemented.
  • Scrolling. Scroll up and down via (2).
  • Text dragging. Hold (7) down and drag.
  • Window manipulation. Point at a window and, while holding (7) + (8), move your controller around. The windows should “levitate” in the direction of your movement.
  • Window resizing. Point at a window, hold (8) down, and then scroll up and down on (2).


Any errors can be immediately helped with in Simula’s chatroom. Here are some helpers though:

  1. Driver errors. If you get driver related errors, try running make nvidia or make amd to try to upgrade to the latest drivers for your respective video card. These helpers only work on Ubuntu/Arch:
    make nvidia # If needed: installs nvidia-driver-418 (via apt-get)
    make amd    # If needed: installs mesa-vulkan-drivers and other packages for SteamVR on AMD (via apt-get)
  2. Godot errors. If you get godot related errors, trying rebuilding godot from scratch:
    make godot
  3. Wlroots errors. If you get wrloots related errors (i.e., any error that complains about missing wlr_* references), try rebuilding wlroots from scratch:
    make wlroots   # If you have trouble launching Simula, try recompiling Godot via this command.
  4. Unable to launch a particular app. Many Linux apps don’t work right now in Simula (technically: any app that doesn’t implement the XDG Wayland protocol). We’re working on fixing this ASAP so that all Linux apps are compatible with Simula. This should be done by end of month (June 2019).


We’re looking for open-source contributors. If you’re interested in using Haskell to bring VR and Linux together, drop by our chat room, or email

You can’t perform that action at this time.