Code Monkey home page Code Monkey logo

lutris's Introduction

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.

Game library

Optional accounts can be created at lutris.net and linked with Lutris clients. This enables your client to automatically sync fetch library from the website. It is currently not possible to sync from the client to the cloud. 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

  • ~/.config/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

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

Runners and the game database

~/.local/share/lutris: All data necessary to manage Lutris' library and games, including:

  • 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

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?

You can always reach us on:

lutris's People

Contributors

a6gibkm avatar aaronopfer avatar adehom avatar ahmed-al-balochi avatar alexanderravenheart avatar cclauss avatar daniel-j avatar danieljohnson2 avatar gloriouseggroll avatar karthanistyr avatar keenanweaver avatar leandrostanger avatar letiliel avatar liberavia avatar marius851000 avatar medath avatar openglfreak avatar pythonicchemist avatar robloach avatar ryochan7 avatar sigmasd avatar steinhagen avatar stephanlachnit avatar strycore avatar swimmingtiger avatar tannisroot avatar telanus avatar tingping avatar tom-todd avatar vistaus 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  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  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  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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar

lutris's Issues

[Uninstall window] game name and path not replaced

The window displays {game} and {path} instead of the actual name and path.

Traceback (most recent call last):
File "/media/data/Creation/Programmation/Programmes/Lutris/lutris/lutris/gui/lutriswindow.py", line 166, in on_remove_game
UninstallGameDialog(game=selected_game, callback=self.on_game_deleted)
File "/media/data/Creation/Programmation/Programmes/Lutris/lutris/lutris/gui/dialogs.py", line 27, in init
self.initialize(**kwargs)
File "/media/data/Creation/Programmation/Programmes/Lutris/lutris/lutris/gui/uninstallgamedialog.py", line 27, in initialize
game_name = game_info['name']
TypeError: 'NoneType' object has no attribute 'getitem'

Provide action to relocate the game files

As a user I can see were my game files are located and move them to another location. A good position for this option would be somewhere in the EditGameDialog (not in the "Game" tab since that is built programmatically and only deals with game settings)

The relocate option should open a Dialog similar to what can be found in Transmission, asking the user if the program should move the files or if they are already at the chosen destination)

Before implementing this, there should be a get_game_files available in each runner, pointing to the ROM(s) or folder for a specific game. Most runners rely on ROMs and they are usually all stored in the same directory.

Double-click to launch a game fails in Icon View if...

... an another game is selected. I need to select a game first before double-clicking it is taken into account.

Though, if you fail a double-click on a game that way, then you can double-click another game directly and it will work. Interesting...

App freezes when fetching a bunch of icons

It does it in List or Icon view. It starts doing it for me when there is a dozen banners to sync. Seems slightly random around this limit.

I've rolled back to 0.3.2, the issue was there already.

lutris-0.3.4-2.noarch.rpm fails to install on Fedora 20

I get the following error:

> sudo rpm -ihv /tmp/lutris-0.3.4-2.noarch.rpm 
Preparing...                          ################################# [100%]
    file / from install of lutris-0.3.4-2.noarch conflicts with file from package filesystem-3.2-19.fc20.x86_64
    file /usr/bin from install of lutris-0.3.4-2.noarch conflicts with file from package filesystem-3.2-19.fc20.x86_64

Fix workdir on main exe in the wine runner

Arma: Cold War Assault and Morrowind need to be launched from within the directory of the exe. AFAIK there's no option to set the workdir for the main exe currently.

The Icon View can't be sorted and filtered at the same time

Making the store both filtered and sortable works for the TreeView but not the IconView which gets glitchy when using the search field. The error reported is
"Gtk-CRITICAL **: gtk_cell_area_render: assertion `GTK_IS_CELL_AREA_CONTEXT (context)' failed"

But in this tutorial it reads "Instead of using cell renderers, Gtk.IconView requires (blablabla)". So, is your use of a cell renderer in the IconView at fault? Well, not so sure. I've got rid of that text label using a cell renderer and it didn't change a thing.

Maybe it's just that sortable and filtered IconViews are not meant to exist...

