Skip to content

mdmatthias/Gameyfin-Desktop

Repository files navigation

🖥️ Gameyfin Desktop

A dedicated desktop client for Gameyfin that wraps the web interface in a standalone application for a more integrated experience.


✨ Features

  • 🖥️ Dedicated Desktop Application: Runs Gameyfin in its own window, separate from your web browser.
  • 🔑 Persistent SSO Login: Supports persistent logins with SSO providers. The application saves your session data, so you only have to log in once. (Note: This requires the "remember me" feature to be enabled in your SSO provider's settings.)
  • ⚙️ System Tray Integration: Includes an icon in the system tray for quickly showing, hiding, or quitting the application.
  • 📥 Download Manager:
    • Manages all file downloads in a persistent "Downloads" tab.
    • Shows progress, speed, and a complete download history.
  • 💽 Installer (Linux):
    • Prompts for per-install environment configuration (Wayland, GameID, Store, etc.).
    • Extracts the archive to its own folder.
    • Detects .exe files. If multiple are found, it asks you to choose which one to launch.
    • Automatically lookup the umu-id for proton fixes by codename, folder name or manual search entry.
    • Automatically creates a wineprefix and launches the installer using umu-run.
  • ⤴️ Integrated Shortcut Management (Linux):
    • When a game installation finishes, the app automatically detects any shortcuts created by the installer.
    • You're in Control: A dialog pops up letting you choose exactly which shortcuts (e.g., "Game" "Settings," "Uninstall") you want to add.
    • Dual-Location: Your selected shortcuts are placed on your Desktop and in your system's Application Menu.
    • Just like Windows: This gives you the simple, familiar "Create a desktop shortcut?" experience.

🗓️ Planned Features

  • Protonfixes and Winecfg button: To manually configure your Wineprefix if needed.
  • Windows support
  • Other ideas?: Create a new issue/merge request and I will look into it.

📋 Requirements

Python Packages:

  • Python
  • PyQt6
  • PyQt6-WebEngine
  • dotenv
  • requests

You can install the required packages using one of the methods below.

Pip

pip install -r requirements.txt

Pacman

pacman -Syu python-pyqt6 python-pyqt6-webengine python-dotenv python-requests

External Dependencies (for Installer):

  • umu-launcher: The installer feature on Linux requires umu-launcher to be installed.

Pacman

pacman -Syu umu-launcher

🛠️ Configuration

The application is configured using environment variables. You can either pass them directly via the command line or create a .env file in the same directory as the script (see .env.example).

Environment Variable Description
GF_URL (Required) The URL of your Gameyfin instance, e.g., http://localhost:8080.
GF_SSO_PROVIDER_HOST The host of your SSO provider, e.g., sso.host.com. Required if using SSO.
GF_START_MINIMIZED Set to 1 to start the application minimized to the tray. Useful for autostarting on boot.
GF_ICON_PATH The absolute file path to a custom tray icon, e.g., /path/to/icon.png.
GF_WINDOW_WIDTH Window width.
GF_WINDOW_HEIGHT Window height.

▶️ How to Run

  • Basic command:

    GF_URL=http://192.168.1.100:8080 python gameyfin_qt.py &
    
  • With SSO enabled:

    GF_URL=http://192.168.1.100:8080 GF_SSO_PROVIDER_HOST=sso.host.com python gameyfin_qt.py &
    
  • Using a .env file (Recommended): Create a .env file in the root directory and add your variables there. Then, simply run:

    python gameyfin_qt.py &
    

📝 Notes

Data Persistence

The application saves all browser data (cookies, local storage, cache, etc.) to a profile stored in a .gameyfin-app-data folder within the application's directory. This allows your login session to persist between launches. To clear your session and all stored data, simply delete this folder.

Download Progress

The download progress bar provides an estimation. The total size is calculated based on the uncompressed files within the archive, not the size of the .zip file being downloaded. See this issue for more details.

Installer

Currently only tested with GOG games, but should work with any installer.

🖼️ Screenshots

SSO

Gameyfin

Download manager

Wineprefix config

Unzip

Install