quiver-launcher README

The project's README from github.com/tgeorgiadis/quiver-launcher. As one markdown file: README.md.

Quiver Launcher

.NET 10 License Windows Linux Android

Join the community on Discord Support the project on Ko-fi

About - Quiver Launcher is a fork of GithubLauncher, extended with the features I wanted: tag filters, library management with App Catalog, mod management support, UI improvements and more. It was rebranded from GithubLauncher to avoid using the GitHub trademark.

Quiver Launcher Screenshot

A modern launcher for downloading, installing, and running apps from GitHub and GitLab releases. With a personal library, community catalog subscriptions, and flexible filtering.

Features

Getting Started

Installation

Note if you are upgrading from 2.4.x or older: the in-app update cannot migrate Quiver Launcher 2.4.x onto version 3.0 or higher. Download a fresh 3.x version of Quiver Launcher and copy your library over. See MIGRATING.md.

Windows

  1. Download QuiverLauncher-win-Portable.zip from Releases
  2. Extract it
  3. Run QuiverLauncher.exe from the extracted folder

Your library stays in that same folder (apps.json, settings.json, Apps/, Cache/ next to current/), so you can move the whole directory wherever you want.

QuiverLauncher/
├── QuiverLauncher.exe          # launcher stub
├── current/            # app binaries (replaced on update)
├── apps.json
├── settings.json
├── Apps/
└── Cache/

To verify a signed QuiverLauncher.exe: right-click → Properties → Digital Signatures, or Get-AuthenticodeSignature .\QuiverLauncher.exe in PowerShell.

Linux

  1. Download QuiverLauncher-linux-x64.AppImage or QuiverLauncher-linux-arm64.AppImage from Releases
  2. Put the AppImage in its own folder (it creates library files beside itself), mark it executable, then run it:
    mkdir -p ~/QuiverLauncher
    mv QuiverLauncher*.AppImage ~/QuiverLauncher/
    cd ~/QuiverLauncher
    chmod +x QuiverLauncher*.AppImage
    ./QuiverLauncher*.AppImage
    
    Or right-click → Properties → Permissions → Allow executing file as a program.
    GitHub downloads do not keep the executable bit; you need to set it locally after download.

Library data (apps.json, settings.json, Apps/, Cache/) is stored beside the AppImage so you can move that folder together. If the AppImage’s directory is not writable (e.g. /usr/local/bin), Quiver Launcher falls back to ~/.local/share/QuiverLauncher/ (or $XDG_DATA_HOME/QuiverLauncher).

MyFolder/
├── QuiverLauncher-linux-x64.AppImage
├── apps.json
├── settings.json
├── Apps/
└── Cache/

macOS

Currently macOS support is a work in progress.

  1. Download the macOS package from Releases
  2. Keep QuiverLauncher.app in a writable folder (not only /Applications if you want portable data)

Library data lives beside QuiverLauncher.app in that folder. If the parent directory is not writable, Quiver Launcher falls back to ~/Library/Application Support/QuiverLauncher/.

MyFolder/
├── QuiverLauncher.app
├── apps.json
├── settings.json
├── Apps/
└── Cache/

Library data and recovery

Quiver keeps verified library snapshots in Backups/apps/ alongside apps.json on Windows, Linux, macOS, and Android. See library protection and recovery for how to restore a snapshot if the library becomes damaged.

Basic Usage

  1. Launch the application
  2. On first launch, browse the Quiver Community App Catalog lists (internet required) and use Review or View to add apps to your library. You can also add apps later with + Add New Entry, including manually managed apps that have no GitHub/GitLab repository. Your library is stored in local apps.json
  3. Browse your app library in the Library view
  4. Click the Download/Launch button on the app/game you want to use

Catalog lists refresh on startup and via Refresh All Sources. New lists in the community catalog repo appear automatically.

Configuration

GitHub / GitLab API Tokens

To avoid hitting API rate limits, you can provide personal access tokens in Settings → Advanced.

Do not share your tokens.

Mods (Thunderstore & GameBanana)

Apps can expose a Mods browser when mods.path and mods.sources are set in the catalog entry (or via + Add New Entry).

Optional mods.layout:

Value Behavior
(omitted) / flat Extract archive paths as-is into the mods folder (default; typical for Thunderstore .nrm packs).
folderPerMod If the archive has payload files at its root, wrap everything in a folder named from the download filename (e.g. Music-FRLG.zip → mods/Music-FRLG/). Archives that already use a top-level folder are left unchanged.

Use folderPerMod for apps that expect each mod in its own subfolder. Enable it in the catalog JSON or with Install each mod into its own folder when editing an entry.

