Git Product home page Git Product logo

minigalaxy's Introduction

Minigalaxy

A simple GOG client for Linux.

screenshot

Features

The most important features of Minigalaxy:

  • Log in with your GOG account
  • Download the Linux games you own on GOG
  • Launch them!

In addition to that, Minigalaxy also allows you to:

  • Update your games
  • Install and update DLC
  • Select which language you'd prefer to download your games in
  • Change where games are installed
  • Search your GOG Linux library
  • Show all games or just the ones you've installed
  • View the error message if a game fails to launch
  • Enable displaying the FPS in games
  • Use the system's ScummVM or DOSBox installation
  • Install Windows games using Wine

Supported languages

Currently, Minigalaxy can be displayed in the following languages:

  • Brazilian Portuguese
  • Czech
  • English
  • Dutch
  • French
  • Finnish
  • German
  • Italian
  • Norwegian Bokmål
  • Norwegian Nynorsk
  • Polish
  • Russian
  • Simplified Chinese
  • Spanish
  • Swedish
  • Taiwanese Mandarin
  • Turkish
  • Ukranian

System requirements

Minigalaxy should work on the following distributions:

  • Debian 10 or newer
  • Ubuntu 18.10 or newer
  • Linux Mint 20 or newer
  • Arch Linux
  • Manjaro
  • Fedora Linux 31 or newer
  • openSUSE Tumbleweed and Leap 15.2 or newer
  • MX Linux 19 or newer
  • Solus
  • Void Linux

Minigalaxy does not ship for the following distributions because they do not contain the required version of PyGObject:

  • Ubuntu 18.04
  • Linux Mint 19.3
  • openSUSE 15.1

Other Linux distributions may work as well. Minigalaxy requires the following dependencies:

  • GTK+
  • Python 3
  • PyGObject 3.29.1+
  • Webkit2gtk with API version 4.0 support
  • Python Requests
  • gettext

Installation

Packaging status
Debian/Ubuntu

Available in the official repositories since Debian 11 and Ubuntu 21.04. You can install it with:

sudo apt install minigalaxy

You can also download the latest .deb package from the releases page and install it that way.

Arch/Manjaro

Available the AUR. You can use an AUR helper or use the following set of commands to install Minigalaxy on Arch:

git clone https://aur.archlinux.org/minigalaxy.git
cd minigalaxy
makepkg -si
Fedora

Available in the official repositories since Fedora 31. You can install it with:

sudo dnf install minigalaxy
openSUSE

Available in the official repositories for openSUSE Tumbleweed and also Leap since 15.2. You can install it with:

sudo zypper in minigalaxy

Alternatively, you can use the following set of commands to install Minigalaxy on openSUSE from the devel project on OBS:

sudo zypper ar -f obs://games:tools gamestools
sudo zypper ref
sudo zypper in minigalaxy
MX Linux

Available in the official repository. Please use MX Package Installer or Synaptic instead of manually installing the .deb from the repo.

Solus

Available in the official repositories. You can install it with:

sudo eopkg it minigalaxy
Void Linux

Available in the official repositories. You can install it with:

sudo xbps-install -S minigalaxy
Flatpak

Available on Flathub. You can install it with:

flatpak install flathub io.github.sharkwouter.Minigalaxy
Other distributions

On other distributions, Minigalaxy can be downloaded and started with the following commands:

git clone https://github.com/sharkwouter/minigalaxy.git
cd minigalaxy
scripts/compile-translations.sh
bin/minigalaxy

This will be the development version. Alternatively, a tarball of a specific release can be downloaded from the releases page.

Support

If you need any help using Minigalaxy, feel free to join the Minigalaxy Discord server. Bugs reports and feature requests can also be made here.

Contribute

Currently, help is needed with the following:

Feel free to join the Minigalaxy Discord if you would like to help out.

Other GOG tools

Special thanks

