Skip to content

Play any game in splitscreen or with multiple monitors.

License

Notifications You must be signed in to change notification settings

mall0r/Twinverse

Repository files navigation

English Portuguese

Twinverse Logo

Version License GTK Version libadwaita Version

Python Shell JavaScript CSS

What is Twinverse?

Twinverse is an tool for Linux/SteamOS that allows you to create and manage multiple instances of Steam Big Picture simultaneously. This enables multiple players to enjoy their game library on a single computer, either in split-screen mode or each with their own display, along with dedicated audio output and input devices.

twinverse_ui

Warning

This project does not support piracy; all players must own the game in their Steam libraries to be able to play it.

✨ Key Features

Note

Mouse/Keyboard can only be assigned to one instance at a time

Twinverse is designed as a flexible solution for splitscreen gaming on Linux. Here are some of its main features:

  1. Multiple Instances: Run multiple instances of Steam Client simultaneously

  2. Device Assignment: Assign specific mouse, keyboard, and controller to each game instance

  3. Dedicated Audio Channels: Direct audio from each instance to a separate audio output device

  4. Dedicated Home Directory: Twinverse allows you to have a dedicated home directory for each instance, enabling individual customization of settings and files

  5. Shared Game Folder: Share the Steam game directory across multiple instances, so you don’t need to download the game again for each instance, saving disk space

  6. Use Any Proton: Twinverse lets you use any version of Proton to run your games, including custom protons like ProtonGE

  7. Play What You Want: Instances are not limited to running the same game; each instance can run a different game

  8. Flexible Display Modes: Choose between split screen (up to 4 instances per monitor) or full screen (1 instance per monitor)


horizontal-demo.webm

πŸ“¦ Requirements

To use Twinverse without issues, ensure the following requirements are met:

You need to have the native gamescope and steam packages from your distribution installed.

For Gamescope to function correctly, based on your GPU, you will need:

  • AMD: Mesa 20.3 or newer
  • Intel: Mesa 21.2 or newer
  • NVIDIA: Proprietary drivers 515.43.04 or newer, or NVIDIA Open Kernel Module drivers

Note

SteamOS (AMD) and Bazzite generally have all dependencies included by default.

πŸ“¦ Installation

Flatpak

The recommended way to install Twinverse is via Flatpak, which provides a sandboxed environment and easier updates.

Install from a .flatpak file

  1. Download the Latest .flatpak file: Go to the Releases page and download the latest .flatpak file.

  2. Install the Flatpak: You can install the Flatpak with the following command:

    flatpak install --user Twinverse-*.flatpak

AppImage

Note

Make sure you have the bubblewrap package installed.

Alternatively, you can use the AppImage version. This single file works on most modern Linux distributions without requiring system installation.

  1. Download the Latest AppImage: Go to the Releases page and download the latest .AppImage file.

  2. Make it Executable: After downloading, right-click the file, go to "Properties," and check the "Allow executing file as program" box. Alternatively, you can use the terminal:

    chmod +x Twinverse-*.AppImage
  3. Run the Application: Run the AppImage and enjoy. That's it!

AppImage Integration (Optional)

For better system integration (e.g., adding a menu entry), you can use a tool like Gear Lever to manage your AppImage.

Running from Source

The run.sh script provides a quick way to set up a local environment and run the application. It will automatically create a virtual environment and install the necessary dependencies.

# Clone the repository
git clone https://github.com/mall0r/Twinverse.git
cd Twinverse

# Run the launch script
./run.sh

πŸ“– How to Use?

Access our Guide for more information on how to use Twinverse.


βš™οΈ How It Works

Twinverse uses Gamescope (which creates the gaming environment and manages composition) and Bubblewrap (bwrap – a tool for building sandbox environments) to isolate each Steam Client instance. In this project, bwrap is used with an extra layer of isolation on top of Gamescope, providing a more robust sandbox and allowing granular control over what should or should not be exposed or masked inside the container. This makes it possible to ignore devices unnecessary for that session or to recreate a dedicated home directory per instance. This allows each Steam to run in its own separate, independent environment. Thus, the instance cannot interfere with your desktop, and your desktop cannot interfere with it.

The final command line is assembled dynamically based on the user's configuration, following a nested structure where Gamescope is the outermost layer, which runs bwrap, which, in turn, launches Steam.


πŸ› οΈ For Developers

If you wish to contribute to Twinverse, please refer to the CONTRIBUTING for detailed instructions on how to get started, development workflows, and code standards.


πŸ“œ License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). For more details, see the LICENSE.

Note

Legal Disclaimer

Twinverse is an independent open-source project and is not affiliated with, endorsed by, or in any way officially connected to Valve Corporation or Steam.

This tool acts as an orchestration layer that leverages sandboxing technologies to run multiple isolated instances of the official Steam client. Twinverse does not modify, patch, reverse engineer, or alter any Steam files or its normal operation. All Steam instances launched by this tool are the official, unmodified versions provided by Valve.

Users are solely responsible for complying with the terms of the Steam Subscriber Agreement.


πŸ™ Credits

This project was inspired by the work of: