• Stars
    star
    431
  • Rank 100,866 (Top 2 %)
  • Language
    C
  • License
    GNU Lesser Genera...
  • Created over 8 years ago
  • Updated about 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Helper for enabling better Steam integration on Linux

linux-steam-integration

Linux Steam* Integration is a helper system to make the Steam Client and Steam games run better on Linux. In a nutshell, LSI automatically applies various workarounds to get games working, and fixes long standing bugs in both games and the client.

screenshot

In many cases this will involve controlling which libraries are allowed to be used at any given time, and these libraries may be overriden for any of the following reasons:

  • Security
  • Compatibility
  • Performance

This project, and by extension Solus, is not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*.

Linux Steam Integration is a Solus project

logo

Linking compatibility

With LSI, you don't need to worry any more about manually mangling your Steam installation just to make the open source drivers work, or manually creating links and installing unsupported libraries. LSI is designed to take care of all of this for you.

Many library names are redirected through the main "intercept" module, which ensures games will (where appropriate) use the updated system libraries. Additionally the module can override how games and the Steam client are allowed to make use of vendored libraries. This will help with many launch failures involving outdated libraries, or indeed the infamous libstdc++.so.6 vendoring which breaks open source graphics drivers on systems compiled with the new GCC C++ ABI.

Apply path based hotfixes to games

The redirect module contains some profiles to allow us to dynamically fix some issues that would otherwise require new builds of the games to see those issues resolved.

  • Project Highrise: Ensure we don't mmap a directory as a file (fixes invalid prefs path)
  • ARK Survival Evolved: Use the correct shader asset from TheCenter DLC to fix broken water surfaces.

Unity3D Black Screen Of Nope

Older builds of Unity3D had (long since fixed) issues with launching to a black screen when defaulting to full screen mode. This is commonly addressed by launching the games with -screen-fullscreen 0, and is due to an invalid internal condition clamping the renderer size to 0x0 after setting the fullscreen (borderless) window size.

Note - updating these games to newer versions of Unity will fix this bug on Linux, however LSI currently ships a workaround. This workaround will abstract access to the configuration file in $XDG_CONFIG_HOME/.config/unity3d/*/prefs through the Linux /dev/shm system, and will provide initial game configuration whilst also masking the harmful fullscreen setting.

Net result - all Unity3D games using this pref path (the older generation) will start in windowed mode always. They can be fullscreened from inside the game, and this will help with making sure games actually launch.

Notes

Note that LSI will not modify your Steam installation, and instead makes use of two modules, liblsi-redirect.so and liblsi-intercept.so, to dynamically apply all of the workarounds at runtime, which in turn is set up by the main LSI shim binary.

For a more in depth view of what LSI is, and how to integrate it into your distribution, please check the technical README document.

Be advised that we intend to remove the need for distributions to integrate LSI in the near future, by providing the LSI system as a snap package for all supported distributions.

Getting LSI

LSI may not yet be available for your distribution, however some community maintained repositories do exist.

To install the experimental snaps (snapd >= 2.29.4):

sudo snap install --edge solus-runtime-gaming
sudo snap install --devmode --edge linux-steam-integration

Snap Support

LSI is currently undergoing work to become a universal package for all Linux distributions!

Items left to implement:

  • Add basic library support for snapd environment
  • Make shim support $SNAP style environmental variables for local Steam
  • Add support to LSI + snapd for NVIDIA+Vulkan
  • Verify "normal" games work again
  • Publish snaps (edge)

License

Copyright © 2016-2017 Ikey Doherty

linux-steam-integration is available under the terms of the LGPL-2.1 license.

See the accompanying LICENSE.LGPL2.1 file for more details

data/lsi-steam.desktop:

    This file borrows translations from the official `steam.desktop` launcher.
    These are copyright of Valve*.

* Some names may be claimed as the property of others.

More Repositories

1

budgie-desktop

I Tawt I Taw A Purdy Desktop
2,333
star
2

evopop-gtk-theme

Modern Desktop Theme Suite
CSS
192
star
3

linux-driver-management

Linux Driver Management
C
159
star
4

brisk-menu

An efficient menu for the MATE Desktop
C
139
star
5

solbuild

The Solus package build system
Go
80
star
6

sol

Next-generation software manager in development for Solus
C
70
star
7

budgie-rd

R&D repository for Budgie 11 bits
C++
68
star
8

ypkg

Modern, declarative, structured build format
Python
56
star
9

solus-icon-theme

Solus Icon Theme
Python
51
star
10

3rd-party

Extra 3rd party packages
Python
47
star
11

ferryd

Fast, safe and reliable transit for the delivery of software updates to users.
Go
40
star
12

artwork

Solus Artwork
Shell
35
star
13

runtime-snaps

Core repository for Solus runtime snaps
Shell
31
star
14

budgie-desktop-examples

Examples on how to create trivial Budgie Desktop Applets
C
19
star
15

doflicky

Driver Management Looking Thinger
Python
14
star
16

usysconf

Universal system configuration interface
C
12
star
17

mate-notification-theme-slate

MATE Notification Daemon Style
C
12
star
18

mockups

General sharing area for mockups - does not mean anything is yet official
12
star
19

budgie-desktop-branding

Default configuration and overrides for Budgie Desktop on Solus
Meson
11
star
20

USpin

Universal spinner for Linux medium
Go
8
star
21

preston

Conformance pipeline for Linux distribution packages
Go
7
star
22

solus-hardware-config

Base configuration files for Solus hardware deployments
C
6
star
23

mate-desktop-branding

Branding and overrides for the MATE Desktop Experience on Solus
Meson
5
star
24

budgie-site

budgie-desktop.org
HTML
5
star
25

tooling-central

Centralised repository for tooling discussions and TDD docs
Makefile
5
star
26

libosdev

Go library to be shared between tooling
Go
4
star
27

budgie-site-styling

Styling assets for budgie-desktop.org
CSS
3
star
28

qol-assist

QoL assistance to help Solus roll
C
3
star
29

toolchain-cruft

Dumping ground for our emul32 toolchain scripts [WIP]
Shell
3
star
30

plasma-desktop-branding

Branding and default experience configuration for Solus Plasma Desktop implementation
Meson
3
star
31

yokeybob

Pending real name
C
2
star
32

aa-lsm-hook

Distro integration hooks for AppArmor LSM
C
2
star
33

budgie-desktop-icons

Helper for Budgie 10 to handle desktop icons
C
2
star