Installer hearthstone-native-hearthstone-l

files:
- sha256sums: https://github.com/DawnMagnet/hearthstone-linux-gui/releases/latest/download/SHA256SUMS.txt
game:
  exe: start-launcher.sh
  launch_configs:
  - args: --launch
    exe: $GAMEDIR/start-launcher.sh
    name: Play directly (skip the launcher window)
    working_dir: $GAMEDIR
  working_dir: $GAMEDIR
install_complete_text: 'The Hearthstone Linux Launcher is installed.

  Start it, then click Install / Update, Login and Play.

  Before every start it updates itself to the newest release from GitHub.

  The in-game shop does not work in the native Linux version; purchases are not possible
  there.

  The game data is kept outside the Lutris game folder, by default in ~/.local/share/hearthstone-linux-gui.'
installer:
- move:
    dst: $GAMEDIR
    src: sha256sums
- write_file:
    content: "#!/bin/sh\n# Updates hearthstone-linux-gui.AppImage next to this script\
      \ to the\n# newest GitHub release. The download is checked against the release's\n\
      # SHA256SUMS.txt, and only a complete, verified file replaces the\n# installed\
      \ AppImage. Without network access the installed one is kept.\n# Exits non-zero\
      \ only when no usable AppImage is left.\ncd \"$(dirname \"$0\")\" || exit 1\n\
      api=https://api.github.com/repos/DawnMagnet/hearthstone-linux-gui/releases/latest\n\
      target=hearthstone-linux-gui.AppImage\nstamp=.launcher-release\n\nrelease=$(curl\
      \ -fsSL --connect-timeout 5 --max-time 15 \"$api\") || release=\ntag=$(printf\
      \ '%s\\n' \"$release\" | sed -n 's/^ *\"tag_name\": *\"\\([^\"]*\\)\".*/\\1/p'\
      \ | head -n 1)\nif [ -z \"$tag\" ]; then\n  echo \"GitHub is not reachable;\
      \ keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\n\
      if [ -x \"$target\" ] && [ \"$(cat \"$stamp\" 2>/dev/null)\" = \"$tag\" ]; then\n\
      \  exit 0\nfi\n\nurl=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"browser_download_url\"\
      : *\"\\([^\"]*-x86_64\\.AppImage\\)\".*/\\1/p' | head -n 1)\nsums=$(printf '%s\\\
      n' \"$release\" | sed -n 's/^ *\"browser_download_url\": *\"\\([^\"]*\\/SHA256SUMS\\\
      .txt\\)\".*/\\1/p' | head -n 1)\nif [ -z \"$url\" ] || [ -z \"$sums\" ]; then\n\
      \  echo \"Release $tag has no AppImage or SHA256SUMS.txt; keeping the installed\
      \ launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\nname=$(basename \"$url\"\
      )\nexpected=$(curl -fsSL --connect-timeout 5 --max-time 30 \"$sums\" | awk -v\
      \ f=\"$name\" '$2 == f || $2 == \"*\" f { print $1; exit }')\n\ntmp=$(mktemp\
      \ ./.download.XXXXXX) || exit 1\ntrap 'rm -f \"$tmp\"' EXIT\necho \"Downloading\
      \ hearthstone-linux-gui $tag ...\"\nif [ -n \"$expected\" ] &&\n  curl -fL --connect-timeout\
      \ 10 --retry 2 -o \"$tmp\" \"$url\" &&\n  [ \"$(sha256sum \"$tmp\" | cut -d\
      \ ' ' -f 1)\" = \"$expected\" ] &&\n  chmod 755 \"$tmp\" && mv -f \"$tmp\" \"\
      $target\"; then\n  printf '%s\\n' \"$tag\" > \"$stamp\"\n  echo \"Installed\
      \ hearthstone-linux-gui $tag.\"\nelse\n  echo \"Download or checksum check of\
      \ $tag failed; keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n\
      fi\n"
    file: $GAMEDIR/update-launcher.sh