Source URL formats (one per line in Mod Sources):

Provider Examples
Thunderstore https://thunderstore.io/c/banjo-recompiled/ or slug banjo-recompiled
GameBanana https://gamebanana.com/mods/games/24774, https://gamebanana.com/games/24774, or bare id 24774

GameBanana URLs are detected automatically (no gamebanana| prefix required). Other hosts can still use provider|url.

Browse & search

Remote index URL (the only catalog URL built into Quiver Launcher):

https://raw.githubusercontent.com/tgeorgiadis/quiver-community-app-catalog/main/index.json

List files live under community-app-catalog/ in the community catalog repo. Quiver Launcher discovers them from the index at runtime. Each list file carries its own metadata (name, description, version) plus an apps array.

Community catalog index (v2)

The remote index is a registry of list IDs and fetch URLs only:

{
  "version": 2,
  "lists": [
    {
      "id": "b4e8c2a1-3f5d-4e9b-8c7a-1d2e3f4a5b6c",
      "remoteLocation": "https://raw.githubusercontent.com/tgeorgiadis/quiver-community-app-catalog/main/community-app-catalog/N64-Recomps.json"
    }
  ]
}

Community catalog list file

Each list file defines the list metadata and its apps:

{
  "name": "N64 Recomps",
  "description": "N64 recompilation ports",
  "version": "1.0.3",
  "apps": [
    {
      "name": "Example App",
      "repository": "username/example-app-repo",
      "folderName": "ExampleApp",
      "appIconUrl": null
    }
  ]
}

Quiver Launcher reads name, description, and version from the list file when a source is fetched or refreshed.

Use App Catalog anytime to review community entries and add the ones you want to your library. Installed app files on disk are never deleted automatically when you remove catalog entries or sources.

External catalog sources

You can add more catalogs in App Catalog → Add Source (remote raw GitHub URL or local file path). Each source is reviewed separately; your local apps.json takes priority when the same repository appears in multiple places.

When a subscribed list changes remotely, Quiver Launcher detects the diff on startup or when you click Refresh All Sources, then shows Review changes with per-app actions (Add, Replace, Merge, Ignore, Hide). Use Not in library to browse catalog apps you haven't added yet (including ignored ones). When every review item is synced or resolved, the catalog version is marked reviewed automatically. Use Skip & mark reviewed only to dismiss remaining items without syncing them.

Merge applies catalog metadata (name, icon, files, mods, and catalog tags) while keeping extra local tags and version pins (preferredVersion). Replace applies the same catalog fields but drops extra local tags. Neither overwrites preferredVersion unless the app is promoted, demoted, or retargeted to a different repository. Extra local tags and version pins do not keep an app in a "Changed" state.

See the Quiver Community App Catalog repo for sample list format and the canonical community catalog.

App Entry Properties

Each app entry requires the following properties:

Catalog list JSON may also include review-chip hints (only shown when present on apps):

Example Configuration

{
    "name": "Nintendo 64",
    "preferredTagFilters": ["recomp", "decomp", "recreation", "ai"],
    "hiddenTagFilters": ["n64", "nintendo"],
    "featuredTags": ["recomp", "decomp", "recreation", "ai"],
    "apps": [
        {
            "name": "Majora's Mask",
            "project": "2 Ship 2 Harkinian",
            "repository": "HarbourMasters/2ship2harkinian",
            "folderName": "MajorasMask-2Ship2Harkinian",
            "tags": ["n64", "decomp", "harbour-masters"],
            "appIconUrl": null
        },
        {
            "name": "Example App",
            "repository": "username/example-app-repo",
            "folderName": "ExampleApp",
            "appIconUrl": null
        },
        {
            "name": "GitLab Example App",
            "repository": "namespace/example-project",
            "repositorySource": "gitlab",
            "folderName": "GitLabExampleApp",
            "appIconUrl": null
        },
        {
            "name": "Manually Managed Example",
            "project": "Itch drop",
            "folderName": "ManualExample",
            "tags": ["manual"],
            "appIconUrl": null
        }
    ]
}

Support

If you encounter any issues or have questions:

For Developers: Local Development

When building and running from source, Quiver Launcher is not a packaged release install, so self-update checks no-op (and Debug builds always skip automatic checks). Set QuiverLauncher_SKIP_UPDATES=1 (or true) to skip automatic checks in Release local runs as well.

# Debug: no env var needed
dotnet run --project QuiverLauncher.Desktop/QuiverLauncher.Desktop.csproj -c Debug

