Lutris desktop client https://lutris.net
  • Python 98.3%
  • Shell 1.2%
  • Dockerfile 0.2%
  • Makefile 0.1%
  • Meson 0.1%
Find a file
Daniel Johnson b3e3c3c2d6
Merge pull request #6782 from masonliiu/fix-moddb-resolution-fallback
installer: fall back to file selection when ModDB resolution fails
2026-07-04 09:20:55 -04:00
.github appimage: bump base image to Ubuntu 24.04 for newer WebKit2 4.1 2026-07-01 19:49:12 -04:00
.hooks Added unittest run to the static analysis workflow 2026-03-24 10:42:47 -05:00
bin Force the use of the 'fork' start method on Python 3.14; this isn't a thing that should change on us. 2025-11-04 17:58:17 -05:00
debian Add AppImage to changelog 2026-07-01 15:38:17 -04:00
docs docs: document gogdl_setup and merge's remove_source option 2026-06-30 02:42:07 -07:00
lutris installer: fall back to file selection when ModDB resolution fails 2026-07-04 05:45:53 -05:00
po fix: rename po/gl_ES to po/gl_ES.po so meson can find it 2026-06-18 18:23:58 -05:00
schema Remove restore gamma option + cleanup docs 2024-01-31 11:47:01 -08:00
share update url to release 0.3.0 2026-07-02 17:15:41 -07:00
tests installer: fall back to file selection when ModDB resolution fails 2026-07-04 05:45:53 -05:00
utils appimage: install a modern setuptools + packaging in the build image 2026-07-03 09:44:34 -04:00
.editorconfig install script json schema 2022-03-25 00:58:37 +00:00
.gitignore Let's avoid committing my CLAUDE.md since it might conflict with the boss's and that would be rude. 2026-03-02 17:27:49 -05:00
.mypy_baseline Add mypy to checks 2023-08-26 01:07:48 -07:00
AUTHORS Restore AUTHOR file 2026-01-21 16:43:50 +07:00
CONTRIBUTING.md Update CONTRIBUTING and INSTALL 2024-01-07 20:33:04 -08:00
INSTALL.rst Update a few places to set to minimum Python version to 3.10, since that is what we are testing for now. 2026-02-19 20:31:10 -05:00
issue-list.txt Fix linting issues from merged PRs 2026-01-18 05:41:19 -08:00
LICENSE Fix typo in file name: LICENCE → LICENSE. 2016-11-18 13:49:57 +01:00
lutris.spec Accept either WebKit2 4.0 or 4.1 typelib in RPM Requires 2026-05-02 06:27:43 -04:00
Makefile Add AppImage packaging proof-of-concept 2026-06-30 13:29:57 -07:00
MANIFEST.in Fix a typo, remove missing directories, and add lutris/database to the list of installed directories (#4) 2020-10-03 17:51:48 -07:00
meson.build Add a .lutris file association that execute local file installation 2026-01-17 20:09:19 -08:00
optional_settings.py.in i18n: find locale dir from the optional configuration file generated by meson 2020-06-18 19:11:32 -07:00
pyproject.toml Adding Lutris Project info to pyproject.toml 2026-07-02 10:11:33 -07:00
README.rst modify refs from ~/.config/lutris to ~/.local/share/lutris 2025-03-22 18:30:29 +01:00
ruff.toml Enable RUF013 (no implicit Optional) lint rule 2026-03-28 08:17:11 -04:00
setup.py Update a few places to set to minimum Python version to 3.10, since that is what we are testing for now. 2026-02-19 20:31:10 -05:00
unittest.cfg Added unittest run to the static analysis workflow 2026-03-24 10:42:47 -05:00

******
Lutris
******

|LiberaPayBadge|_ |PatreonBadge|_

Lutris helps you install and play video games from all eras and from most
gaming systems. By leveraging and combining existing emulators, engine
re-implementations and compatibility layers, it gives you a central interface
to launch all your games.

The client can connect with existing services like Humble Bundle, GOG and Steam
to make your game libraries easily available. Game downloads and installations
are automated and can be modified through user made scripts.

Running Lutris
==============

If you have not installed Lutris through your package manager and are using the
source package, it is recommended that you install lutris at least once, even an
older version to have all dependencies available.
Once all dependencies are satisfied, you can run lutris directly from the source
directory with ``./bin/lutris``

If you need to run lutris through gdb to troubleshoot segmentation faults, you
can use the following command:

``gdb -ex r --args "/usr/bin/python3" "./bin/lutris"``

Installer scripts
=================

Lutris installations are fully automated through scripts, which can be written
in either JSON or YAML.
The scripting syntax is described in ``docs/installers.rst``, and is also
available online at `lutris.net <https://lutris.net>`_.

Game library
============

Optional accounts can be created at `lutris.net
<https://lutris.net>`_ and linked with Lutris clients.
This enables your client to automatically sync fetch library from the website.
Via the website, it is also possible to sync your Steam library to your Lutris
library.

The Lutris client only stores a token when connected with the website, and your
login credentials are never saved.
This token is stored in ``~/.cache/lutris/auth-token``.

Configuration files
===================

* ``~/.local/share/lutris``: The client, runners, and game configuration files

   There is no need to manually edit these files as everything should be done from the client.

* ``lutris.conf``: Preferences for the client's UI

* ``system.yml``: Default game configuration, which applies to every game

* ``runners/*.yml``: Runner-specific configurations

* ``games/*.yml``: Game-specific configurations

* ``pga.db``: An SQLite database tracking the game library, game installation status, various file locations, and some additional metadata

* ``runners/*``: Runners downloaded from `lutris.net <https://lutris.net>`_

* ``banners/*.jpg``: Game banners

``~/.local/share/icons/hicolor/128x128/apps/lutris_*.png``: Game icons

Game-specific configurations overwrite runner-specific configurations, which in
turn overwrite the system configuration.

Command line options
====================

The following command line arguments are available::

-v, --version                    Print the version of Lutris and exit
-d, --debug                      Show debug messages
-i, --install                    Install a game from a yml file
-b, --output-script              Generate a bash script to run a game without the client
-e, --exec                       Execute a program with the lutris runtime
-l, --list-games                 List all games in database
-o, --installed                  Only list installed games
-s, --list-steam-games           List available Steam games
--list-steam-folders             List all known Steam library folders
--list-runners                   List all known runners
--list-wine-versions             List all known Wine runners
-a, --list-all-service-games     List all games for all services in database
--list-service-games             List all games for provided service in database
-r, --install-runner             Install a Runner
-u, --uninstall-runner           Uninstall a Runner
-j, --json                       Display the list of games in JSON format
--reinstall                      Reinstall game
--display=DISPLAY                X display to use
--export <game>                  Exports specified game (requires --dest)
--import <game.7z>               Import games from exportfile (requires --dest)
--dest <folder>                  Specifies Export/Import destination folder

Additionally, you can pass a ``lutris:`` protocol link followed by a game
identifier on the command line such as::

    lutris lutris:quake

This will install the game if it is not already installed, otherwise it will
launch the game. The game will always be installed if the ``--reinstall`` flag is passed.

Support the project
===================

Lutris is 100% community supported, to ensure a continuous development on the
project, please consider donating to the project.
Our main platform for supporting Lutris is Patreon: https://www.patreon.com/lutris
but there are also other options available at https://lutris.net/donate

Come with us!
=============

Want to make Lutris better? Help implement features, fix bugs, test
pre-releases, or simply chat with the developers?

Improve the code by just cloning the repository, editing the scripts and then starting Lutris with the ``./bin/lutris -d`` command.

You can always reach us on:

* Discord: https://discordapp.com/invite/Pnt5CuY
* IRC: ircs://irc.libera.chat:6697/lutris
* Github: https://github.com/lutris
* Mastodon: https://fosstodon.org/@lutris

.. |LiberaPayBadge| image:: http://img.shields.io/liberapay/receives/Lutris.svg?logo=liberapay
.. _LiberaPayBadge: https://liberapay.com/Lutris/
.. |PatreonBadge| image:: https://img.shields.io/badge/dynamic/json?color=%23ff424d&label=Patreon&query=data.attributes.patron_count&suffix=%20Patreons&url=https%3A%2F%2Fwww.patreon.com%2Fapi%2Fcampaigns%2F556103&style=flat&logo=patreon
.. _PatreonBadge: https://www.patreon.com/lutris