With the new arrival of Steam games to Linux came the messy Windows-ish file-structures of the games. They get scattered all around your hard drive without you having a clue what is actually going on which we already talked about before.
I have decided to try and help with that matter, and wrote a simple bash script that would take all of your save data, move it to your home//.local/share/games, and create symlinks instead of the actual save data, so the games would be able to access the new save location. I call that script LGSO (Linux Game Saves Organizer).
The script is far from perfect and I have a lot to add, but the basics of the script are already there, and it is fully usable.
As the documentations of Linux games are very poor, I've struggled with finding game save paths, and therefore LGSO currently only supports 4 games: 3089, 7 Days to Die, Blade of Destiny and Planet Explorer. It needs help to support many more.
The main goals of my script are to tweak it a little bit more (add a backup\restore function, easy customization) and to maintain a wiki with all of the save paths, for others to be able to refer to.
LGSO is available at GitHub: https://github.com/Tux1c/LGSO
And you can currently contribute by either reporting bugs and issues, giving locations of game saves, or submitting Pull Requests with pieces of code you think should be implemented!
I have decided to try and help with that matter, and wrote a simple bash script that would take all of your save data, move it to your home/
The script is far from perfect and I have a lot to add, but the basics of the script are already there, and it is fully usable.
As the documentations of Linux games are very poor, I've struggled with finding game save paths, and therefore LGSO currently only supports 4 games: 3089, 7 Days to Die, Blade of Destiny and Planet Explorer. It needs help to support many more.
The main goals of my script are to tweak it a little bit more (add a backup\restore function, easy customization) and to maintain a wiki with all of the save paths, for others to be able to refer to.
LGSO is available at GitHub: https://github.com/Tux1c/LGSO
And you can currently contribute by either reporting bugs and issues, giving locations of game saves, or submitting Pull Requests with pieces of code you think should be implemented!
Some you may have missed, popular articles from the last month:
All posts need to follow our rules. For users logged in: please hit the Report Flag icon on any post that breaks the rules or contains illegal / harmful content. Guest readers can email us for any issues.
20 comments
ps the rest of the games I've got installed in steam right now all have their save files in the /.local/share folder, all over the share folder.
I also wrote a scraper for scrapy that downloads information about save game locations from PC Gaming Wiki.
Here is save game location data for hundreds of games:
https://gist.github.com/xitij2000/c5e66d5447dc7653a3ea
It lists over 400 entries, but many are blank.
is a good place to look for save locations
Although the most annoying ones for me are those that just drop stuff into my home directory without even hiding it. Can probably be "solved" with some pre- post- scripts. Something like:
ln -s ~/.local/share/games/evilgame ~/evilgame; runevilgame.sh; rm ~/evilgame
https://raw.githubusercontent.com/Tux1c/Tux1c.github.io/master/projfiles/lgso/lgsolist.txt
You should potentially make it editable like a wiki, so people with no programming skills can just enter in a new game (pushes approved by mods of course, no funny code injection like "rm -rf /" =P)
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
Yeah, and there's really no error checking at all that the directory creation, copying, etc. was successful before it rm -rf $OLD_DIR.
I also don't like that it gets a random file from the internet, parses it and uses the entries in that file to just go about your home and copy and delete stuff there. No even asking for confirmation anywhere. It would quite easily be able to delete your whole home directory with a tiny mistake in that lgsolist.txt file...
OK, will look into that.
Thank you, will look into that.
Thanks!
Originally, the idea is to open an issue with the tag "game save" with all of the info, but I'll look into that.
Will work on it, thanks.
But I am simply not going to create 50+ issues on github... Perhaps emailing or pm'ing a list in your desired format would be preferable to everyone involved? (or an editable wiki as suggested)
For now, you can PM your list to me directly here on GOL, until I will resolve the wiki, working on other important suggestions :)
Virtually all applications will adhere to the $HOME variable (for obvious reasons); you can just redeclare it for that application.
For example, by default mplayer puts a .mplayer in your home directory:
% mplayer &>/dev/null
% find . -type d -name .mplayer
./.mplayer
By prefixing the command with a variable, you can override that variable only for that application (or sub process). Eg:
% rm -r .mplayer
% mkdir test
% HOME=/home/edgley/test mplayer &>/dev/null
% find . -type d -name .mplayer
./test/.mplayer
Just for clarity, declaring the variable this way doesn't override your sessions variable:
% HOME=/home/edgley/test /bin/true; echo $HOME
/home/edgley
The target directory tends to need to exist; though if you know you don't need the crap it created (like mplayer) you could always set the HOME variable to /dev/null or just use a non existent directory (although you will generate errors that way).
This has worked fine for me for a long time.
~$ grep Exec ~/.local/share/applications/steam.desktop
Exec=env HOME=/home/user/documents/games optirun steam %
Only applies if you have / use the .desktop file:
% grep Exec /bin/steam || echo $?
1
Tehehe, will fix