Run Electron Steam games natively on Linux*

Related tags

Command-line boson
Overview

Boson ⚛️

Boson is a Steam compatibility tool that allows you to run Electron-based games with a native build of Electron, rather than using the game's bundled Electron version and running it thorugh Proton. Think of it like Boxtron, Roberta, or Luxtorpeda, but for Electron games.

Please check this list to see if you need/want to use Boson for your game.

Inspired by NativeCookie.

Currently, only Cookie Clicker is supported at the moment.

Planned features

  • Database of tweaks for each supported game
    • Automatically set up Steamworks API for games that use it (see note above)
  • Download and install Electron builds from the Electron website (currently you need to bring your own Electron binary)
  • TOML configuration file(s) for custom tweaks
  • GUI for managing Boson (and displaying error messages)

How does it work?

Boson is a Steam Play compatibility tool, intercepting calls to run the game from its own executable, and redirects the executable to a native Electron executable, running the game using the provided Electron build instead.

Why Boson?

While some games are developed essentially as Electron PWAs, some game developers still refuse to publish native ports of their games. Expecting users to simply either run the game on Windows, or run its Electron executable under Proton.

While this is a quick-and-dirty way to simply run Electron games on Linux, sometimes it may cause some issues due to the fact that we're running Chromium inside Proton, even though Electron has a native Linux build, e.g:

  • Graphical artifacts
  • Missing fonts (because the fonts are loaded exclusively from the Proton prefix)
  • Scaling issues
  • Other general compatibility issues

Boson works around this issue entirely by simply just running the game using a native Electron build rather than running Electron inside Steam Proton.

Usage

  1. Install Electron from your package manager, or download the binaries from the Electron website (see note below)
  2. Download the latest release tarball
  3. Extract to ~/.steam/root/compatibilitytools.d/. You should have a directory structure like this:
    ~/.steam/root/compatibilitytools.d/boson/
    ├── boson
    ├── toolmanifest.vdf
    └── compatibiltytool.vdf
    
  4. Restart or start Steam if you haven't already
  5. Right-click on the game you want to run with Boson, and select Properties > Force the use of a specific Steam Play compatibility tool > Boson
  6. Run the game, And that's it! The game should now be running using the native Electron build.

Building

All you need to build Boson is a Rust toolchain, and the cargo build tool. That's it.

Install Rust by using rustup, and then run the following commands:

make

The resulting Steam compatibility tool will be outputted to build/. You can just copy the resulting files to ~/.steam/root/compatibilitytools.d/ and you're good to go.

Notes

  • If you're using an electron binary that isn't in your $PATH and called electron, you can set the ELECTRON_PATH environment variable in your Steam launch options to point to the electron binary you want to use, e.g:
    ELECTRON_PATH=/path/to/electron %command%
    
  • Due to some incompatibility issues with the Steam overlay, it's recommended to disable the Steam overlay for the game you're running with Boson. Boson is currently hardcoded to remove any LD_PRELOAD envars on runtime, to prevent the Steam overlay from being loaded.
  • If you're trying to run some other Electron-based game that isn't Cookie Clicker that doesn't have the game path set to resources/app, you can set the BOSON_LOAD_PATH environment variable in your Steam launch options to point to the game's resource path (a plain folder or an app.asar file), e.g:
    BOSON_LOAD_PATH=/path/to/game/resources/app %command%
    
    Note that paths here are relative to the game's installation directory.

Running Cookie Clicker (and other Greenworks games) with Boson

This guide assumes you already bought Cookie Clicker on Steam, and have it installed.

It also assumes that your CPU architecture is x86_64, and you're running a 64-bit Linux distribution, Steam for Linux only supports x86_64 for now.

If you'd like to play the web version, just go to the Cookie Clicker website. The only differences between the web and Steam version is that the Steam version has cloud saves, Steam achievements, Workshop support, and an OST by C418 (Yes, the Minecraft guy).

To get the Steamworks API to work with Cookie Clicker, you need to do the following:

  1. Downloads the Steamworks SDK from the Steamworks website
  2. Take note of these files from the SDK, we will move this to Greenwork's library location:
    • sdk/redistributable_bin/linux64/libsteam_api.so
    • sdk/public/steam/lib/linux64/libsdkencryptedappticket.so
  3. Download the nightly builds of Greenworks for the respective compatible version of Electron from here, rename the resulting .node binary to greenworks-linux64.node
  4. Once you downloaded the SDK, extract the SDK libraries to Cookie Clicker's installation directory, like this:
    ~/.local/share/Steam/steamapps/common/Cookie Clicker/
     ├── resources
         |── app
             |── greenworks
                 |── lib
                     |──greenworks-linux64.node
                     |──libsteam_api.so
                     |──libsdkencryptedappticket.so
                     |──(*libraries from other platforms*)
    
  5. Once you're done installing Greenworks, your copy of Cookie Clicker should now integrate with Steamworks, and you can now get achievements, cloud saves, and Workshop support as if you're still running the game on Windows, with the added benefit of Native Linux support (and Discord Rich Presence support) :3
You might also like...
Calculate a player's skill level using Elo, DWZ, Ingo, TrueSkill, Glicko and Glicko-2 algorithms known from their usage in chess and online games.