A workaround is to only apply the TreeModelSort model to the TreeView. But we'll certainly want to sort the IconView too in the future (e.g. sort by 'last played' would be relevant for the icon view).

[strycore replied: I still haven't had the time to have a look at this but the CellRenderer is, if I remember correctly, the way to fix the extra large padding between icons. This trick comes from Rhythmbox's Cover Art browser plugin, it also uses an icon view so there may be some more code snippets to pick from this project.]

Steam games won't install from web

Trying to install a Steam game (Linux or Wine) from the website does nothing. If the game was already installed, it launches as expected.

It's probably a recent regression.

AttributeError on installing game from commandline (`lutris -i installer.yml`)

freso@kotake> LANG=C lutris -v -d -i the-dark-mod-201.yml

** (lutris:4848): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-bZPm0Xl65r: Connection refused
INFO     2014-07-07 17:44:23,863 [lutris]:Installing 
Traceback (most recent call last):
  File "/usr/bin/lutris", line 126, in <module>
    InstallerDialog(options.installer_file or game_slug)
  File "/usr/lib/python2.7/site-packages/lutris/installer.py", line 697, in __init__
    self.launch_install(0)
  File "/usr/lib/python2.7/site-packages/lutris/installer.py", line 703, in launch_install
    self.interpreter = ScriptInterpreter(script, self)
  File "/usr/lib/python2.7/site-packages/lutris/installer.py", line 100, in __init__
    if not self.is_valid():
  File "/usr/lib/python2.7/site-packages/lutris/installer.py", line 138, in is_valid
    if not self.script.get(field):
AttributeError: 'str' object has no attribute 'get'

(Using the latest Git master via the lutris-git ArchLinux package, as of this report commit 11c43f9.)

Bad English

On WineSteam click Install, and the dialog box has a title of "Where is located Steam ?" but this is broken English. Proper English is "Where is Steam located?"

Provide Lutris Runtime

The Lutris Runtime is the same thing as the Steam runtime, the Loki compat libs or the Desura Runtime (is it named like that ?)

It's a folder full of .so libs that could be of any use for games and that have some probability of not being installed on the system.

As a first benchmark, the Lutris Runtime should be able to run Soldier of Fortune, Unreal Tournament, Warsow and Penumbra without apt-getting libs (on a clean Ubuntu system)

The Lutris Runtime will be located in ~/.local/share/lutris/lib32

It is recommended to use the Steam Runtime as a starting point. It's open source.
https://github.com/ValveSoftware/steam-runtime

nulldc runner cleaned up too much

Error:
".../lutris/runners/nulldc.py", line 57, in get_nulldc_path
if not self.nulldc_path:
AttributeError: 'nulldc' object has no attribute 'nulldc_path'

Deletes home folder when uninstalling

Found this bug the hard way... got a good portion of my files deleted this way

  1. Add a new game
  2. Set a name
  3. right-click the added game and press Uninstall
  4. the second option in the dialog is "remove all game data under /home/'user'

lutris don't start

After install lutris 0.3.4 from deb on Kubuntu 14.04 (linux 3.13.0-32) lutris don't start.

Unsafe & unexpected uninstall: winesteam

The Uninstall window for some uninstalled but previously installed winesteam games lets me "remove all game data under ~/.wine/drive_c/Program Files/Steam".

Steps to reproduce:

  • Install Loadout
  • Uninstall Loadout (don't remove from library, don't remove game data)
  • Uninstall the uninstalled Loadout

Crash when renaming folder while in file chooser

Steps to reproduce:

  • Start installing any game with a $GAMEDIR (not Steam)
  • When prompted for a destination folder, click 'Browse…'
  • Click 'Create folder', name the folder, do not click 'Open'
  • Open a Nautilus window and rename the folder you jsut created
  • Watch the world crash and burn around you

Gtk:ERROR:/build/buildd/gtk+3.0-3.4.2/./gtk/gtkrbtree.c:465:_gtk_rbtree_insert_after: assertion failed: (_gtk_rbtree_is_nil (tree->root))
[1] 22802 abort (core dumped) ./bin/lutris -dv

This is happening on Ubuntu 12.04, if I can't reproduce on 13.10, this issue will be closed

A big bunch of broken installers