- write_file:
    content: "#!/bin/sh\n# Starts the Hearthstone Linux Launcher from Lutris after\
      \ updating it to\n# the newest release.\n# Without arguments the launcher starts\
      \ detached: Lutris stops watching\n# once this script exits, because the launcher\
      \ processes are excluded\n# from its process monitoring, and without LUTRIS_GAME_UUID\
      \ Lutris does\n# not close the launcher as a leftover game process either.\n\
      # With --launch the launcher starts the game and exits; Lutris keeps\n# tracking\
      \ the game until it quits.\ncd \"$(dirname \"$0\")\" || exit 1\n./update-launcher.sh\
      \ || exit 1\nif [ \"$1\" = --launch ]; then\n  ./hearthstone-linux-gui.AppImage\
      \ \"$@\"\n  exit\nfi\nenv -u LUTRIS_GAME_UUID ./hearthstone-linux-gui.AppImage\
      \ \"$@\" >/dev/null 2>&1 &\nsleep 3\n"
    file: $GAMEDIR/start-launcher.sh
- chmodx: $GAMEDIR/update-launcher.sh
- chmodx: $GAMEDIR/start-launcher.sh
- execute:
    description: Downloading the newest Hearthstone Linux Launcher from GitHub...
    disable_runtime: true
    file: $GAMEDIR/update-launcher.sh
require-binaries: curl, sha256sum
system:
  disable_runtime: true
  exclude_processes: hearthstone-linux-gui
  gamemode: false
description: Native Linux client through the open-source Hearthstone Linux Launcher
  (hearthstone-linux-gui). No Wine and no Battle.net app. The in-game shop does not
  work in this version.
game_slug: hearthstone
gogslug: ''
humblestoreid: ''
installer_slug: hearthstone-native-hearthstone-l
name: Hearthstone
notes: "- Unofficial community project, not affiliated with Blizzard Entertainment.\
  \ Use at your own risk.\r\n- After the installer finishes, start the game: the launcher\
  \ window opens. Click Install / Update (downloads the official game data, several\
  \ GB), then Login (Battle.net in your browser), then Play.\r\n- Game data, login\
  \ token and settings are stored by the launcher in ~/.local/share/hearthstone-linux-gui,\
  \ ~/.config/hearthstone-linux-gui and ~/.cache/hearthstone-linux-gui. Removing the\
  \ game in Lutris does not delete them; use Uninstall in the launcher first.\r\n\
  - The installer always uses the newest launcher release from GitHub: it is downloaded\
  \ during installation and updated before every start, checked against the release's\
  \ SHA-256 sums. Without network access the installed version is started.\r\n- Requires\
  \ x86_64, curl, sha256sum and FUSE for AppImages (the release notes of the launcher\
  \ list the minimum glibc). Without FUSE, add APPIMAGE_EXTRACT_AND_RUN=1 to the environment\
  \ variables in the game's system options.\r\n- The in-game shop does not work in\
  \ the native Linux version: it is locked and purchases are not possible.\r\n- The\
  \ launcher is started detached: Lutris shows the game as stopped after a few seconds\
  \ while the launcher window stays open. The \"Play directly\" option starts the\
  \ game without the launcher window, and Lutris tracks it until it exits."