# Release local testing
$env:QuiverLauncher_SKIP_UPDATES = "1"
dotnet run --project QuiverLauncher.Desktop/QuiverLauncher.Desktop.csproj -c Release

Requires the .NET 10 SDK.

Android

Android uses a separate head project (QuiverLauncher.Android) that installs and launches APK release assets. Desktop binaries (.exe, AppImage, Wine/Proton) are not supported on device.

  1. Install the .NET 10 SDK and the Android workload:
    dotnet workload install android
    
  2. Install the Android SDK and JDK 11+ (Avalonia Android setup).
  3. Allow Install unknown apps for Quiver on the emulator or device.
  4. Build and deploy:
    dotnet build QuiverLauncher.Android/QuiverLauncher.Android.csproj -c Debug
    

Games without an Android .apk asset stay in the catalog as “no Android build” rather than a failed download.

User data for unpackaged Windows debug builds still lives beside the build output. Unpackaged macOS/Linux runs (no AppImage / .app package) use the OS app-support fallbacks (~/Library/Application Support/QuiverLauncher/ or ~/.local/share/QuiverLauncher/).

Automated tests

Fast local run (excludes the slow publish integration test; finishes in seconds):

dotnet test QuiverLauncher.sln -c Release --filter "Category!=Slow" --logger "console;verbosity=normal"

Full suite including publish integration test (matches CI; the publish test can take several minutes):

dotnet test QuiverLauncher.sln -c Release

Run only the slow publish packaging test:

dotnet test QuiverLauncher.sln -c Release --filter "Category=Slow"

Test categories include catalog merge and sync, settings store round-trip, launcher version helpers, Windows runner command building, download asset selection, game status checks, ViewModel sorting/catalog helpers, GameManager hide/filter behavior, and Avalonia headless smoke tests.

Collect coverage locally with:

dotnet test QuiverLauncher.sln -c Release --filter "Category!=Slow" --collect:"XPlat Code Coverage"

quiver-launcher (tgeorgiadis/quiver-launcher)

Searching Database…

这是什么?Quiver Launcher 是一款桌面应用,用来从 GitHub 和 GitLab 的发布里下载、安装和运行应用与游戏,配有个人库和社区应用目录,还支持 mod 管理。
它是 CLI 工具,还是我桌面上运行的图形应用?它是一款图形化桌面应用(用 .NET/Avalonia 构建),以 Windows 便携版 zip、Linux AppImage 和 macOS 安装包的形式发布,另有单独的 Android 版本。
怎么在我电脑上跑起来?Windows 上从 Releases 下载并解压 QuiverLauncher-win-Portable.zip,运行其中的 exe。Linux 上下载 AppImage,赋予可执行权限后运行。macOS 也有安装包,但支持仍在完善中。
用它需要 GitHub 或 GitLab 的账号或令牌吗?基本使用不需要账号;公开的 gitlab.com 发布不用令牌就能用。可以在设置里添加可选的个人访问令牌,避免撞上 GitHub/GitLab 的 API 速率限制。
macOS 支持完全就绪了吗?还没有——macOS 支持被明确标注为开发中,目前 Windows 和 Linux 是更完善的平台。
Android 上也能用吗?可以,通过单独的 QuiverLauncher.Android 构建来安装并启动 APK 发布资源;常规的 Windows/Linux/macOS 桌面程序没法在设备上运行。
日常使用需要联网吗?首次启动要联网来浏览和拉取社区应用目录,但应用添加之后,你的库(apps.json)就存在本地,可以离线使用。
mod 管理功能具体能做什么?它为配置了 mods.path/mods.sources 的游戏加一个 Mods 浏览器,让你能从 Thunderstore 和 GameBanana 搜索、安装和更新 mod,处理 GameBanana 的多文件下载,并自动解决 Thunderstore 的依赖提示。
能添加不托管在 GitHub 或 GitLab 上的应用吗?可以,作为手动管理的应用:跳过仓库字段,Quiver 会替你建好应用文件夹,文件由你自己放进去,没有自动下载,也不跟踪更新。
库文件损坏了会怎样?Quiver 会在 apps.json 旁的 Backups/apps/ 里保存经过校验的快照,覆盖 Windows、Linux、macOS 和 Android,你可以恢复到之前正常可用的库。
为什么改叫 Quiver Launcher,而不是 GithubLauncher?它最初是 GithubLauncher 的一个 fork,为了避开 GitHub 商标而改名为 Quiver Launcher,同时在此之上加了标签筛选、目录订阅和 mod 支持。
Size
15.2 MB
Stars
2.4K
Age
4mo
Commits · 90 Days