Broken:

  • Chasm (demo) - Here, the most annoying is that chmodx doesn't work ¿ Other than this, the linux launcher requires mono. And xboxdrv really tries to exist even if not installed, with lots of error messages. All of this just for a demo, not sure it's worth spending time on it right now.
  • Daggerfall - Installation not happening, needs #99 fixed. Needs instructions on dos install process.
  • Doom 3
  • Marathon 1, 2 & 3 - Missing libpng15.so.15
  • Minetest - Misses libIrrlicht.so.1
  • OpenRA - "mscorlib.dll was not found"
  • Serious Sam - The installer requires "data" on the CD, well I DLed a supposedly clean CD image, there is no "data" folder in it. Right, so I changed for a "requires" that I actually have on the disc, loaded it with CDEmu, but hitting the big OK button in the installer does nothing. No debug info.
  • Shadow Warrior Classic - Launches the Dosbox window, doesn't seem to use the .conf files.
  • Urban Terror - Broken DL link.

Needs work:

  • Alien Arena - "The file crx could not be found". You picked the wrong archive ? It downloads the source code.
  • Civilization - Installer very basic expecting us to know where to get the archive from and how to crawl our way through DOS to setup/launch the game.
  • Day of the Tentacle and Sam & Max - Asking for a zip is quite shady and not working when you have the game in CD format, it should rather ask for a folder containing the files needed by ScummVM. [Changed it to ask for the three required files separately]
  • Jedi Outcast - Provides no clue about were to find the xlava stuff

Warcraft III installer

Hi, I am writing a Lutris installer for Warcraft III: Reign of Chaos and would like to do the following:

  1. Disable the in-game videos as they made the game crash on my own installation. Simply renaming the folder with the videos can do that.
  2. Make the game use OpenGL. Setting the key "Gfx OpenGL" with "DWORD" value 1 in "HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft" will do that.

Inspired by the gog wine script for Fallout, it currently looks like this but I am not sure how to handle 1) and 2). Do you have any suggestions?

exe: drive_c/Program Files/Warcraft III
files:
- {war-installer: 'N/A:Please select the location of the Warcraft III: Reign of Chaos installer on your CD'}
game: {prefix: $GAMEDIR}
installer:
- task: {args: /nogui, description: Installing Warcraft III: Reign of Chaos, executable: '${war-installer}',
    name: wineexec, prefix: $GAMEDIR}
name: Warcraft III: Reign of Chaos
runner: wine
version: CD

Best regards

Unsafe uninstall

Steps to reproduce:

  1. Add a game manually,
  2. Give a name,
  3. Pick Wine as the runner,
  4. Add,
  5. Uninstall,
  6. Check that you want to remove everything in your default games folder because you click so fast you don't have time to read,
  7. Play some banjo

Login with "enter"-key not possible.

When I want to connect with my username and password in Lutris, it is not possible to connect with the "enter"-key. Instead I have to use the "connect"-button.

Save sync

🌳 You've probably thought of this one. I'm seeing it as a critically cool feature and the sooner we have it, the better.

How it could work:

  1. Reference the original saves folder path or individual savegames paths in the script.
  2. At the end of installation, replace those with symlinks pointing to, e.g., <default_games_path>/.saves/<game_slug>/
  3. On game uninstall, add an option to delete the saves.

Winesteam's auto installation crashes

Trying to install Shadow Warrior Classic with winesteam runner uninstalled, it crashed when launching the "Where is Steam located?" window, or when closing it.

DEBUG    2014-06-21 20:47:25,008 [jobs]:Async call: install
DEBUG    2014-06-21 20:47:25,009 [wine]:Running wine command: WINEARCH=win32  wine "['msiexec', '/i', '/home/ovo/.cache/lutris/tmp/SteamInstall.msi', '/q']" 
wine: cannot find '['msiexec', '/i', '/home/ovo/.cache/lutris/tmp/SteamInstall.msi', '/q']'
[xcb] Unknown sequence number while processing queue
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
python2: ../../src/xcb_io.c :274 : poll_for_event:  l'assertion « !xcb_xlib_threads_sequence_lost » a échoué.
Abandon (core dumped)

