Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
P

partydeck

> 编程语言
Open source

A split-screen game launcher for Linux/SteamOS

733 stars0 likes0 views
WebsiteGitHub

About

A split-screen game launcher for Linux/SteamOS

PartyDeck

A split-screen game launcher for Linux/SteamOS


[!NOTE] PartyDeck is in early development, and may contain violations of software best practices and security flaws; use at your own discretion! If you are experienced in software any advice and contributions are greatly appreciated.

Features

  • Runs multiple instances of a game at a time and automatically tiles up to 4 game windows per monitor
  • Supports native Linux games as well as Windows games through Proton-GE/UMU Launcher
  • Handler system with little manual setup required for most games
  • Steam multiplayer API is emulated, allowing for multiple instances of Steam games without needing multiple sign-ins
  • Works with most game controllers out-of-the-box
  • Now works with multiple keyboards and mice!
  • Experimental support for displaying instances across multiple monitors
  • Each instance only reads from input devices specifically assigned to that instance
  • Profile support allows each player to have their own persistent save data, settings, and stats for games
  • Works out of the box on SteamOS

Installing & Usage

Download the latest release here and extract it into a folder. Download game handlers here.

SteamOS

SteamOS includes all of PartyDeck's dependencies, but you will need to be on SteamOS 3.7.0 or above for the splitscreen script to work.

If you're in desktop mode, simply run the partydeck executable. To use PartyDeck in Gaming Mode, add GamingModeLauncher.sh as a shortcut to Steam, and in the settings for that shortcut disable Steam Input.

Desktop Linux

PartyDeck's splitscreen tiling script requires KDE Plasma 6.0 and up; if you're on an older version of Plasma or not running Plasma at all, you can run PartyDeck without the script, but then it's up to you to resize and reposition the game windows yourself. You'll also need to install, Gamescope, Bubblewrap, and Fuse-overlayfs using your distro's package manager. Then, simply run the partydeck executable to get started.

Getting Started

Once in the main menu, click the + button to add a game, or click the button with the down arrow icon to import a PartyDeck Handler package (.pd2). Create profiles if you want to store save data, and have a look through the settings menu.

Building

You'll need a Rust toolchain with the 2024 Edition. For building the mouse/keyboard gamescope fork, you'll also need meson and ninja installed.

Clone the repo and initialise submodules:

bash
git clone https://github.com/partydeck/partydeck.git
cd partydeck
git submodule update --init --recursive --depth 1

Then build with:

cargo build --release

If built with download deps, the build script downloads the latest releases of Goldberg Steam Emu and UMU Launcher from GitHub. The output binary and bundled dependencies are placed in target/release/.

Build feature flags

Flag Default Description
download_deps off Downloads Goldberg Steam Emu and UMU Launcher from GitHub releases with known good versions
download_deps_latest off Downloads Goldberg Steam Emu and UMU Launcher from GitHub releases with latest available
build_gamescope off Builds the mouse/keyboard gamescope fork from the submodule (requires meson and ninja)

Build with gamescope:

cargo build --release -F build_gamescope

Download known dependancies:

cargo build --release -F download_deps

How it Works

PartyDeck uses a few software layers to provide a console-like split-screen gaming experience:

  • KWin Session: This KWin Session displays all running game instances and runs a script to automatically resize and reposition each Gamescope window.
  • Gamescope: Contains each instance of the game to its own window. Also has the neat side effect of receiving controller input even when the window is not currently active, meaning multiple Gamescope instances can all receive input simultaneously
  • Bubblewrap: Uses bindings to mask out evdev input files from the instances, so each instance only receives input from one specific controller. Also uses directory binding to give each player their own save data and settings within the games.
  • Runtime (Steam Runtime/Proton): If needed, the app can run native Linux games through a Steam Runtime (currently, 1.0 (scout) and 2.0 (soldier) are supported) for better compatibility. Windows games are launched through UMU Launcher.
  • Goldberg Steam Emu: On games that use the Steam API for multiplayer, Goldberg is used to allow the game instances to connect to each other, as well as other devices running on the same LAN.
  • And finally, the game itself.

Known Issues, Limitations and To-dos

  • AppImages and Flatpaks are not supported yet for native Linux games. Handlers can only run regular executables inside folders.
  • Controller navigation support in the launcher is super primitive; I'd love to try making a more controller-friendly, Big-Picture-style UI in the future, but have no immediate plans for it.
  • Games using Goldberg might have trouble discovering LAN games from other devices. If this happens, you can try adding a firewall rule for port 47584. If connecting two Steam Decks through LAN, their hostnames should be changed from the default "steamdeck".

Credits/Thanks

  • @wunnr for starting partydeck
  • @Blahkaey for helping to maintain partydeck and the comunity
  • @davidawesome02-backup for the Gamescope keyboard/mouse fork, and Valve for Gamescope
  • @Twig6943 for work on AppImage packaging
  • @blckink for contributions
  • MrGoldberg & Detanup01 for Goldberg Steam Emu
  • GloriousEggroll and the rest of the contributors for UMU Launcher
  • Inspired by Tau5's Coop-on-Linux and Syntrait's Splinux
  • Talos91 and the rest of the Splitscreen.me team for Nucleus Coop, and for helping with handler creation

Disclaimer

This software has been created purely for the purposes of academic research. It is not intended to be used to attack other systems. Project maintainers are not responsible or liable for misuse of the software. Use responsibly.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rust

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言