Bino

July 31, 2026

Overview

Bino is a video player with a focus on 3D and Virtual Reality:

Invocation

bino [options] URL

Output Modes

Single-Screen Output

Most output modes should be self explanatory, but there are some exceptions:

Multi-Screen Output

Common stereoscopic display setups have one display for the left view and one display for the right view.

The easiest way to use such setups is to configure your desktop environment to allow Bino to use two screens in fullscreen mode, and then pick output mode left/right or top/bottom.

For example, on KDE Plasma, look for “KWin Scripts” in the System Settings, enable the “Video Wall” script, and configure it so that it applies to “org.bino3d.bino”.

An alternative is to use Virtual Reality mode, which can support much more complex multi-screen setups without the need for any VR hardware (you can still use keyboard and mouse).

File Name Conventions

Bino tries to autodetect the stereoscopic layout and the surround video mode from image and video metadata, but that data is often incomplete or unknown. In such cases, Bino has to guess.

To help with this, the hints listed below can be used as the last part of the file name, just before the file name extension (.ext).

If you use both stereoscopic and surround mode hints, but the surround hint first, followed by the stereoscopic hint, e.g. example-180-tb.mp4.

Stereoscopic Layout Hints

Surround Mode Hints

Virtual Reality

Overview

Bino supports all sorts of Virtual Reality environments via QVR:

VR mode does not require any VR hardware, it can also be used for multi-screen output in normal desktop environments, with keyboard/mouse interaction.

Use the option --vr to start Bino in VR mode.

Interaction

You can quit VR mode by pressing the Menu button on your controller, or the Q key on your keyboard.

Activate the on-screen user interface by pressing a trigger on your controller. When you release the trigger, the selected action will be performed, and the on-screen user interface will vanish again. Keyboard shortcuts also still work, in case you have access to your keyboard in VR mode.

Bino uses QVRs default navigation to move around in the virtual world: * With autodetected controllers such as the HTC Vive controllers, one controller is for left/right/forward/backward movement, the other is for up/down and for left/right rotations. * When keyboard/mouse input is available, the WASD keys will move forward/left/backward/right, QE will move up/down, and the mouse will change the viewing direction.

Virtual Screen

Bino will display a video screen in the virtual world for conventional video. If the input is a surround image or video instead (360° or 180°), it will be displayed all around the viewer.

The default screen is a 16:9 screen in front of the viewer, but you can use the --vr-screen option to define your own screen via its bottom left, bottom right and top left corners, or to load screen geometry from an OBJ file. The latter case is useful e.g. if you want Bino’s virtual screen to coincide with a curved physical screen.

The --vr-screen option also accepts the special values united and intersected. This will unite (or intersect) the 2D geometries of all VR windows at runtime, which is useful for multi-screen output configurations. For example, use --vr-screen=united --qvr-config=two-screen-stereo.qvr for a two-screen stereo setup, where the left view goes on the first screen and the right view goes on the second screen.

Scripting and Remote Control

Bino can read commands and execute them. This works both in GUI mode and in Virtual Reality mode.

The source of the commands can be a text file, a named pipe (fifo), a Unix Domain Socket (UDS), or a TCP port that Bino listens on. See the various --control options. Examples:

### File:
$ bino --control-file script.bino
### FIFO:
$ mkfifo fifo.bino
$ bino --control-fifo fifo.bino &
$ echo "open myvideo.mp4" > fifo.bino
### Unix Domain Socket:
$ bino --control-uds /tmp/socket.bino &
$ echo "open myvideo.mp4" | nc -q0 -U /tmp/socket.bino
### TCP Socket:
$ bino --control-tcp localhost:63000 &
$ echo "open myvideo.mp4" | nc -q0 localhost 63000

This allows pre-scripted media presentations as well as the implementation of custom remote controls for Bino.

The command interface is line-based. Empty lines and comment lines (which begin with #) are ignored. The following commands are supported:

Slideshows

You can play slideshows of images (or videos) simply by making a playlist. In the GUI, use the Playlist menu, and on the command line, just list multiple files to play.

By default, the next image/video in the playlist will only be displayed after you press the N key, or choose Playlist/Next from the menu or the on-screen user interface.

When the wait status of the playlist is switched off instead, the next media will play as soon as the previous is finished.

For a scripted slideshow with predefined presentation times for each image or video, use the scripting mode as in the following example:

set-fullscreen on
playlist-load my-slideshow.m3u
playlist-loop on
playlist-wait on
playlist-next
wait 4
playlist-next
wait 7
playlist-next
wait 5
quit