lovr is the single global table that is exposed to every LÖVR app. It contains a set of modules and a set of callbacks.


Modules are the what of your app; you can use the functions in modules to tell LÖVR to do things. For example, you can draw things on the screen, figure out what buttons on a controller are pressed, or load a 3D model from a file. Each module does what it says on the tin, so the lovr.graphics module deals with rendering graphics and lovr.headset allows you to interact with VR hardware.

lovr.audioPlays sound.
lovr.dataExposes low level functions for working with data.
lovr.eventHandles events from the operating system.
lovr.filesystemProvides access to the filesystem.
lovr.graphicsRenders graphics.
lovr.headsetConnects to VR hardware.
lovr.mathContains useful math helpers.
lovr.physicsSimulates 3D physics.
lovr.threadAllows you to work with background threads.
lovr.timerExposes a high resolution timer.


Callbacks are the when of the application; you write code inside callbacks which LÖVR then calls at certain points in time. For example, the lovr.load callback is called once at startup and lovr.controlleradded is called when controllers are connected.

lovr.confCalled to read configuration settings at startup.
lovr.controlleraddedCalled when a Controller is connected.
lovr.controllerpressedCalled when a Controller button is pressed.
lovr.controllerreleasedCalled when a Controller button is released.
lovr.controllerremovedCalled when a Controller is disconnected.
lovr.drawCalled continuously to render frames to the display.
lovr.errhandCalled when an error occurs.
lovr.focusCalled when the application gets or loses focus.
lovr.loadCalled once at startup.
lovr.mirrorCalled to render content to the desktop window.
lovr.mountCalled when the headset is put on or taken off.
lovr.quitCalled before quitting.
lovr.runThe main entry point.
lovr.threaderrorCalled when an error occurs in a thread.
lovr.updateCalled every frame to update the application logic.


The lovr module also exposes some functions for retrieving information about the system.

lovr.getVersionGet the current version.
lovr.getOSGet the current operating system.


A few helpful third-party libraries are included with LÖVR for convenience.

enetMultiplayer utilities.
jsonEncodes and decodes JSON.