id = "lgogdownloader"
name = "LGOGDownloader"
homepage = "https://github.com/Sude-/lgogdownloader"
description = "An open-source GOG.com downloader for Linux users."
executables = ["lgogdownloader"]
platforms = ["macos", "linux"]
[dotfiles]
paths = [
"[configHome]/lgogdownloader/config.cfg",
"[configHome]/lgogdownloader/blacklist.txt",
"[configHome]/lgogdownloader/ignorelist.txt",
"[configHome]/lgogdownloader/transformations.json",
]
exclude = []
secret = [
"[configHome]/lgogdownloader/cookies.txt",
"[configHome]/lgogdownloader/galaxy_tokens.json",
]
[commands]
format = 1
label = "Download GOG games"
description = "Log in to GOG, then download or repair installers for games matching a regular expression, for chosen platforms and languages. Listing, Galaxy, cloud-save and XML options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "man"
kind = "manual"
url = "https://manpages.debian.org/unstable/lgogdownloader/lgogdownloader.1.en.html"
revision = "2026-10"
evidence = """
--login Login
--download Download
--repair Repair downloaded files Use --repair --download to redownload files when filesizes don't match
--game arg Set regular expression filter for download/list/repair (Perl syntax).
--updated List/download only games with update flag set
--directory arg (=.) Set download directory
--limit-rate arg (=0) Limit download rate to value in kB
--platform arg (=w+l) Select which installers are downloaded
Windows = w|win|windows
Mac = m|mac|osx
Linux = l|lin|linux
--language arg (=en) Select which language installers are downloaded
--threads arg (=4) Number of download threads
"""
[[commands.field]]
id = "login"
label = "Log in"
type = "boolean"
option = ["--login"]
sources = ["man"]
[[commands.field]]
id = "download"
label = "Download"
type = "boolean"
option = ["--download"]
sources = ["man"]
[[commands.field]]
id = "repair"
label = "Repair downloaded files"
description = "With --download, re-downloads files whose size does not match; the old file is renamed with .old appended."
type = "boolean"
option = ["--repair"]
effect = "overwrite"
sources = ["man"]
[[commands.field]]
id = "game"
label = "Game filter (regex)"
description = "Perl-syntax regular expression matched against game names."
type = "string"
option = ["--game"]
sources = ["man"]
[[commands.field]]
id = "updated"
label = "Only updated games"
type = "boolean"
option = ["--updated"]
sources = ["man"]
[[commands.field]]
id = "directory"
label = "Download directory"
type = "path"
option = ["--directory"]
path = { kind = "directory", role = "output", must_exist = false }
observed_default = "."
sources = ["man"]
[[commands.field]]
id = "platform"
label = "Platforms"
description = "w = Windows, m = Mac, l = Linux. Separate by comma for priority, plus to combine, e.g. l,w+m."
type = "string"
option = ["--platform"]
suggestions = [{ value = "w+l", label = "Windows and Linux" }, { value = "l", label = "Linux" }, { value = "w", label = "Windows" }, { value = "m", label = "Mac" }, { value = "all", label = "All" }]
observed_default = "w+l"
sources = ["man"]
[[commands.field]]
id = "language"
label = "Languages"
type = "string"
option = ["--language"]
suggestions = [{ value = "en", label = "English" }, { value = "all", label = "All languages" }]
observed_default = "en"
sources = ["man"]
[[commands.field]]
id = "limit_rate"
label = "Rate limit (kB)"
description = "0 means unlimited."
type = "integer"
option = ["--limit-rate"]
sources = ["man"]
[[commands.field]]
id = "threads"
label = "Download threads"
type = "integer"
option = ["--threads"]
observed_default = "4"
sources = ["man"]
[[commands.task]]
id = "login_only"
label = "Log in"
fields = ["login"]
required = ["login"]
set = { login = [true] }
[[commands.task]]
id = "download_games"
label = "Download matching games"
fields = ["download", "game", "directory", "platform", "language", "threads"]
required = ["download"]
set = { download = [true] }
[[commands.task]]
id = "repair_games"
label = "Repair downloads"
fields = ["download", "repair", "game", "directory"]
required = ["download", "repair"]
set = { download = [true], repair = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["login", "download", "game", "directory", "platform", "language"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["repair", "updated", "limit_rate", "threads"]