enables auto-OTP on linux
Find a file
2026-04-18 15:54:36 +02:00
.gitignore added PKGBUILD and updated config location 2026-01-10 01:33:26 +01:00
config.example.json add support for XLM pre-launch script integration and non-interactive configuration modes 2026-04-18 15:23:24 +02:00
installer.sh add interactive prompt to optionally skip XIVLauncher installation during setup 2026-04-18 15:42:49 +02:00
PKGBUILD feat: add xivlauncher optdepend and implement multi-provider fallback logic for OTP dialogs 2026-04-18 15:34:45 +02:00
README.md add support for XLM pre-launch script integration and non-interactive configuration modes 2026-04-18 15:23:24 +02:00
wrapper.py feat: disable keyring in Steam environments and allow prelaunch to continue if OTP is missing 2026-04-18 15:54:36 +02:00
xivlauncher-wrapper.desktop added PKGBUILD and updated config location 2026-01-10 01:33:26 +01:00
xivlauncher-wrapper.png added PKGBUILD and updated config location 2026-01-10 01:33:26 +01:00

XIVLauncher OTP Wrapper

This is a wrapper script for Linux that launches xivlauncher-core (Native or Flatpak) and automatically injects your One-Time Password (OTP) when the launcher requests it.

Features

  • Auto-Installation: Automatically downloads and installs XIVLauncher if it's missing (using Flatpak or AUR depending on your OS).
  • Auto-Detection: Automatically detects if you are using the native xivlauncher-core (Arch/AUR) or the Flatpak version.
  • OTP Injection: Generates TOTP codes and sends them to the launcher's internal server.
  • URL Support: Accepts standard Base32 secrets OR full otpauth:// URLs (e.g. from QR codes).
  • Auto-Configuration: Prompts to fix launcher.ini settings if they are incorrect.
  • Performance Optimization: Automatically detects and integrates with gamemoderun or game-performance to optimize your game instance.
  • XLM Pre-Launch Support: Seamlessly integrates as a pre-launch script for the Steam Compatibility Tool XLM.
  • Steam %command% Wrapper: Can wrap arbitrary launch arguments natively in Steam launch options.

Installation (Steam Deck / Linux Desktop)

The easiest way to install is using the provided installer script. This script will check if XIVLauncher is installed and install it for you if needed (via Flatpak on SteamOS/Bazzite, or AUR on Arch).

  1. Run the Installer:
    ./installer.sh
    
  2. Enter Secret: When prompted, enter your TOTP Secret or paste a full otpauth:// URL.

What it does:

  • Checks for XIVLauncher: Installs it via Flatpak or AUR if not found.
  • Creates Config: Creates ~/.config/xivlauncher-wrapper/config.json.
  • Installs Wrapper: Installs the wrapper to ~/.local/bin/xivlauncher-wrapper.
  • Installs Shortcut: Installs a .desktop file to ~/.local/share/applications/ so it appears in your application menu.
  • XLM Setup: Asks to install itself as an XLM pre-launch script by default.

Steam Integration Methods

You can use the wrapper with Steam in three different ways:

If you use XLM (XIVLauncher Manager) as a Steam Compatibility Tool for FFXIV, the installer can automatically set up the wrapper to run right before the game launches. If you skip this during installation, you can manually symlink the wrapper into your XLM directory:

mkdir -p ~/.local/share/Steam/compatibilitytools.d/XLCore/prelaunch.d
ln -sf ~/.local/bin/xivlauncher-wrapper ~/.local/share/Steam/compatibilitytools.d/XLCore/prelaunch.d/xivlauncher-wrapper

(The script automatically detects it is in a prelaunch.d directory and runs in --prelaunch background mode).

2. Steam Launch Options Wrap

If you want to use it directly in the Steam properties of FFXIV without XLM, you can set your launch options to:

xivlauncher-wrapper %command%

3. Standalone Non-Steam Game

  1. Switch to Desktop Mode and open Steam.
  2. "Games" -> "Add a Non-Steam Game to My Library".
  3. Select "XIVLauncher Wrapper" from the list.

Manual Setup

  1. Configure:

    mkdir -p ~/.config/xivlauncher-wrapper
    cp config.example.json ~/.config/xivlauncher-wrapper/config.json
    nano ~/.config/xivlauncher-wrapper/config.json
    
    • secret: Enter your TOTP secret key or otpauth:// URL (optional, defaults to secure system keyring).
    • launcher_cmd: (Optional) The command to launch XIVLauncher. If omitted, the wrapper will auto-detect it.
    • use_gamemode: (Optional) Set to true to launch using a game performance wrapper.
    • gamemode_cmd: (Optional) The specific game performance utility to use (e.g., "gamemoderun" or "game-performance").
  2. Make Executable:

    chmod +x wrapper.py
    
  3. XIVLauncher Settings: Ensure that "Enable XL Authenticator app/OTP macro support" is enabled in XIVLauncher settings. The wrapper will check for this and prompt you if it's disabled.

Usage

Simply run the wrapper:

./wrapper.py

Advanced CLI options:

  • --prelaunch: Spawns the OTP injector in the background and exits immediately. Useful for custom wrapper scripts.
  • Wrapping a specific command: ./wrapper.py flatpak run dev.goats.xivlauncher