sonic2kk / steamtinkerlaunch

Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs
GNU General Public License v3.0
2.18k stars 73 forks source link
bash game-command game-launch games hacktoberfest linux linux-gaming native-games proton steam steam-compatibility steam-library steamgriddb steamplay stl tinker wrapper yad

Steam Tinker Launch

GitHub version GitHub stars GitHub code size in bytes GitHub contributors aur votes GitHub issues GitHub license

What is SteamTinkerLaunch?

**SteamTinkerLaunch** is a Linux wrapper tool for use with the Steam client

Steam Tinker Launch is a versatile Linux wrapper tool for use with the Steam client which allows for easy graphical configuration of game tools, such as GameScope, MangoHud, modding tools and a bunch more. It supports both games using Proton and native Linux games, and works on both X11 and Wayland.

As described by /u/TaylorRoyal23 on r/linux_gaming:

"An incredible wrapper with a menu that lets you easily toggle and modify various settings for games on Linux. Anything from proton versions, to startup and exit scripts, proton/dxvk/etc. settings, FSR, reshade, and even options for various tools like gamemode, replay-sorcery, gamescope, etc. Tons more too. I just set my default proton version to "steam tinker launcher" and then every game launches with a 2 second menu that allows you to easily change any of the settings. If you don't press any buttons it just goes with the defaults and launches the game. The menus can get a little confusing but it consolidates it all in one place and is way more simple than trying to remember dozens of commands for various settings that one might need."

Main Menu

What Does It Do?

SteamTinkerLaunch offers a huge variety of features, too many to list in this Readme. Please see the Features List and their associated wiki pages for a full breakdown. However, here are some of the key features offered by SteamTinkerLaunch. Note that some of these features may not work with Flatpak Steam!

Feature Description
Custom Per-Game Environment Variables Set custom environment variables on a per-game basis. Useful for adding command-line tweaks for various games.
Custom Game Executable Change the executable that Steam launches. Useful for custom game launchers/mod launchers.

This option is extremely flexible, allowing for launching a custom executable with a game, instead of the game, before the game or after the game. See the Custom Program wiki page for usage.
Easy installation of Winetricks verbs SteamTinkerLaunch can apply the necessary steps to install, for example, dotnet48 or later in a Proton prefix, which can fix common issues with GUI tools running through Proton.

It is highly recommended to install dotnet48 using a community flavour of Proton such as GE-Proton or Proton 5.0. You will also want to ensure your Winetricks version is up-to-date.
ModOrganizer 2 Support Installs and sets up mod installation and organization tool ModOrganizer 2. Includes browser and command line integration for handling NXM links with xdg-open.

See our ModOrganizer 2 wiki page and modding wiki page for more details.
Vortex Mod Manager Support Installs and sets up Nexus Mods' mod management tool Vortex Mod Manager. Includes browser and command line integration for handling NXM links with xdg-open.

See our Vortex wiki page and modding wiki page for more details.
SpecialK Support Utility for enhancing and fixing common problems with Windows games.

See our SpecialK wiki page for usage. May require additional Optional Dependencies.
ReShade Support (Proton/Wine Only) Supports the use of ReShade shaders to enhance the visual quality of Windows games. Note that ReShade does not support native Linux games.

See our ReShade wiki page for usage and information on using ReShade and SpecialK together.
Hedge Mod Manager support Supports automatic installation of the Open-Source Modern Sonic game mod manager as well as attempting to install workarounds for various games that require it.

Due to the nature of this tweaks relying on Winetricks some manual intervention may be required in some instances. Please see the SteamTinkerLaunch Hedge Mod Manager wiki page for details.
Custom Wine/Proton Download Manages downloading custom Proton and Wine releases, such as GloriousEggroll's popular Proton flavour GEProton. These versions are installed and managed by SteamTinkerLaunch. (Requires jq to be installed!)

See our wiki pages on Custom Proton Versions and Custom Wine Versions for more details.

To find out about the latest release, check out the stable release changelog. To find out about the latest bleeding-edge development changes not yet in a stable build, check out the full changelog.

How Do I Use It?

General usage

Steam Tinker Launch works with Linux native games and games using Proton, however some Windows-only utilities (such as ReShade) are only available for Proton games. SteamTinkerLaunch also supports Non-Steam Games so long as they are launched through the Steam client.

There are two ways to use SteamTinkerLaunch through Steam, either as a Compatibility Tool (intended for Proton games) or as a Launch Option (intended for native Linux games). Only one of these options should be used per game.

Steam Compatibility Tool (Proton Games)

Using SteamTinkerLaunch as a compatibility tool is the intended way of using it with Proton games. Once SteamTinkerLaunch is installed, force it as a compatibility tool for your chosen game from the list of compatibility tools. You can also set SteamTinkerLaunch as the default compatibility tool for all applications from the Steam Play settings of the Steam client. Keep in mind that if you force SteamTinkerLaunch as a compatibility tool, Steam will always download the Windows release of the game.

Steam Launch Option (Native Linux Games)

Using SteamTinkerLaunch as a Launch Option is the intended way of using it with native Linux games. You can enable SteamTinkerLaunch as a launch option

steamtinkerlaunch %command%