Special thanks goes out to all contributors:

  • makson96 for multiple code contributions
  • Odelpasso for multiple code contributions
  • TotalCaesar659 for multiple code contributions
  • SvdB-nonp for multiple code contributions
  • tim77 for packaging Minigalaxy for Fedora, Flathub and multiple code contributions
  • larslindq for multiple code contributions
  • graag for multiple code contributions
  • lmeunier for multiple code contributions
  • BlindJerobine for translating to German and adding the support option
  • zweif contributions to code and the German translation
  • JoshuaFern for packaging Minigalaxy for NixOS and for contributing code
  • stephanlachnit for upstreaming to Debian and multiple code contributions
  • sgn for fixing a bug
  • otaconix for fixing a bug
  • phlash for fixing a bug
  • mareksapota for fixing a bug
  • zocker-160 for code cleanup
  • waltercool for contributing code
  • jgerrish for improving the download code
  • LexofLeviafan for fixing a bug
  • orende for contributing code
  • Unrud for contributing code
  • slowsage for contributing code
  • viacheslavka for contributing code
  • s8321414 for translating to Taiwanese Mandarin
  • fuzunspm for translating to Turkish
  • thomansb22 for translating to French
  • ArturWroblewski for translating to Polish
  • kimmalmo for translating to Norwegian Bokmål
  • EsdrasTarsis for translating to Brazilian Portuguese
  • protheory8 for translating to Russian
  • LordPilum for translating to Norwegian Nynorsk
  • dummyx for translating to simplified Chinese
  • juanborda for translating to Spanish
  • advy99i for translating to Spanish
  • LocalPinkRobin for translating to Spanish
  • Newbytee for translating to Swedish
  • Pyrofanis for translating to Greek
  • mbarrio for translating to Spanish
  • manurtinez for translating to Spanish
  • jubalh for packaging Minigalaxy for openSUSE
  • gasinvein for packaging Minigalaxy for flathub
  • metafarion for packaging Minigalaxy for Gentoo early on
  • SwampRabbit and Steven Pusser for packaging Minigalaxy for MX Linux
  • karaushu for translating to Ukrainian
  • koraynilay for translating to Italian
  • heidiwenger and jonnelafin for translating to Finnish
  • jakbuz23 for translating to Czech

minigalaxy's People

Contributors

arturwroblewski avatar blindjerobine avatar dummyx avatar flagrama avatar fuzunspm avatar itwasonlyabug avatar jakbuz23 avatar jgerrish avatar kibun1 avatar kimmalmo avatar kzimir avatar lexofleviafan avatar lmeunier avatar lordpilum avatar makson96 avatar mdgomes avatar newbytee avatar nullbuffer avatar orende avatar protheory8 avatar pyrofanis avatar s8321414 avatar sharkwouter avatar stephanlachnit avatar svdb-nonp avatar thomasb22 avatar tim77 avatar totalcaesar659 avatar viacheslavka avatar zweif 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

minigalaxy's Issues

Allow games to be removed

Currently Minigalaxy doesn't allow games to be removed after installation yet, so this currently requires manual work by the user

Don't remove spaces from directory names when installing

Currently directories which are created contain the game name, but with the spaces removed. This is not needed. The filter function which cleans up the name and removes the spaces from it which is currently used should not be changed, though, instead a new one could be added.

This might require a lot of changes, so make sure to check all files for usages. The main user must be gametile.py at the moment.

OpenSUSE 15.1 error on install: python3-gobject >= 3.30 required

OpenSUSE 15.1 with python3-gobject 3.26.1 installed.
After doing sudo zypper in minigalaxy, system give me an error:
Nothing provides python3-gobject >= 3.30, neccesary for minigalaxy-0.9.1-lp151.3.1.noarch
so I can't continue installing.

Please, any idea?

Thank you

MiniGalaxy crashes if ~/GoG Games does not exist

Hello,

If ~/GoG Games does not exist and if i launch for the 1st time MiniGalaxy, it crashes with these errors :

Traceback (most recent call last):
File "/usr/bin/minigalaxy", line 66, in
main()
File "/usr/bin/minigalaxy", line 60, in main
window = Window(APPLICATION_NAME)
File "/usr/lib64/python3.6/site-packages/minigalaxy/window/window.py", line 48, in init
self.sync_library()
File "/usr/lib64/python3.6/site-packages/minigalaxy/window/window.py", line 55, in sync_library
installed_games = self.__get_installed_games()
File "/usr/lib64/python3.6/site-packages/minigalaxy/window/window.py", line 187, in __get_installed_games
directories = os.listdir(self.config.get("install_dir"))
FileNotFoundError: [Errno 2] Aucun fichier ou dossier de ce type: '/home/odelpasso/GOG Games'

