| .gitignore | ||
| config.example.json | ||
| installer.sh | ||
| PKGBUILD | ||
| README.md | ||
| wrapper.py | ||
| xivlauncher-wrapper.desktop | ||
| xivlauncher-wrapper.png | ||
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.inisettings if they are incorrect. - Performance Optimization: Automatically detects and integrates with
gamemoderunorgame-performanceto 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).
- Run the Installer:
./installer.sh - 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
.desktopfile 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:
1. XLM Pre-Launch Script (Recommended for Steam Deck)
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
- Switch to Desktop Mode and open Steam.
- "Games" -> "Add a Non-Steam Game to My Library".
- Select "XIVLauncher Wrapper" from the list.
Manual Setup
-
Configure:
mkdir -p ~/.config/xivlauncher-wrapper cp config.example.json ~/.config/xivlauncher-wrapper/config.json nano ~/.config/xivlauncher-wrapper/config.jsonsecret: Enter your TOTP secret key orotpauth://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 totrueto launch using a game performance wrapper.gamemode_cmd: (Optional) The specific game performance utility to use (e.g.,"gamemoderun"or"game-performance").
-
Make Executable:
chmod +x wrapper.py -
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