runner: linux
script:
  files:
  - sha256sums: https://github.com/DawnMagnet/hearthstone-linux-gui/releases/latest/download/SHA256SUMS.txt
  game:
    exe: start-launcher.sh
    launch_configs:
    - args: --launch
      exe: $GAMEDIR/start-launcher.sh
      name: Play directly (skip the launcher window)
      working_dir: $GAMEDIR
    working_dir: $GAMEDIR
  install_complete_text: 'The Hearthstone Linux Launcher is installed.

    Start it, then click Install / Update, Login and Play.

    Before every start it updates itself to the newest release from GitHub.

    The in-game shop does not work in the native Linux version; purchases are not
    possible there.

    The game data is kept outside the Lutris game folder, by default in ~/.local/share/hearthstone-linux-gui.'
  installer:
  - move:
      dst: $GAMEDIR
      src: sha256sums
  - write_file:
      content: "#!/bin/sh\n# Updates hearthstone-linux-gui.AppImage next to this script\
        \ to the\n# newest GitHub release. The download is checked against the release's\n\
        # SHA256SUMS.txt, and only a complete, verified file replaces the\n# installed\
        \ AppImage. Without network access the installed one is kept.\n# Exits non-zero\
        \ only when no usable AppImage is left.\ncd \"$(dirname \"$0\")\" || exit\
        \ 1\napi=https://api.github.com/repos/DawnMagnet/hearthstone-linux-gui/releases/latest\n\
        target=hearthstone-linux-gui.AppImage\nstamp=.launcher-release\n\nrelease=$(curl\
        \ -fsSL --connect-timeout 5 --max-time 15 \"$api\") || release=\ntag=$(printf\
        \ '%s\\n' \"$release\" | sed -n 's/^ *\"tag_name\": *\"\\([^\"]*\\)\".*/\\\
        1/p' | head -n 1)\nif [ -z \"$tag\" ]; then\n  echo \"GitHub is not reachable;\
        \ keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\n\
        if [ -x \"$target\" ] && [ \"$(cat \"$stamp\" 2>/dev/null)\" = \"$tag\" ];\
        \ then\n  exit 0\nfi\n\nurl=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"\
        browser_download_url\": *\"\\([^\"]*-x86_64\\.AppImage\\)\".*/\\1/p' | head\
        \ -n 1)\nsums=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"browser_download_url\"\
        : *\"\\([^\"]*\\/SHA256SUMS\\.txt\\)\".*/\\1/p' | head -n 1)\nif [ -z \"$url\"\
        \ ] || [ -z \"$sums\" ]; then\n  echo \"Release $tag has no AppImage or SHA256SUMS.txt;\
        \ keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\n\
        name=$(basename \"$url\")\nexpected=$(curl -fsSL --connect-timeout 5 --max-time\
        \ 30 \"$sums\" | awk -v f=\"$name\" '$2 == f || $2 == \"*\" f { print $1;\
        \ exit }')\n\ntmp=$(mktemp ./.download.XXXXXX) || exit 1\ntrap 'rm -f \"$tmp\"\
        ' EXIT\necho \"Downloading hearthstone-linux-gui $tag ...\"\nif [ -n \"$expected\"\
        \ ] &&\n  curl -fL --connect-timeout 10 --retry 2 -o \"$tmp\" \"$url\" &&\n\
        \  [ \"$(sha256sum \"$tmp\" | cut -d ' ' -f 1)\" = \"$expected\" ] &&\n  chmod\
        \ 755 \"$tmp\" && mv -f \"$tmp\" \"$target\"; then\n  printf '%s\\n' \"$tag\"\
        \ > \"$stamp\"\n  echo \"Installed hearthstone-linux-gui $tag.\"\nelse\n \
        \ echo \"Download or checksum check of $tag failed; keeping the installed\
        \ launcher.\" >&2\n  [ -x \"$target\" ]\nfi\n"
      file: $GAMEDIR/update-launcher.sh
  - write_file:
      content: "#!/bin/sh\n# Starts the Hearthstone Linux Launcher from Lutris after\
        \ updating it to\n# the newest release.\n# Without arguments the launcher\
        \ starts detached: Lutris stops watching\n# once this script exits, because\
        \ the launcher processes are excluded\n# from its process monitoring, and\
        \ without LUTRIS_GAME_UUID Lutris does\n# not close the launcher as a leftover\
        \ game process either.\n# With --launch the launcher starts the game and exits;\
        \ Lutris keeps\n# tracking the game until it quits.\ncd \"$(dirname \"$0\"\
        )\" || exit 1\n./update-launcher.sh || exit 1\nif [ \"$1\" = --launch ]; then\n\
        \  ./hearthstone-linux-gui.AppImage \"$@\"\n  exit\nfi\nenv -u LUTRIS_GAME_UUID\
        \ ./hearthstone-linux-gui.AppImage \"$@\" >/dev/null 2>&1 &\nsleep 3\n"
      file: $GAMEDIR/start-launcher.sh
  - chmodx: $GAMEDIR/update-launcher.sh
  - chmodx: $GAMEDIR/start-launcher.sh
  - execute:
      description: Downloading the newest Hearthstone Linux Launcher from GitHub...
      disable_runtime: true
      file: $GAMEDIR/update-launcher.sh
  require-binaries: curl, sha256sum
  system:
    disable_runtime: true
    exclude_processes: hearthstone-linux-gui
    gamemode: false