Installing the runner from the runners config window works OK. (Though Shadow Warrior's install still fails, as stated in #24.)

FS-UAE doesn't work

I've tested Litil Divil, Eye of the Beholder and manually added Dreamweb, none work. FS-UAE launches, saying "configuration file missing" and then either a "waiting for bootable media" screen or in the case of EotB, some strange Matrix-like writings then a Software failure.

Edit :: I don't see anything wrong in the command and I've made Lutris redownload fs-uae, doesn't help.

Stalling on downloading The Dark Mod updater archive

I've created an installed for The Dark Mod, but I can't seem to get it to work locally, as it just doesn't download the archive noted in the installer. @strycore got that part to work just fine though, so it's likely something local, but I can't figure out what it is. I can reach to file just fine using wget or a browser, so the HTTP connection to it isn't blocked.

Output from lutris -v -d:

freso@kotake> lutris -v -d                                                                                                                                 ~

** (lutris:5086): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-bZPm0Xl65r: Opkobling nægtet
DEBUG    2014-07-07 17:52:13,691 [lutris]:Welcome to Lutris
DEBUG    2014-07-07 17:52:13,746 [lutriswindow]:Getting game list
DEBUG    2014-07-07 17:52:13,972 [lutriswindow]:Switching view
DEBUG    2014-07-07 17:52:14,275 [lutriswindow]:Connecting signals
DEBUG    2014-07-07 17:52:14,731 [jobs]:Async call: sync
DEBUG    2014-07-07 17:52:14,731 [api]:Syncing game library
DEBUG    2014-07-07 17:52:14,732 [api]:Fetching game library
DEBUG    2014-07-07 17:52:15,629 [api]:88 games in remote library
DEBUG    2014-07-07 17:52:15,633 [api]:88 games in local library
DEBUG    2014-07-07 17:52:15,634 [api]:0 games added
DEBUG    2014-07-07 17:52:15,635 [jobs]:Async call: sync_icons
DEBUG    2014-07-07 17:52:15,636 [resources]:Fetching icons
INFO     2014-07-07 17:52:41,331 [installer]:Downloading file 1 of 1
DEBUG    2014-07-07 17:52:41,332 [installer]:Fetching [tdm_update_linux.zip]: http://www.fidcal.com/darkuser/tdm_update_linux.zip

... and then nothing. Any ideas would be welcome.

Wine architecture mixup

Even before creating a prefix, Wine somehow thinks the future of the prefix is x64 while it's trying to run the install exe in 32 bits mode. :)

DEBUG:lutris.util.log:Running wine command: WINEARCH=win32 WINEPREFIX="/home/ovo/Diversion/x Lutris/fallout" wine "/home/ovo/Diversion/x INSTALL/Fallout 2.0.0.14_gog.exe" /silent /nogui
wine: WINEARCH set to win32 but '/home/ovo/Diversion/x Lutris/fallout' is a 64-bit installation.

The issue originated with your first commit implementing 32 bits as default.
f3e2105

TOSEC scanner

As I user, I can point the program to a folder, Lutris will scan it, calculate the md5sum of each file and send the checksums to lutris.net. In return, lutris.net will send back game metadata gathered from the TOSEC databases.

WIth this metadata, Lutris will automatically install any new game found.

Syncing not user friendly

After adding a game from the website to one's library, it needs a restart or reconnection of the client + waiting + switching icon/list view to have it finally appear (and still needs dozens of seconds to retrieve the icon). Without feedback in the process (no indication it's syncing).

downloads do not work

using a yml-file from the website like beneath-a-steel-sky-scumm.yml I don't get any download-progress and on stdout it says

"Location is not mountable"

Improve "select file" installation step

The "files: - game-file: 'N/A: Blabla select file blabla" directive would be more user-friendly if it displayed as a dialog similar to the "Select installation directory" dialog. That is, the text instruction in the middle and a clickable Browse field below to select the path. Instead of directly throwing the user into the browser dialog with the instruction text not very visible in the title bar.

Desura games will be installed in lutris runner directory

Games shouldn't be installed by default in .local/share/runner but the desura runner is installed here (which is the right location) and the games will be installed there.

Same problem would exist for Steam if it had a proper installation method.

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.