GithubHelp home page GithubHelp logo

getsolus / linux-steam-integration Goto Github PK

View Code? Open in Web Editor NEW
26.0 16.0 7.0 834 KB

Helper for enabling better Steam integration on Linux

License: GNU Lesser General Public License v2.1

Meson 8.42% Shell 1.20% C 90.38%

linux-steam-integration's Introduction

linux-steam-integration

About

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 the platforms it runs on, are not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*. This fork of linux-steam-integration is now being maintained separately from the original project, to suit the cadence and requirements of the Clear Linux* Project for Intel Architecture.

This project will retain backwards compatibility with the original project at the time of forking to alleviate maintainer concerns, whilst focusing on improvements to match a wider audience than the original project, and ensuring native runtimes continue to work unimpeded.

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.

Plans

  • Cleanup of existing shims
  • Implementation of Proton support

License

Copyright © 2016-2019 Solus Project

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.

linux-steam-integration's People

Contributors

alunux avatar datadrake avatar davidpocina avatar girtablulu avatar harveydevel avatar ikeyd avatar ikeydoherty avatar jacekjagosz avatar joebonrichie avatar joshstrobl avatar philipzae avatar staudey avatar sunnyflunk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linux-steam-integration's Issues

Failed to load steamui.so

My system is Manjaro, and I am using the linux-steam-integration package (0.7.3-10).

When I run LSI (with "Use native runtime", "Use the intercept library", "Use the redirect library", and "Use the Unity fullscreen workaround"), it fails to start with the error "Failed to load steamui.so". The full error in the console is this:

Failed to load steamui.so - dlerror(): ~/.local/share/Steam/ubuntu12_32/steamui.so: undefined symbol: SDL_GetJoystickGUIDInfo

If I turn off the intercept library option LSI is able to load normally.

"steamwebhelper is not responding": Failed creating offscreen shared JS context

When I try to load Linux Steam Integration, with either the intercept library, redirect library, or both, Steamwebhelper fails to load and Steam has an error dialog:

steamwebhelper, a critical Steam component, is not responding. The Steam UI will not be usable. Click here for more information.

There isn't much meaningful console output, but both the minidump (which I don't know how to read, so I just skimmed in a hex editor) and the console had this error:

src/steamUI/steamuisharedjscontroller.cpp (545) : Failed creating offscreen shared JS context

In very rare instances (I think only once so far) this error doesn't occur and I can load Steam normally, but I haven't been able to reproduce that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.