diff --git a/src/importer/sources/bottles_source.py b/src/importer/sources/bottles_source.py index 2905fb3..c1af459 100644 --- a/src/importer/sources/bottles_source.py +++ b/src/importer/sources/bottles_source.py @@ -86,13 +86,14 @@ class BottlesSource(URLExecutableSource): name = "Bottles" iterator_class = BottlesSourceIterator url_format = 'bottles:run/"{bottle_name}"/"{game_name}"' - available_on = set(("linux",)) + available_on = {"linux"} data_location = Location( schema_key="bottles-location", candidates=( - "~/.var/app/com.usebottles.bottles/data/bottles/", + shared.flatpak_dir / "com.usebottles.bottles" / "data" / "bottles", shared.data_dir / "bottles/", + shared.home / ".local" / "share" / "bottles", ), paths={ "library.yml": (False, "library.yml"), diff --git a/src/importer/sources/flatpak_source.py b/src/importer/sources/flatpak_source.py index d793ecb..726edaf 100644 --- a/src/importer/sources/flatpak_source.py +++ b/src/importer/sources/flatpak_source.py @@ -116,7 +116,7 @@ class FlatpakSource(Source): name = "Flatpak" iterator_class = FlatpakSourceIterator executable_format = "flatpak run {flatpak_id}" - available_on = set(("linux",)) + available_on = {"linux"} data_location = Location( schema_key="flatpak-location", diff --git a/src/importer/sources/heroic_source.py b/src/importer/sources/heroic_source.py index ed501c2..9048ca8 100644 --- a/src/importer/sources/heroic_source.py +++ b/src/importer/sources/heroic_source.py @@ -137,13 +137,14 @@ class HeroicSource(URLExecutableSource): name = "Heroic" iterator_class = HeroicSourceIterator url_format = "heroic://launch/{app_name}" - available_on = set(("linux", "win32")) + available_on = {"linux", "win32"} config_location = Location( schema_key="heroic-location", candidates=( - "~/.var/app/com.heroicgameslauncher.hgl/config/heroic/", + shared.flatpak_dir / "com.heroicgameslauncher.hgl" / "config" / "heroic", shared.config_dir / "heroic", + shared.home / ".config" / "heroic", shared.appdata_dir / "heroic", ), paths={ diff --git a/src/importer/sources/itch_source.py b/src/importer/sources/itch_source.py index 0b11dcb..841c2e0 100644 --- a/src/importer/sources/itch_source.py +++ b/src/importer/sources/itch_source.py @@ -82,13 +82,14 @@ class ItchSource(URLExecutableSource): name = "Itch" iterator_class = ItchSourceIterator url_format = "itch://caves/{cave_id}/launch" - available_on = set(("linux", "win32")) + available_on = {"linux", "win32"} config_location = Location( schema_key="itch-location", candidates=( - "~/.var/app/io.itch.itch/config/itch/", + shared.flatpak_dir / "io.itch.itch" / "config" / "itch", shared.config_dir / "itch", + shared.home / ".config" / "itch", shared.appdata_dir / "itch", ), paths={"butler.db": (False, "db/butler.db")}, diff --git a/src/importer/sources/legendary_source.py b/src/importer/sources/legendary_source.py index b6b15cb..2882e92 100644 --- a/src/importer/sources/legendary_source.py +++ b/src/importer/sources/legendary_source.py @@ -92,12 +92,15 @@ class LegendarySourceIterator(SourceIterator): class LegendarySource(Source): name = "Legendary" executable_format = "legendary launch {app_name}" - available_on = set(("linux", "win32")) + available_on = {"linux", "win32"} iterator_class = LegendarySourceIterator config_location: Location = Location( schema_key="legendary-location", - candidates=(shared.config_dir / "legendary",), + candidates=( + shared.config_dir / "legendary", + shared.home / ".config" / "legendary", + ), paths={ "installed.json": (False, "installed.json"), "metadata": (True, "metadata"), diff --git a/src/importer/sources/lutris_source.py b/src/importer/sources/lutris_source.py index 17e4956..ad0bc80 100644 --- a/src/importer/sources/lutris_source.py +++ b/src/importer/sources/lutris_source.py @@ -93,15 +93,16 @@ class LutrisSource(URLExecutableSource): name = "Lutris" iterator_class = LutrisSourceIterator url_format = "lutris:rungameid/{game_id}" - available_on = set(("linux",)) + available_on = {"linux"} # FIXME possible bug: location picks ~/.var... and cache_lcoation picks ~/.local... data_location = Location( schema_key="lutris-location", candidates=( - "~/.var/app/net.lutris.Lutris/data/lutris/", + shared.flatpak_dir / "net.lutris.Lutris" / "data" / "lutris", shared.data_dir / "lutris", + shared.home / ".local" / "share" / "lutris", ), paths={ "pga.db": (False, "pga.db"), @@ -111,8 +112,9 @@ class LutrisSource(URLExecutableSource): cache_location = Location( schema_key="lutris-cache-location", candidates=( - "~/.var/app/net.lutris.Lutris/cache/lutris/", + shared.flatpak_dir / "net.lutris.Lutris" / "cache" / "lutris", shared.cache_dir / "lutris", + shared.home / ".cache" / "lutris", ), paths={ "coverart": (True, "coverart"), diff --git a/src/importer/sources/steam_source.py b/src/importer/sources/steam_source.py index 13d99a7..ff60d86 100644 --- a/src/importer/sources/steam_source.py +++ b/src/importer/sources/steam_source.py @@ -111,16 +111,16 @@ class SteamSourceIterator(SourceIterator): class SteamSource(URLExecutableSource): name = "Steam" - available_on = set(("linux", "win32")) + available_on = {"linux", "win32"} iterator_class = SteamSourceIterator url_format = "steam://rungameid/{game_id}" data_location = Location( schema_key="steam-location", candidates=( - "~/.var/app/com.valvesoftware.Steam/data/Steam/", + shared.flatpak_dir / "com.valvesoftware.Steam" / "data" / "Steam", shared.data_dir / "Steam", - "~/.steam", + shared.home / ".steam", shared.programfiles32_dir / "Steam", ), paths={ diff --git a/src/shared.py.in b/src/shared.py.in index 3be3fef..bfa882c 100644 --- a/src/shared.py.in +++ b/src/shared.py.in @@ -20,7 +20,7 @@ import os from pathlib import Path -from gi.repository import Gdk, Gio +from gi.repository import Gdk, Gio, GLib APP_ID = "@APP_ID@" VERSION = "@VERSION@" @@ -31,21 +31,11 @@ SPEC_VERSION = 1.5 # The version of the game_id.json spec schema = Gio.Settings.new(APP_ID) state_schema = Gio.Settings.new(APP_ID + ".State") -data_dir = ( - Path(os.getenv("XDG_DATA_HOME")) - if "XDG_DATA_HOME" in os.environ - else Path.home() / ".local" / "share" -) -config_dir = ( - Path(os.getenv("XDG_CONFIG_HOME")) - if "XDG_CONFIG_HOME" in os.environ - else Path.home() / ".config" -) -cache_dir = ( - Path(os.getenv("XDG_CACHE_HOME")) - if "XDG_CACHE_HOME" in os.environ - else Path.home() / ".cache" -) +home = Path.home() +data_dir = Path(GLib.get_user_data_dir()) +config_dir = Path(GLib.get_user_config_dir()) +cache_dir = Path(GLib.get_user_config_dir()) +flatpak_dir = home / ".var" / "app" games_dir = data_dir / "cartridges" / "games" covers_dir = data_dir / "cartridges" / "covers"