FlitKey Documentation

FlitKey is a lightweight, open-source Linux and Windows desktop text expander designed to create reusable text snippets and insert them instantly using typed keywords, global hotkeys, or a searchable quick-insert picker.

Technical Specifications

Specification Details
Language / Runtime Python 3.10+
GUI Framework PyQt6
Supported Platforms Linux (X11 & Wayland), Windows 10/11 (64-bit)
Linux System Dependencies python3-pyqt6, xdotool, xinput, x11-xserver-utils
Local Config Storage Linux: ~/.config/flitkey/config.json
Windows: %APPDATA%\flitkey\config.json
License MIT License (Open-Source)

Platform & Session Support Matrix

FlitKey automatically detects your desktop environment (X11 vs Wayland vs Windows) on startup and selects the best expansion mechanism:

Feature X11 Desktop Wayland Desktop Windows 10/11
Typed Keyword Expansion ✓ Full Native ✗ Clipboard fallback only ✓ Full Native
Global Hotkeys ✓ xdotool ✗ Not available ✓ Native Hooks
Search Picker Overlay ✓ Alt+Space ✓ Alt+Space ✓ Alt+Space
System Tray Menu ✓ Native Tray ✓ StatusIcon ✓ Win Tray

Installing on Debian / Ubuntu (.deb)

For Debian, Ubuntu, Linux Mint, and Pop!_OS, install using the pre-built flitkey_0.4.0_all.deb package:

Terminal Command
# 1. Install system dependencies
sudo apt update
sudo apt install -y python3 python3-pyqt6 xdotool xinput x11-xserver-utils

# 2. Download and install FlitKey
sudo dpkg -i flitkey_0.4.0_all.deb
sudo apt-get install -f

# 3. Launch FlitKey
flitkey

Installing on Windows (10/11)

Download FlitKey-Setup-0.4.0-x64.exe and run the setup wizard. IT administrators can execute silent background deployments:

Command Prompt (Silent Installation)
FlitKey-Setup-0.4.0-x64.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART

Running From Source Code

You can clone and run FlitKey directly from source using Python 3.10+:

Bash
git clone https://github.com/swarajnandedkar/FlitKey.git
cd FlitKey
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 run.py

Dynamic Placeholders Reference

Incorporate live variables into your text snippets. FlitKey automatically parses placeholders at the time of expansion:

Placeholder Token Function Description Output Sample
{{date}} Injects current local date (YYYY-MM-DD) 2026-07-24
{{time}} Injects current 24-hour time (HH:MM) 14:30
{{datetime}} Injects ISO date and time timestamp 2026-07-24 14:30
{{clipboard}} Injects current text clipboard contents Clipboard text
$|$ or {{cursor}} Sets final cursor position after expansion Cursor moves to token location

Expansion Packs

Available from v0.5.0. Expansion packs are curated snippet collections bundled with FlitKey, so you can start with a working library instead of an empty one. Six packs ship with the app, totalling 46 snippets.

Pack Snippets Contents Sample Triggers
AI Chatbot & Prompt Engineering 10 Persona setup, code review, bug analysis, and summarisation prompts for ChatGPT, Claude, Gemini, and local LLMs :airole :aixplain :aibug
Developer & Engineering 10 Git workflows, conventional commits, Python and shell scaffolding, shebangs, Markdown, and Docker templates :gcm :glog :pydef
Artist, Designer & Creator 7 Colour palette specs, aspect ratio tables, Midjourney flags, UI handoff notes, asset delivery templates :palette :aspect :midprompt
Everyday Productivity & Symbols 7 Timestamps, verification stamps, emoji shortcodes, fancy bullets, and workflow symbols :stamp :iso :bullets
Customer Support & Sales 6 Canned greetings, bug-gathering forms, ticket resolutions, follow-ups, cold outreach, meeting notes :cshi :csbug :csfollowup
System Admin & DevOps 6 Linux and Windows diagnostics, cURL test templates, Kubernetes status triage :sysinfo :curljson :k8spods

Open the snippet manager, click Expansion Packs, tick one or more packs, and choose Load Selected Packs. Two rules govern what actually gets added:

  • Your triggers win. Packs are merged into your library, never over it. If a pack contains a trigger you already use, your existing snippet is kept and the pack's version is skipped. Loading the same pack twice adds nothing the second time.
  • OS filtering. Each snippet declares a platform (all, linux, or windows). With Filter snippets incompatible with current operating system enabled (the default), snippets for the other OS — PowerShell one-liners on Linux, for instance — are left out. Untick it to load everything regardless.

After loading, FlitKey reports how many new snippets were added. All of them are ordinary snippets from that point on: edit, disable, or delete them like any other.

A pack is a single JSON file. Drop one into the packs folder inside your config directory — ~/.config/flitkey/packs/ on Linux, %APPDATA%\flitkey\packs\ on Windows — and it appears in the dialog alongside the built-in packs. A user pack whose pack_id matches a built-in one replaces it, which is how you customise a shipped pack.

my-pack.json
{
  "pack_id": "my-team",
  "name": "My Team Pack",
  "description": "Shared replies for the support rota.",
  "version": "1.0.0",
  "snippets": [
    {
      "label": "Git: Commit Message",
      "trigger_type": "keyword",
      "keyword": ":gcm",
      "expansion_text": "git commit -m \"{{clipboard}}\"",
      "platform": "all"
    }
  ]
}

Each snippet needs a label, an expansion_text, and either a keyword or a hotkey; entries missing any of those are skipped. trigger_type is keyword or hotkey, platform defaults to all, and enabled defaults to true. Expansions support the full placeholder set.

Importing Espanso & AutoHotkey Libraries

Migrate your existing snippet collection into FlitKey using the built-in configuration converter, available from the Import button in the snippet manager or on the command line:

Import Command Syntax
# Import Espanso match YAML file
python3 -m text_expander.importers --espanso ~/.config/espanso/match/base.yml

# Import AutoHotkey script file
python3 -m text_expander.importers --ahk ~/my_hotkeys.ahk

# Import CSV snippet library
python3 -m text_expander.importers --csv ~/snippets.csv

Troubleshooting & FAQs

Why aren't triggers expanding on Linux Wayland?

On Wayland sessions, security restrictions prevent background global key injection. Ensure FlitKey is running with clipboard mode enabled, or use the Alt+Space search picker overlay.

Where is my snippet configuration file stored?

All snippets are stored in plain JSON format at ~/.config/flitkey/config.json on Linux and %APPDATA%\flitkey\config.json on Windows.

Does FlitKey send any data to external servers?

No. FlitKey is 100% offline and open-source. It contains zero network dependencies, telemetry trackers, or phone-home code.