I need to create manually the folder to avoid the crash.

Add offline mode

Currently Minigalaxy is not usable while in offline mode. This could be changed to allow users to start their installed games.

Preferences - Stay Logged In

I would like to suggest an addition to Preferences, with a selection option to Stay Logged In.

Currently the default is to keep users logged in unless they select Logout from the menu.

This would allow users choose if they want have the client logout after closing or to stay logged in.

Thank you for your consideration.

Add Windows icon for Windows games

Currently the library doesn't really show which games are for Windows in any way, even though they are less likely to work than other games. Adding a Windows icon to Windows games would probably be a good idea.

With this the most important things is to not be in violation of any Microsoft copyright.

Allow using the system's wine version instead of the bundled one

This may improve compatibility and performance, but it also has the potential to break games in unexpected ways, so it might be good to make it configurable.

Currently a gametile will compile a command to execute when starting a game based on which files are in the game's directory. It does already support native scummvm and dosbox installations. Wine games are already detected right now, but they aren't launched in a different way from other games.

The wine prefix is always in a directory called prefix from what I've seen. The location of the game's binary is probably best to retrieve by parsing the start.sh script.

Examples of wine packaged games being sold on GOG:

  • Flatout
  • Flatout 2

Dependency not satisfiable on Mint 19.3

Using the .deb from the downloads page, I get the following error message "Error: Dependency is not satisfiable: python3-gi (>=3.30)" when trying to install on Mint 19.3.

Mint defaults to Python 2.7 so that is the obvious issue. However, Python 2.7 and 3.6 are both installed. I'm dis-inclined to change the default version as that will cause issues with system scripts (and much bigger headaches). I have no problem switching distros (or waiting for future releases; this is a beta after all). However, this issue will probably affect others and (I'm hoping) isn't too hard to fix or post a work-around for.

