diff --git a/src/importer/sources/bottles_source.py b/src/importer/sources/bottles_source.py index 5b52fe7..c1af459 100644 --- a/src/importer/sources/bottles_source.py +++ b/src/importer/sources/bottles_source.py @@ -91,9 +91,9 @@ class BottlesSource(URLExecutableSource): 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/", - "~/.local/share/bottles", + shared.home / ".local" / "share" / "bottles", ), paths={ "library.yml": (False, "library.yml"), diff --git a/src/importer/sources/heroic_source.py b/src/importer/sources/heroic_source.py index 09e97c0..9048ca8 100644 --- a/src/importer/sources/heroic_source.py +++ b/src/importer/sources/heroic_source.py @@ -142,8 +142,9 @@ class HeroicSource(URLExecutableSource): 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 4863568..841c2e0 100644 --- a/src/importer/sources/itch_source.py +++ b/src/importer/sources/itch_source.py @@ -87,8 +87,9 @@ class ItchSource(URLExecutableSource): 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 199ae04..2882e92 100644 --- a/src/importer/sources/legendary_source.py +++ b/src/importer/sources/legendary_source.py @@ -97,7 +97,10 @@ class LegendarySource(Source): 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 9a1d16d..ad0bc80 100644 --- a/src/importer/sources/lutris_source.py +++ b/src/importer/sources/lutris_source.py @@ -100,9 +100,9 @@ class LutrisSource(URLExecutableSource): 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", - "~/.local/share/lutris", + shared.home / ".local" / "share" / "lutris", ), paths={ "pga.db": (False, "pga.db"), @@ -112,9 +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", - "~/.cache/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 921090d..ff60d86 100644 --- a/src/importer/sources/steam_source.py +++ b/src/importer/sources/steam_source.py @@ -118,9 +118,9 @@ class SteamSource(URLExecutableSource): 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"