slug: hearthstone-native-hearthstone-l
steamid: null
version: Native (hearthstone-linux-gui)
year: 2014
{
  "game_slug": "hearthstone",
  "version": "Native (hearthstone-linux-gui)",
  "description": "Native Linux client through the open-source Hearthstone Linux Launcher (hearthstone-linux-gui). No Wine and no Battle.net app. The in-game shop does not work in this version.",
  "notes": "- Unofficial community project, not affiliated with Blizzard Entertainment. Use at your own risk.\r\n- After the installer finishes, start the game: the launcher window opens. Click Install / Update (downloads the official game data, several GB), then Login (Battle.net in your browser), then Play.\r\n- Game data, login token and settings are stored by the launcher in ~/.local/share/hearthstone-linux-gui, ~/.config/hearthstone-linux-gui and ~/.cache/hearthstone-linux-gui. Removing the game in Lutris does not delete them; use Uninstall in the launcher first.\r\n- The installer always uses the newest launcher release from GitHub: it is downloaded during installation and updated before every start, checked against the release's SHA-256 sums. Without network access the installed version is started.\r\n- Requires x86_64, curl, sha256sum and FUSE for AppImages (the release notes of the launcher list the minimum glibc). Without FUSE, add APPIMAGE_EXTRACT_AND_RUN=1 to the environment variables in the game's system options.\r\n- The in-game shop does not work in the native Linux version: it is locked and purchases are not possible.\r\n- The launcher is started detached: Lutris shows the game as stopped after a few seconds while the launcher window stays open. The \"Play directly\" option starts the game without the launcher window, and Lutris tracks it until it exits.",
  "name": "Hearthstone",
  "year": 2014,
  "steamid": null,
  "gogslug": "",
  "humblestoreid": "",
  "runner": "linux",
  "slug": "hearthstone-native-hearthstone-l",
  "installer_slug": "hearthstone-native-hearthstone-l",
  "script": {
    "files": [
      {
        "sha256sums": "https://github.com/DawnMagnet/hearthstone-linux-gui/releases/latest/download/SHA256SUMS.txt"
      }
    ],
    "game": {
      "exe": "start-launcher.sh",
      "launch_configs": [
        {
          "args": "--launch",
          "exe": "$GAMEDIR/start-launcher.sh",
          "name": "Play directly (skip the launcher window)",
          "working_dir": "$GAMEDIR"
        }
      ],
      "working_dir": "$GAMEDIR"
    },
    "install_complete_text": "The Hearthstone Linux Launcher is installed.\nStart it, then click Install / Update, Login and Play.\nBefore every start it updates itself to the newest release from GitHub.\nThe in-game shop does not work in the native Linux version; purchases are not possible there.\nThe game data is kept outside the Lutris game folder, by default in ~/.local/share/hearthstone-linux-gui.",
    "installer": [
      {
        "move": {
          "dst": "$GAMEDIR",
          "src": "sha256sums"
        }
      },
      {
        "write_file": {
          "content": "#!/bin/sh\n# Updates hearthstone-linux-gui.AppImage next to this script to the\n# newest GitHub release. The download is checked against the release's\n# SHA256SUMS.txt, and only a complete, verified file replaces the\n# installed AppImage. Without network access the installed one is kept.\n# Exits non-zero only when no usable AppImage is left.\ncd \"$(dirname \"$0\")\" || exit 1\napi=https://api.github.com/repos/DawnMagnet/hearthstone-linux-gui/releases/latest\ntarget=hearthstone-linux-gui.AppImage\nstamp=.launcher-release\n\nrelease=$(curl -fsSL --connect-timeout 5 --max-time 15 \"$api\") || release=\ntag=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"tag_name\": *\"\\([^\"]*\\)\".*/\\1/p' | head -n 1)\nif [ -z \"$tag\" ]; then\n  echo \"GitHub is not reachable; keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\nif [ -x \"$target\" ] && [ \"$(cat \"$stamp\" 2>/dev/null)\" = \"$tag\" ]; then\n  exit 0\nfi\n\nurl=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"browser_download_url\": *\"\\([^\"]*-x86_64\\.AppImage\\)\".*/\\1/p' | head -n 1)\nsums=$(printf '%s\\n' \"$release\" | sed -n 's/^ *\"browser_download_url\": *\"\\([^\"]*\\/SHA256SUMS\\.txt\\)\".*/\\1/p' | head -n 1)\nif [ -z \"$url\" ] || [ -z \"$sums\" ]; then\n  echo \"Release $tag has no AppImage or SHA256SUMS.txt; keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\n  exit\nfi\nname=$(basename \"$url\")\nexpected=$(curl -fsSL --connect-timeout 5 --max-time 30 \"$sums\" | awk -v f=\"$name\" '$2 == f || $2 == \"*\" f { print $1; exit }')\n\ntmp=$(mktemp ./.download.XXXXXX) || exit 1\ntrap 'rm -f \"$tmp\"' EXIT\necho \"Downloading hearthstone-linux-gui $tag ...\"\nif [ -n \"$expected\" ] &&\n  curl -fL --connect-timeout 10 --retry 2 -o \"$tmp\" \"$url\" &&\n  [ \"$(sha256sum \"$tmp\" | cut -d ' ' -f 1)\" = \"$expected\" ] &&\n  chmod 755 \"$tmp\" && mv -f \"$tmp\" \"$target\"; then\n  printf '%s\\n' \"$tag\" > \"$stamp\"\n  echo \"Installed hearthstone-linux-gui $tag.\"\nelse\n  echo \"Download or checksum check of $tag failed; keeping the installed launcher.\" >&2\n  [ -x \"$target\" ]\nfi\n",
          "file": "$GAMEDIR/update-launcher.sh"
        }
      },
      {
        "write_file": {
          "content": "#!/bin/sh\n# Starts the Hearthstone Linux Launcher from Lutris after updating it to\n# the newest release.\n# Without arguments the launcher starts detached: Lutris stops watching\n# once this script exits, because the launcher processes are excluded\n# from its process monitoring, and without LUTRIS_GAME_UUID Lutris does\n# not close the launcher as a leftover game process either.\n# With --launch the launcher starts the game and exits; Lutris keeps\n# tracking the game until it quits.\ncd \"$(dirname \"$0\")\" || exit 1\n./update-launcher.sh || exit 1\nif [ \"$1\" = --launch ]; then\n  ./hearthstone-linux-gui.AppImage \"$@\"\n  exit\nfi\nenv -u LUTRIS_GAME_UUID ./hearthstone-linux-gui.AppImage \"$@\" >/dev/null 2>&1 &\nsleep 3\n",
          "file": "$GAMEDIR/start-launcher.sh"
        }
      },
      {
        "chmodx": "$GAMEDIR/update-launcher.sh"
      },
      {
        "chmodx": "$GAMEDIR/start-launcher.sh"
      },
      {
        "execute": {
          "description": "Downloading the newest Hearthstone Linux Launcher from GitHub...",
          "disable_runtime": true,
          "file": "$GAMEDIR/update-launcher.sh"
        }
      }
    ],
    "require-binaries": "curl, sha256sum",
    "system": {
      "disable_runtime": true,
      "exclude_processes": "hearthstone-linux-gui",
      "gamemode": false
    }
  }
}
Back to game