On some platforms such as Steam Deck, using SteamTinkerLaunch as a launch option may require you to add it to your path. Refer to your distributions documentation on how to add the script to your path, as this can vary between distributions and shells. If you installed SteamTinkerLaunch via ProtonUp-Qt it will added to your path for you, though you may still have to set the path to $HOME/stl/prefix/steamtinkerlaunch as described on the Launch Option wiki page.

It is possible to use SteamTinkerLaunch as a launch option for Proton games, but this is not the intended use-case.

Game-Specific Use

When starting a game, a small Wait Requester dialog will pop up. This will allow you to access the Main Menu either by pressing the button or pressing the spacebar, or skip to launching the game. By default, the dialog will only stay for two seconds before it times out and launches the game, but this can be configured in the SteamTinkerLaunch settings.

Wait Requester

The Main Menu is the springboard to tinkering with your game options. See the wiki page for more information on the options it provides.

Command Line

SteamTinkerLaunch has several command line options which can be useful outside Steam, such as for installing modding tools. You can run steamtinkerlaunch help for a full list of available commands, or if SteamTinkerLaunch is not in your path you can run sh steamtinkerlaunch help from the folder where you downloaded SteamTinkerLaunch.

How Do I Install It?

SteamTinkerLaunch can be installed in a few different ways depending on your platform and needs. Please refer to the Installation wiki page for detailed installation instructions.

Platform Notes
Package Manager Preferred installation method. See distribution package status below, though this list may not be exhaustive.
Many thanks to all package maintainers!

Packaging status

Refer to the Installation Wiki for more information on available packages.
ProtonUp-Qt As of v2.7.3, ProtonUp-Qt has support for SteamTinkerLaunch. This should allow you to install SteamTinkerLaunch regardless which distribution you are using including Steam Deck. See the Installation wiki and our ProtonUp-Qt wiki page for more details.

Outside of Steam Deck, ensure you have met the relevant SteamTinkerLaunch hard dependencies.
Manual Installation SteamTinkerLaunch supports system-wide (root) and local (non-root) manual installation. See Installation Wiki notes for setup and details.
Steam Deck See Installation Wiki for Steam Deck specific installation instructions.
Steam Flatpak See Installation Wiki for setup instructions on using Steam Flatpak and SteamTinkerLaunch.

NOTE: This is only for Flatpak Steam.
Other See Installation Wiki for any distro-specific installation instructions.

Press

Several great people have mentioned SteamTinkerLaunch on their platforms/channels. Many thanks to all who have covered SteamTinkerLaunch!

Name Press
podiki (also a SteamTinkerLaunch contributor) Wrote a huge article about SteamTinkerLaunch on BoilingSteam!
ekianjo Wrote up a Q&A on BoilingSteam with SteamTinkerLaunch creator Frostworx!
Hex DSL Made a YouTube video showcasing SteamTinkerLaunch
tuxfoo Made a YouTube video showcasing SteamTinkerLaunch
Linux Game Cast Mentioned SteamTinkerLaunch on their casts several times, and counting!
Kevin Wammer Wrote this article
Starlogical from HiTechLoLife Created this video describing SteamTinkerLaunch
joker1007 (Japanese) Wrote a huge article on SteamTinkerLaunch for Japanese users

Configuration

When SteamTinkerLaunch is started for the first time, it will create its default configuration structure (usually in ~/.config/steamtinkerlaunch). All Configuration Files are self-contained documents and are always growing, and as a result some options may be missing. If you find a configuration option that is not documented, please request it on the issue tracker. You may even write the documentation yourself and a collaborator can add it.

For a general overview what can be configured, you check the wiki, or simply browse through the Main Menu, which covers almost everything available. If you want to get an overview of SteamTinkerLaunch's features, and you find the huge wiki too overwhelming, you might want to check out the articles and videos created by members of the community.

Configuration with Text Editors

As mentioned, almost everything can be configured from the Main Menu, but optionally you can edit SteamTinkerLaunch's global and per-game configuration files with a graphical text editor for a more granular approach. Before diving into editing with a text editor, it might be a good idea to start by exploring the configuration options in the Main Menu, and then diving in and tweaking with a text editor.

For more information on SteamTinkerLaunch's specific configuration files, see the Configuration Files wiki page.

For information on where SteamTinkerLaunch stores downloaded files, see the Downloads wiki page.

Troubleshooting

Logs

Logs are written into the LOGDIR as defined in the Global Menu or Global Config (by default, this is usually ~/.config/steamtinkerlaunch/logs/). The verbosity of the logfile depends on the WRITELOG variable, where 0 is no logging, 1 is less verbosity and 2 is most verbosity.

SteamTinkerLaunch produces a number of logs, including game-specific log files. For logs that have a Steam AppID in them (such as Proton logs), there is usually a symlink for the log file with the game's name to make it easier to identify logs.

SteamTinkerLaunch may also store additional logging information in /dev/shm/steamtinkerlaunch.

As well as logs, there is a wiki page for troubleshooting which lists some problems a few users have faced and some known issues.

Disclaimer

Keep in mind that you are using SteamTinkerLaunch at your own risk and that you are responsible for the third party programs that you launch with it. SteamTinkerLaunch is not affiliated with Valve Corporation or Steam.

Contributing

SteamTinkerLaunch is always looking for new contributors. See CONTRIBUTING.md for some more information on how to contribute to the project.

License

SteamTinkerLaunch is licensed under the GNU General Public License v3.0. See LICENSE for more information.