skillratings Skillratings allows you to calculate the player's skill instantly in 1v1 matches or after tournaments/rating periods with a list of resul

A library for 3D grid coordinates: for games

Positioning rustdocs A library for manipulating coordinates on a 3D grid. This will contain code that I'll often end up repeating in games. Currently,

📦 Distribute Roblox games as standalone executables -- No existing client necessary. 🚧
📦 Distribute Roblox games as standalone executables -- No existing client necessary. 🚧

📦 Packer Distribute Roblox games as standalone executables. 🚧 Packer is still being worked on. Among many other things, Windows is not currently sup

🐚+🦞 Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly

pagurus 🐚 + 🦞 Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly. Examples Snake Traditional snake game: examples/sn

Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.
Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.

Ember Ember is a simple and fun 2D rendering library for Rust, allowing you to quickly create graphics and interactive applications with ease. It uses

A small program which makes a rofi game launcher menu possible by creating .desktop entries for games
A small program which makes a rofi game launcher menu possible by creating .desktop entries for games

rofi-games A small program which makes a `rofi` game launcher menu possible by creating `.desktop` entries for games Installation Manual Clone repo: g

Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices
Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices

Welcome to the server-side application for the HarmonyLink project. This innovative software is developed with the Rust programming language and is ai

🤖 just is a handy way to save and run project-specific commands.

just just is a handy way to save and run project-specific commands. (非官方中文文档,这里,快看过来!) Commands, called recipes, are stored in a file called justfile

Run your Rust CLI programs as state machines with persistence and recovery abilities

step-machine Run your CLI programs as state machines with persistence and recovery abilities. When such a program breaks you'll have opportunity to ch

Releases(v0.1.0)
  • v0.1.0(Feb 12, 2024)

    • Basic Steam Play compatibility tool wrapper for native Electron
    • Initial support for Cookie Clicker
    • Supports changing Electron and asar path using ELECTRON_PATH and BOSON_LOAD_PATH respectively

    Simply extract the Zstandard archive provided below to ~/.steam/root/compatibilitytools.d/

    Tested Games

    | Name | Status | |--------------------------|-------------------------------------------------------------------| | Cookie Clicker | Playable (offline, requires Steamworks patch for online features) | | We Become What We Behold | Playable (set BOSON_LOAD_PATH=resources/app.asar) | | SUPERHOT | Native (Boson - Untested with older versions) | | Krunker | Unplayable | | Ninja Kiwi Archive | Unplayble (launches, blank screen, requires Flash) | | natsuno-kanata | Playable (set BOSON_LOAD_PATH=resources/app.asar) |

    Source code(tar.gz)
    Source code(zip)
    boson-0.1.0.tar.zst(2.00 MB)
Owner
Fyra Labs
Empowering everyone to change the world
Fyra Labs
Some Steam patches, fixing broken Steam features on Asus Rog Ally

Ally Steam Patches Ally Steam Patches is a tool designed to enhance your Steam experience by applying patches to the Steam client. Installation To ins

MIkhail Kozlov 2 Jul 10, 2023
Some Steam patches, fixing broken Steam features on Asus Rog Ally

⚙️ Steam Patch Steam Patch is a tool designed to enhance your Steam experience by applying patches to the Steam client. ?? Installation To install Ste

MIkhail Kozlov 3 Jul 18, 2023
CLI tool for checking ProtonDB compatibility of your Steam games.

protondb-check protondb-check is currently in active development stage, there might be bugs or other problems. Table Of Contents About Available comma

Giorgi Anakidze 3 Apr 1, 2024
TMM is a Linux native game modding tool. it allows to install and depoly mods for Linux native and wine games.

Tux Mod Manager TMM is a Linux native mod manager made with the Tauri toolkit. It can install, load, remove and deploy mods for both Linux native and

Mathiew May 119 Dec 27, 2022
Abuse the node.js inspector mechanism in order to force any node.js/electron/v8 based process to execute arbitrary javascript code.

jscythe abuses the node.js inspector mechanism in order to force any node.js/electron/v8 based process to execute arbitrary javascript code, even if t

Simone Margaritelli 301 Jan 4, 2023
sg = Steam Guard, access sg verification code locally.

Steam Guard CLI Access your Steam Guard token locally. Credit https://github.com/steevp/UpdogFarmer/blob/master/app/src/main/java/com/steevsapps/idled

Vanilla's Lab 7 Nov 10, 2022
🧖🏻‍♀️ Symlink your Steam screenshots to a sensible place

lnshot ????‍♀️ Symlink your Steam games' screenshot directories into your Pictures folder About This is a little utility to work around a bugbear of m

Jessica Stokes 23 Jan 31, 2023
Decryptor for Steam app: 2378900

IelmenDecryptor A batch decryption program for the files of a game on Steam that has the app ID: 2378900 It will process all encrypted .png, .json, an

null 3 Nov 14, 2023
A diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to retain every change.

Docchi is a diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to save very often. User'

juzy 21 Sep 19, 2022
Open-source compiler for the Papyrus scripting language of Bethesda games.

Open Papyrus Compiler This project is still WORK IN PROGRESS. If you have any feature requests, head over to the Issues tab and describe your needs. Y

erri120 22 Dec 5, 2022