Also, Ubuntu 18.04 should have the same problem (but I haven't tested) since Mint's python setup is to the best of my understanding due to the Ubuntu base.

PS -- really appreciate all the effort that has gone into this project so far!

Option for .desktop-files

When you install a game via the installer script you can create .desktop files on desktop and for the application menu. It would be nice to have this choice too, or add desktop files afterwards via a button.

Games not detected if their installation folder isn't their exact title

The GOG installers that you download off their website omit certain characters when creating the installation folder. The characters I have found that have been omitted are : and -. There are quite possibly more characters but I don't have any examples in my library. As these characters don't exist in the folder but do in the game title they aren't detected by Minigalaxy on startup.

Unzip is not a dependency

Currently the unzip command is used to extract the installers, but it hasn't been added to the dependencies.

It might be worth looping into the zipfile library which comes with python. The reason I wasn't using that was that it doesn't preserve permissions, but I have found a workaround for that.

Can't download / install games

Hello,
I'm trying to package minigalaxy for Solus. Everything builds and installs without issue, however when trying to download a game it skips to installing and hangs. When running through the terminal I get this after clicking the download button, regardless of the game.

hawkeye@desktopsolus ~/b/s/minigalaxy (master)> minigalaxy
Exception in thread Thread-7:
Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.7/site-packages/minigalaxy/window/gametile.py", line 132, in __download_file
    self.__install_game()
  File "/usr/lib/python3.7/site-packages/minigalaxy/window/gametile.py", line 151, in __install_game
    with zipfile.ZipFile(installer_path) as archive:
  File "/usr/lib/python3.7/zipfile.py", line 1258, in __init__
    self._RealGetContents()
  File "/usr/lib/python3.7/zipfile.py", line 1325, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

Change installed filter to include installing games

Currently it is very hard to track which games are installing. This could be a way to make them a little bit more visible.

Steam marks games which are being downloaded as installed as well in your library.

Seg fault with AUR package

Not sure what I did wrong here, I launched it and accidentally clicked download on something (needs a confirmation!). Then I think I clicked it again and then the app just quit. Now it won't launch and all it tells me in terminal is:

[liam@liam-manjaro ~]$ minigalaxy
Segmentation fault (core dumped)

"Windows-only" ScummVM/ResidualVM/DOSBox titles

GOG distributes a great many games that run within DOSBox, ScummVM, etc, and although these tools are cross-platform, GOG packages them only for Windows. As such they are not downloadable via Minigalaxy even though they can run on Linux.

I propose a framework to bring these Windows-only packages the last mile; make them available for download in Minigalaxy and then playable through some kind of scripted install using innoextract and the necessary interpreter/emulator. These scripts would likely need to be tuned to each game, so perhaps they could even be user-contributed.

So far I've tested Riven and Starship Titanic (ScummVM), and Myst 3 (ResidualVM), and their GOG-downloaded packages have all required very minimal reconfiguration to work in Linux. I'd be happy to do any legwork that is needed to "port" these processes to Minigalaxy.

Update German translation

The German translation is still missing a few strings. I can do this, but someone else is welcome to as well.

Close button in About screen doesn't work

A close button which doesn't work shows up in the About screen in Xfce. This button doesn't exist on Gnome.

This was reported to be the case in Manjaro and Debian Buster.

Add a language selection option for the interface

This could be a simple settings menu item, but it should make sure that a language can actually be used before letting the user pick it. It is not possible to load a translation for a locale which isn't installed.

Make it clearer which games are not installed?

Currently there is almost no difference in the library view between games which are installed and games which are not.

Some testing with different methods and input is needed on how this could be achieved.

Some options could be:

  • Changing the color of the button
  • Darkening the images of games which aren't installed
  • Add different filters

The Config object doesn't wait for new entries to be added

If new entries are made in the configuration file, they aren't loaded it seems. This needs more investigation. See:

def __add_missing_config_entries(self):
# Make sure all config values in the default configuration are available
added_value = False
for key in DEFAULT_CONFIGURATION:
if self.get(key) is None:
self.set(key, DEFAULT_CONFIGURATION[key])
added_value = True
if added_value:
self.__config = self.__load_config_file()

Reported in #79

Make game installations cancellable

Currently if you start downloading a game, there isn't much you can do to cancel it. Closing the applications is the only way to do it currently.

Fedora 31, error `zipfile.BadZipFile: File is not a zip file`

Hello,

with minigalaxy-0.9.2-1.fc31.noarch I get

Exception in thread Thread-15:
Traceback (most recent call last):
  File "/usr/lib64/python3.7/threading.py", line 926, in _bootstrap_inner
    self.run()
  File "/usr/lib64/python3.7/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.7/site-packages/minigalaxy/window/gametile.py", line 132, in __download_file
    self.__install_game()
  File "/usr/lib/python3.7/site-packages/minigalaxy/window/gametile.py", line 151, in __install_game
    with zipfile.ZipFile(installer_path) as archive:
  File "/usr/lib64/python3.7/zipfile.py", line 1258, in __init__
    self._RealGetContents()
  File "/usr/lib64/python3.7/zipfile.py", line 1325, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file

when I try to install any game.

If I look in /.cache/minigalaxy/download/, I find 3 files name ending in .sh that are actually html files of a server complaining We have temporarily blocked your access to our website…

Please add handling of the fact that the server may not return a shell script.

cat Akalabeth\:\ World\ of\ Doom.sh

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>GOG.com</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" rel="stylesheet">

        <!-- TODO: add favicons -->

    	<style type="text/css">
			html,
			body { height:100%; }
			body { margin:0; padding:0; 
				background-color:#ccc;
				background-image:-moz-linear-gradient(top, #bdbdbd, #ccc);
				background-image:-o-linear-gradient(top, #bdbdbd, #ccc);
				background-image:-webkit-linear-gradient(top, #BDBDBD, #ccc);
				background-image:linear-gradient(to bottom, #BDBDBD, #ccc);
				background-size:100% 486px; background-position:50% 0; background-repeat:repeat-x;
				color:#262626;
				font-family: 'Open Sans', sans-serif; 
			}
				.wrapper { display:table; 
					max-width:50em; height:100%; padding:0 5%; margin:0 auto;
				}
					.content { display:table-cell; 
						vertical-align:middle; 
					}
						p { margin-top:1em; font-size:1.2em; line-height:1.5; text-align:justify; }
						h1 { font-weight:300; font-size:2em; }
    	</style>
    </head>
    <body>
		<div class="wrapper">
			<div class="content">
				<p>
					We have temporarily blocked your access to our website because You have exceeded number of simultaneous connections. Sorry for any inconvenience this may cause.
				</p>
				<p>
					If you see this message very often, please contact our Support Team immediately after you are able to access GOG.com normally.
				</p>
			</div>
		</div>
    </body>
</html>

should I look closer at one of these files?

pcfe@t7910 minigalaxy $ tree
.
├── download
│   ├── Akalabeth: World of Doom.sh
│   ├── Beneath a Steel Sky.sh
│   └── Overload - Playable Teaser.sh
├── extract
│   ├── 1207658695
│   ├── 1207666073
│   └── 1245077743
├── thumbnails
│   ├── 1129701343.jpg
│   ├── 1207658694.jpg
│   ├── 1207658695.jpg
│   ├── 1207659142.jpg
│   ├── 1207659221.jpg
│   ├── 1207659693.jpg
│   ├── 1207666073.jpg
│   ├── 1245077743.jpg
│   ├── 1449569170.jpg
│   ├── 1748855533.jpg
│   ├── 2016844216.jpg
│   └── 2020648154.jpg
└── WebKitCache
    └── Version 14
        ├── Blobs
        │   ├── 01FD4E285D0B6802D137D45ED11C951B68CE1FD8
        │   ├── 6E7CD8B5BEF84B6100DAA3D5152726D640738BB6
        │   ├── D89AAB7C009CC2215D463726649DD32A167C28AF
        │   ├── DA9A3A8E7A1A81D8CDF0F3233967BD992E9DD499
        │   └── F8325BC7B20A1195CB092999FB0E0A94C8A9262B
        ├── Records
        │   └── 30DC4B5F0E11084A963B8ED5D0152982B6298948
        │       ├── Resource
        │       │   ├── 04D071FB65534B4662AD555D298808059D472AF6
        │       │   ├── 04D071FB65534B4662AD555D298808059D472AF6-blob
        │       │   ├── 05E5FEED03910F671C6E6E9002A5935CEF1C8968
        │       │   ├── 05E5FEED03910F671C6E6E9002A5935CEF1C8968-blob
        │       │   ├── 09702261DC90B98C2CBB9E3240B5BB2E26969AA5
        │       │   ├── 09702261DC90B98C2CBB9E3240B5BB2E26969AA5-blob
        │       │   ├── 0FE3BC93D57490060C2CB6ECCE2503138E2502D6
        │       │   ├── 0FE3BC93D57490060C2CB6ECCE2503138E2502D6-blob
        │       │   ├── 4327F1EB711A77CDA4D038793AB12B35BCD7BC98
        │       │   ├── 4EE03997423BF0AFA5F686CAB2DBD0E6C3C5733C
        │       │   ├── 4EE03997423BF0AFA5F686CAB2DBD0E6C3C5733C-blob
        │       │   ├── 50108A1B18143539A96F849CE2A7FE070CCA3B99
        │       │   ├── 51FDD24E2A8A5F3903027FE82E0CD67DC4EC97DC
        │       │   └── 985AC8456AE13B16AF65FDE7E1D7D0F5B0CD1C5D
        │       └── SubResources
        │           └── 9A09B86CD933CE9304670C83DC4732604B02ACB6
        └── salt

13 directories, 36 files
pcfe@t7910 minigalaxy $ 

Make installable through pip

Since distribution packages can sometimes lag behind, it would be useful if minigalaxy were installable through pip, so we could manually update as soon as possible.

I tried this when cloning the repo, by doing pip install ., but when doing that, and running minigalaxy, I get the error: gi.repository.GLib.Error: g-io-error-quark: Error opening file /usr/share/minigalaxy/ui/login.ui: No such file or directory (1)

It seems the files were actually installed under /usr/local/share rather than /usr/share. It may be that simply fixing the paths would resolve this issue.

More game details

Another one for the pile of feature requests: Additional details on each game accessible via the game list interface. Right now the UI is pretty sparse; each game has a title image and a Download/Play button and that's basically it. It would be helpful to have actual text titles (as the images are not always super-legible), as well as game descriptions, ratings, etc. Perhaps that much detail warrants a "Details" view for each game to keep the UI from getting too cluttered. If this is a ton of work to implement, even a link to each game's page at GOG.com would be useful. After all, we game hoarders don't necessarily remember what every game in our library is about.

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.