README.de.md

September 16, 2026 · View on GitHub

Blitztext Linux Banner

Blitztext Linux

Dein lokaler KI-Sprachassistent für Linux-Desktops unter Wayland

Webseite

Blitztext Linux CI Lizenz: MIT Plattform

🇬🇧 English | 🇩🇪 Deutsch

Sprache per Hotkey aufnehmen, lokal oder online transkribieren, optional per LLM umschreiben und direkt in die aktive Anwendung einfügen.

🔗 Webseite: timintech.github.io/blitztextweb

Demo: Hotkey drücken, sprechen, und Blitztext fügt den transkribierten Text direkt in die aktive Anwendung ein
Alt gedrückt halten (Standard-Hotkey), sprechen, loslassen — das Transkript landet direkt in der aktiven Anwendung.

Important

Eigenständiger Linux-Port: Dieses Repository enthält ausschließlich den Linux-Port von Blitztext – eine eigenständige Python 3/PyQt6-Implementierung, die unter KDE Plasma mit Wayland entwickelt und zusätzlich nativ unter Ubuntu 26.04 GNOME mit Wayland verifiziert wurde. Für die originale macOS-Version besuche bitte das offizielle Haupt-Repository.


Zweck

Blitztext Linux ist ein Hotkey-gesteuerter Sprachassistent, der gesprochene Sprache in Text umwandelt und direkt in die gerade aktive Anwendung einfügt. Die Transkription läuft standardmäßig lokal über Whisper; ein LLM-Schritt ist optional und wird nur genutzt, wenn du bewusst einen der KI-Workflows (Umformulierung, Ton-Filter, Emoji-Anreicherung) oder das Compose-Fenster auswählst. Alles bleibt auf deinem Rechner, solange du nicht bewusst einen Cloud-Anbieter (OpenAI, OpenRouter oder einen eigenen OpenAI-kompatiblen Endpunkt) für LLM- oder Cloud-TTS-Funktionen aktivierst.


Features

  • Mehrsprachige Oberfläche (EN/DE): Schalte die App-Oberfläche zwischen Deutsch und Englisch um – unter Einstellungen → Allgemein → „Sprache der Oberfläche" (die Änderung greift nach einem Neustart der App).
  • Compose-Fenster: Text eintippen, einfügen oder hineindiktieren, eine Text-Aktion wählen und von der KI umschreiben lassen — ganz ohne Mikrofon. Mit Tonfall-Auswahl, eigener Anweisung samt Prompt-Prüfung, Varianten-Navigation und Signatur-Unterstützung.
  • OpenRouter & eigene LLM-Endpunkte: Nutze OpenRouter oder eine beliebige OpenAI-kompatible API als Alternative zu OpenAI für alle KI-Workflows.
  • Audio-Export: Speichere die Ausgabe der Vorlesefunktion direkt als Audiodatei.
  • Eigennamen / Begriffe: Erweitere das Vokabular der KI um eigene Begriffe, Namen oder Fachwörter für perfekte Transkriptionen.
  • Globale Hotkeys: Jederzeit von überall im System aufnehmen.
  • Auto-Paste: Erkennt Sprache und fügt sie direkt dort ein, wo der Cursor ist.
  • LLM-gestützte Workflows: Lass die KI deine Sätze professionell umformulieren, emotional filtern oder mit passenden Emojis anreichern.
  • Lokale Verarbeitung: Optional 100% offline für volle Privatsphäre.

Die 5 Workflows und Hotkeys

Blitztext registriert globale Hotkeys via evdev. Mit diesen Kombinationen hast du die volle Kontrolle:

WorkflowHotkeyLLM?Beschreibung
DiktierenAlt (halten)Standard: Nimmt auf, solange die Taste gehalten wird, transkribiert und fügt den Text ein. Sehr kurze Tastendrücke unter 150 ms werden im Halten-Modus als Fehldruck verworfen. Aufnahmetaste und Halten/Umschalten-Modus sind unter Einstellungen → Spracherkennung konfigurierbar.
Diktieren · lokalMeta + Shift + HErzwingt eine reine Offline-Transkription.
Diktieren & verbessernMeta + Shift + TTranskribiert und schreibt das Ergebnis mit der gewählten Text-Aktion um.
Sachlich formulierenMeta + Shift + DEmotionale Entladung: Wandelt Frust in eine sachliche Nachricht um.
Emojis ergänzenMeta + Shift + EErgänzt deine Nachricht passend mit Emojis.

Note

LLM-Workflows (Diktieren & verbessern, Sachlich formulieren, Emojis ergänzen) setzen einen gültigen API-Key voraus. Siehe Secrets weiter unten für die Konfiguration. Ohne diesen Key sind diese Funktionen im Menü und über die Hotkeys deaktiviert bzw. führen zu einer Fehlermeldung.

KI-Workflows

Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstellungen findest du unter Einstellungen → Text & KI:

Einstellungen: Text & KI

Important

Das Feld „API-Key-Umgebung“ ist kein Eingabefeld für den geheimen API-Key. Trage dort nur den Namen der Umgebungsvariable ein, für OpenAI beispielsweise OPENAI_API_KEY und für OpenRouter OPENROUTER_API_KEY. Der tatsächliche Schlüssel wird beim Speichern der Einstellungen weder in config.json noch automatisch in eine andere Datei geschrieben. Lege ihn separat in ~/.config/blitztext-linux/secrets.env ab; ./run.sh und der systemd-User-Service laden diese Datei beim nächsten Start. Eine vollständige Anleitung mit Dateiformat und Berechtigungen steht unter Secrets.

LLM-Anbieter. Blitztext unterstützt drei Anbieter-Modi, wählbar unter Einstellungen → Text & KI → „LLM-Anbieter":

AnbieterWann verwenden
OpenAI (Standard)Standard-OpenAI-API mit gpt-4o-mini oder einem anderen Modell.
OpenRouterZugriff auf hunderte Modelle über einen einzigen API-Key (OPENROUTER_API_KEY). Base-URL: https://openrouter.ai/api/v1.
Eigener EndpunktJede OpenAI-kompatible API — „Base-URL" und „LLM-Modell" auf den Anbieter anpassen.

Für OpenRouter base_url auf https://openrouter.ai/api/v1 setzen und Modell wählen (z. B. openai/gpt-4o). Der Name der API-Key-Umgebungsvariable wird unter „API-Key-Umgebung" eingestellt.

Text-Aktionen. Das Umschreiben läuft über fünf klar getrennte Aktionen. Du wählst sie unter Einstellungen → Text & KI → „Text-Aktion", im Compose-Fenster oder im ⋯-Menü des Haupt-Widgets:

Text-AktionWirkung
Text verbessernStandard: sauber formatierter Text mit korrigierter Grammatik und Zeichensetzung; der gewählte Ziel-Tonfall greift.
KürzenEntfernt Füllwörter, Wiederholungen und Umwege, behält aber alle wesentlichen Informationen.
AusformulierenMacht aus Notizen und Fragmenten zusammenhängenden Fließtext — ohne neue Fakten zu ergänzen.
Tonfall ändernÄndert gezielt nur den Tonfall (locker / neutral / professionell) und lässt Inhalt, Sprache und Absicht unverändert.
Eigene AnweisungDeine eigene Anweisung aus dem Compose-Fenster („Wie soll dein Text klingen?“). Speichern & für Diktate verwenden überträgt sie zusätzlich auf den Workflow „Diktieren & verbessern“.

Der Ziel-Tonfall wirkt bei Text verbessern und Tonfall ändern. Ältere Konfigurationen mit den früheren neun Schreibstil-Vorlagen werden automatisch auf die nächstliegende Aktion migriert (z. B. „E-Mail – formell“ → Tonfall ändern, professionell). Eigennamen/Begriffe bleiben in allen Aktionen erhalten.

Compose-Fenster

Das Compose-Fenster (✍ Text bearbeiten… im Tray-Menü oder über das Stift-Symbol im Hauptfenster-Widget) ermöglicht das Entwerfen, Umschreiben und Verfeinern von Texten mit der KI — ganz ohne Sprachaufnahme. Es eignet sich ideal zum Überarbeiten von E-Mails, Notizen oder Nachrichten, bevor sie eingefügt werden.


Compose-Fenster

Öffnen: Klick auf das Tray-Icon → ✍ Text bearbeiten… oder Klick auf das goldene Stift-Symbol im Hauptfenster-Widget.

Was du im Compose-Fenster tun kannst:

ElementBeschreibung
Text-AktionWähle zwischen Text verbessern, Kürzen, Ausformulieren, Tonfall ändern oder Eigene Anweisung.
TonfallErscheint dynamisch bei Auswahl von Tonfall ändern (Locker, Neutral, Professionell).
Eigene Anweisung …Klappt eine eigene Prompt-Karte aus („Wie soll dein Text klingen?“). Verbessern wendet sie für den aktuellen Entwurf an; Speichern & für Diktate verwenden speichert sie dauerhaft für kommende Sitzungen und Diktat-Workflows.
Prompt prüfenZeigt den exakt zusammengestellten System-Prompt samt Anweisungen vor dem Senden an das Sprachmodell.
Sprachaufnahme hierher umleitenIst diese Option aktiv, landen laufende Diktataufnahmen direkt im Entwurfsfeld statt in der aktiven Anwendung.
Entwurf (linkes Feld)Text eintippen, einfügen oder direkt per Sprache hineindiktieren.
Ergebnis (rechtes Feld)Zeigt die KI-generierte Fassung direkt neben dem Ausgangstext.
Varianten-NavigationDie in dieser Sitzung erzeugten Ergebnisse bleiben verfügbar — über die Pfeile ‹ › oberhalb des Ergebnisfelds durchblätterbar.
KopierenKopiert das Ergebnis in die Zwischenablage.
Einfügen & SchließenFügt das Ergebnis direkt in die aktive Anwendung ein und schließt das Compose-Fenster.

Compose-Fenster mit eigener Anweisung und Prompt-Prüfung
Eigene KI-Anweisungen direkt im Compose-Fenster formulieren und den System-Prompt vorab prüfen.

Note

Signatur und eigener Preset-Text werden unter Einstellungen → Allgemein konfiguriert („Signatur für Compose-Fenster“ und „Automatisch nach Generierung anfügen“). Gängige KI-Platzhalter wie [Ihr Name] oder [Your Name] werden dabei automatisch sauber ersetzt.

Tray-Symbol und Kontextmenü

Das Mikrofon im System-Tray ist dein Indikator für den aktuellen Zustand:



Grün (IDLE)
Bereit — wartet auf deinen Einsatz.


Rot (RECORDING)
Aufnahme läuft aktiv.


Orange (TRANSCRIBING)
Magie läuft (Transkription / KI-Umformulierung).


Grau (ERROR)
Ups, etwas ist schiefgelaufen.

Das Tray-Kontextmenü gibt dir schnellen Zugriff auf alle Workflows, das Compose-Fenster, Text-Aktionen, Diktat-Modus, Verlauf und Einstellungen:


Tray-Kontextmenü

Note

Steht im Desktop-Environment kein Tray-Bereich zur Verfügung, fällt das Icon auf das System-Theme audio-input-microphone zurück; die Farbkodierung greift dann ggf. nicht.

Hauptfenster: Single-Panel-Widget

Das Hauptfenster ist ein kompaktes, rahmenloses Desktop-Widget mit einheitlicher dunkler Ästhetik, edlen Gold-Akzenten und direkter visueller Rückmeldung:



Bereit
Wartet auf Sprach- oder Mausklick-Eingabe.


Aufnahme
Laufender Timer und Audiowellen-Balken.


Verarbeitung
Rotierender goldener Fortschrittsring.


Aktions-Menü
Workflows und Schnellzugriff direkt am Widget.
  • Zentrales Gold-Mikrofon: Markanter kreisrunder Button mit metallischem Farbverlauf und Blitz-Aussparung. Klick startet oder beendet die Aufnahme.
  • Dynamische visuelle Rückmeldung:
    • Bereit (IDLE): Grüner Statuspunkt und Zeitanzeige (Bereit: 00:00).
    • Aufnahme (RECORDING): Gelber Statuspunkt, sekundengenaue Zeitanzeige und animierte Wellenbalken links und rechts des Mikrofons.
    • Verarbeitung (TRANSCRIBING): Rotierender goldener Kreisbogen um das Mikrofon (Transkribiere…).
  • Kompakte Werkzeugleiste:
    • Compose-Button (hervorgehobenes Stift-Symbol): Öffnet das Entwurfsfenster für Texteingabe und KI-Verfeinerung.
    • 🕒 Verlauf-Button (mit Zähler-Badge): Öffnet den Transkript- und Diktat-Verlauf.
    • 🔊 Vorlesen-Button (Lautsprecher-Symbol): Öffnet das TTS-Fenster zur Sprachausgabe.
    • Einstellungen-Button (Zahnrad): Öffnet den Konfigurations-Dialog.
    • Mehr-Button: Öffnet das Popup-Menü für Diktieren & verbessern, Text-Aktionen (Kürzen, Ausformulieren, Tonfall ändern), Eigene Anweisung, Sammel-Diktat und Verwerfen.

Das Widget öffnet sich beim Start sowie über den Tray-Eintrag Fenster anzeigen oder einen Klick auf das Tray-Icon. Schließen blendet das Widget aus — die App läuft im Hintergrund im Tray weiter.

Diktat, Verlauf und Vorlesen

Zusätzlich zu den Workflows bietet das Tool drei Komfort-Funktionen:


Verlauf    Vorlesen

MenüpunktBeschreibung
Diktat-ModusUmschalter. Ist er aktiv, werden alle Transkripte als Diktat-Einträge gesammelt und einzeln als Markdown-Datei gespeichert. Im Verlauf erscheint dann eine Schaltfläche Zusammenführen, die alle Einträge kombiniert und in die Zwischenablage kopiert.
Verlauf…Öffnet ein Fenster mit den letzten Transkripten. Pro Eintrag: In Zwischenablage kopieren oder löschen.
Vorlesen…Lässt dir beliebigen Text vorlesen — lokal per Piper TTS (Standard) oder optional über OpenAI Cloud-TTS (inklusive Anbieter-, Stimmen- und Modellauswahl). Nutze die Schaltfläche Exportieren, um die Audioausgabe als Datei zu speichern.

Note

Diktat-Notizen werden ausschließlich in einen Ordner innerhalb des Home-Verzeichnisses geschrieben (Schutz gegen Pfad-Ausbruch), mit Berechtigungen 0o600.

Important

Piper TTS muss für die Vorlesefunktion (sowie Stimmen) installiert sein:

.venv/bin/pip install piper-tts
# Stimmen (.onnx + .onnx.json) nach ~/.local/share/piper-voices/ legen

Fehlt Piper oder eine Stimme, zeigt das Vorlese-Fenster einen Installationshinweis; alle übrigen Funktionen bleiben nutzbar. Optionale Desktop-Benachrichtigungen nutzen notify-send (Paket libnotify-bin).

Note

OpenAI Cloud-TTS ist eine optionale Alternative zu Piper. Voraussetzung: das openai-Paket (.venv/bin/pip install openai) und ein gültiger Key in der Umgebungsvariable OPENAI_API_KEY (siehe Secrets unten). Beim ersten Umschalten auf den Anbieter „OpenAI Cloud" fragt das Vorlese-Fenster einmalig nach Bestätigung, da der eingegebene Text zur Synthese an die OpenAI-Server gesendet wird. Piper bleibt Standard und arbeitet vollständig lokal.


Installation & Start

Schnellinstallation (empfohlen)

Der einfachste Weg, um Blitztext auf deinem System bereitzustellen:

git clone https://github.com/TimInTech/blitztext-linux.git
cd blitztext-linux
bash scripts/install.sh

Was macht das Skript? Es ist idempotent (mehrfach ausführbar) und erledigt alles vollautomatisch:

  1. Prüft dein System (Ubuntu/Debian) & Python-Version.
  2. Installiert fehlende Systempakete (inkl. pipx).
  3. Fragt den Betriebsmodus ab: globale Hotkeys mit input-Gruppe oder nur Fenster/Tray ohne globale Hotkeys.
  4. Richtet eine .venv Umgebung ein und installiert openai-whisper/faster-whisper.
  5. Bereitet ydotool.service vor, installiert den systemd-User-Service und aktiviert ihn für den Autostart, ohne ihn sofort zu starten.

Nach der Installation

  1. Neustart nur erforderlich, wenn du den Hotkey-Modus gewählt hast (oder ab-/anmelden), damit die Gruppe input aktiv wird. Danach checken:
    bash scripts/verify.sh
    
  2. Manuell testen:
    ./run.sh
    
    (Erscheint das Tray-Symbol und reagieren die Hotkeys? Dann lief alles glatt!)
  3. Den bereits aktivierten Autostart-Dienst jetzt starten:
    systemctl --user start blitztext-linux
    

Stand Ubuntu 26.04 GNOME / Wayland (verifiziert am 10.08.2026): Eine saubere Installation mit Python 3.14.4 bestand scripts/verify.sh vor der ersten Benutzerkonfiguration mit 17 PASS, 0 FAIL, 0 WARN und danach mit 18 PASS, 0 FAIL, 0 WARN. Hauptfenster, GNOME-AppIndicator-Tray, Audioaufnahme, lokale openai-whisper-Transkription, globaler Left-Alt-Hotkey, Wayland-Zwischenablage, ydotool-Auto-Paste und der Autostart als systemd-User-Service wurden in der echten Desktop-Sitzung ausgeführt. Diese Verifikation gilt für die native Installation, nicht für das experimentelle Flatpak-Manifest.

Autostart wieder deaktivieren
systemctl --user stop blitztext-linux
systemctl --user disable blitztext-linux
Manuelle Installation (Diagnose / Experten)

Falls du gezielt debuggen möchtest, anstatt scripts/install.sh zu nutzen:

1. Systempakete (apt)

sudo apt install pulseaudio-utils wl-clipboard xclip ydotool ffmpeg python3-venv python3-evdev build-essential python3-dev socat pipx
PaketZweck
pulseaudio-utilsparec für die Audioaufnahme via PulseAudio/PipeWire
wl-clipboard / xclipZwischenablage unter Wayland (wl-copy) bzw. X11-Fallback
ydotoolSimuliert automatisches Einfügen. Blitztext verwendet symbolische Tastenkombinationen, die mit Ubuntu 24.04s ydotool 0.1.8 und ydotool ≥ 1.0 funktionieren: Ctrl+Shift+V als terminalkompatibler Wayland-Fallback, sonst Ctrl+V.
ffmpegAudio-Konvertierungen
python3-evdevEingabegeräte-Zugriff für den systemweiten Hotkey-Daemon
socatOptionale Socket-Kommunikation
pipxIsolierte Installation von Whisper-Engines

2. evdev-Rechte vergeben

sudo usermod -aG input $USER

3. Virtuelle Umgebung & Python-Pakete Innerhalb der venv zuerst das CPU-only-PyTorch-Wheel installieren, damit nicht versehentlich große CUDA-Wheels heruntergeladen werden:

python3 -m venv .venv
source .venv/bin/activate
pip install --index-url https://download.pytorch.org/whl/cpu torch
pip install PyQt6 evdev openai pytest openai-whisper faster-whisper

4. Whisper-Engine als Alternative via pipx Falls du openai-whisper losgelöst von der venv installieren möchtest, nutze den vorhandenen System-Interpreter. Der verifizierte Ubuntu-26.04-Pfad verwendet die Projekt-venv mit Python 3.14.4; pipx ist dort nicht erforderlich:

pipx install --python "$(command -v python3)" openai-whisper
pipx inject openai-whisper faster-whisper   # optional, für beschleunigte Ausführung

5. ydotool prüfen

systemctl --user start ydotool.service

Liefert apt nur ydotool 0.1.x (Ubuntu 24.04/22.04), ydotool ≥ 1.0 aus dem Quellcode bauen:

sudo apt install cmake build-essential scdoc git
git clone --depth 1 --branch v1.0.4 https://github.com/ReimuNotMoe/ydotool.git
cd ydotool && cmake -B build -DCMAKE_BUILD_TYPE=Release && make -C build && sudo make -C build install
systemctl --user enable --now ydotool.service   # nutzt /usr/local/bin/ydotoold

6. Anwendung starten

./run.sh

Konfiguration

Alles wird lokal unter ~/.config/blitztext-linux/config.json gespeichert. Diese Datei enthält keine Secrets — der OpenAI-/OpenRouter-Key wird aus einer Umgebungsvariable gelesen (siehe Secrets). Die Konfigurationsdatei lässt sich direkt aus den Einstellungen öffnen: Einstellungen → Allgemein → „Konfigurationsdatei öffnen".

Der Einstellungs-Dialog hat drei Tabs:

Einstellungen: Spracherkennung
Spracherkennung — Whisper-Modell, Backend, Sprache, Hotkey-Modus und Aufnahmetaste.

Einstellungen: Text & KI
Text & KI — System-Prompt, API-Key-Umgebung, LLM-Anbieter, Base-URL, Modell, Text-Aktion und Emoji-Dichte.

Einstellungen: Allgemein
Allgemein — Auto-Paste, Diktat-Notizordner, Verlaufsgröße, Sprache der Oberfläche und Signatur.

Important

Die Konfigurationsdatei wird automatisch mit restriktiven Dateiberechtigungen (0o600 / chmod 600) gespeichert.

Beispiel-Konfiguration & Felderklärung
{
  "model": "base",
  "language": "de",
  "ui_language": "de",
  "backend": "openai-whisper",
  "hotkey_mode": "hold",
  "transcription_hotkey": "KEY_LEFTALT",
  "openai_api_key_env": "OPENAI_API_KEY",
  "autopaste": true,
  "paste_key_delay_ms": 80,
  "audio_device": "@DEFAULT_SOURCE@",
  "notes_folder": "~/Blitztext-Notizen",
  "history_size": 50,
  "llm_provider": "openai",
  "llm_base_url": "",
  "llm_model": "gpt-4o-mini",
  "tts_provider": "piper",
  "tts_voice": "",
  "tts_openai_model": "gpt-4o-mini-tts",
  "tts_openai_voice": "marin",
  "tts_speed": 1.0,
  "compose_signature_text": "",
  "compose_signature_auto_append": false,
  "compose_custom_preset_text": "",
  "workflows": {
    "text_improver_tone": "neutral",
    "writing_preset": "standard",
    "emoji_density": "medium",
    "dampf_system_prompt": ""
  }
}
  • model: Whisper-Modellgröße (tiny, base, small, medium, large, large-v2, large-v3, large-v3-turbo). Standard: base.
  • language: Transkriptions-Sprache (de, en) oder auto.
  • ui_language: Sprache der App-Oberfläche (de oder en). Standard: de. Änderungen greifen nach einem Neustart.
  • backend: openai-whisper oder faster-whisper.
  • hotkey_mode:
    • toggle: Einmal drücken startet, erneutes Drücken beendet.
    • hold: Aufnahme läuft solange der Hotkey gedrückt wird. Tastendrücke unter 150 ms werden verworfen; leere Aufnahmen kehren ohne dauerhaften Fehlerzustand zu Bereit zurück.
  • transcription_hotkey: Aufnahmetaste, die vom globalen Hotkey-Daemon überwacht wird. Standard: KEY_LEFTALT.
  • openai_api_key_env: Name der Umgebungsvariable für den API-Key. Standard: OPENAI_API_KEY. Für OpenRouter: OPENROUTER_API_KEY.
  • llm_provider: openai (Standard), openrouter oder custom.
  • llm_base_url: Eigene API-Base-URL. Leer = OpenAI-Standard. Für OpenRouter: https://openrouter.ai/api/v1.
  • llm_model: Modellname beim Anbieter, z. B. gpt-4o-mini (OpenAI) oder openai/gpt-4o (OpenRouter).
  • autopaste: Fügt per ydotool ein.
  • paste_key_delay_ms: Verzögerung in Millisekunden zwischen simulierten Tastenereignissen für Auto-Paste. Standard: 80.
  • audio_device: Name der Audioquelle.
  • notes_folder: Ordner für Diktat-Notizen; er muss innerhalb deines Home-Verzeichnisses liegen. Standard: ~/Blitztext-Notizen.
  • history_size: Anzahl der zuletzt gespeicherten Transkripte im Verlaufsfenster. Auf 10-100 begrenzt. Standard: 50.
  • compose_signature_text: Signaturtext, der im Compose-Fenster angehängt wird.
  • compose_signature_auto_append: Signatur nach jeder Generierung im Compose-Fenster automatisch anhängen (true/false).
  • compose_custom_preset_text: Freier System-Prompt für die Option „Eigenes Preset…" im Compose-Fenster.
  • tts_provider: TTS-Anbieter für „Vorlesen" — piper (lokal, Standard) oder openai (Cloud).
  • tts_voice: Stimmenname für den aktiven TTS-Anbieter. Standard: "" = Piper-Standardstimme.
  • tts_openai_model / tts_openai_voice: Modell und Stimme für OpenAI Cloud-TTS (Standard: gpt-4o-mini-tts, marin).
  • tts_openai_consent: true, sobald die einmalige Datenschutz-Bestätigung für Cloud-TTS erteilt wurde. Standard: false.
  • tts_speed: Sprechgeschwindigkeit für „Vorlesen" als Multiplikator. Standard: 1.0.
  • workflows: Feintuning von Tonalität (text_improver_tone), Text-Aktion (writing_preset), Emojis (emoji_density) und dem Dampf-Prompt (dampf_system_prompt).

Secrets

API-Keys werden niemals in config.json gespeichert — sie werden zur Laufzeit aus Umgebungsvariablen gelesen.

Empfohlen: secrets.env. Lege deine(n) Key(s) in ~/.config/blitztext-linux/secrets.env ab, ein NAME=WERT-Paar pro Zeile — der Variablenname richtet sich nach dem unter Einstellungen → Text & KI → „API-Key-Umgebung" gewählten Anbieter (z. B. die OpenAI-Variable für OpenAI, die OpenRouter-Variable für OpenRouter), WERT ist der geheime Key von diesem Anbieter:

<VARIABLENNAME>=<dein-geheimer-wert>

./run.sh und der systemd-User-Service laden diese Datei automatisch. config.json speichert nur den Namen der zu lesenden Umgebungsvariable (openai_api_key_env), niemals den Key selbst.

  • Welche Variable verwendet wird, hängt von Einstellungen → Text & KI → „API-Key-Umgebung" und dem gewählten LLM-Anbieter ab (OPENAI_API_KEY für OpenAI, OPENROUTER_API_KEY für OpenRouter, oder ein eigener Name für einen eigenen Endpunkt).
  • Ohne gültigen Key sind die LLM-Workflows (Diktieren & verbessern, Sachlich formulieren, Emojis ergänzen) und OpenAI Cloud-TTS deaktiviert bzw. schlagen mit einer Fehlermeldung fehl; lokale Transkription und Piper-TTS funktionieren weiterhin.
  • Committe niemals secrets.env, API-Keys oder Tokens in git. Sollte ein Key jemals offengelegt werden (z. B. versehentlich committet oder in ein Issue eingefügt), rotiere ihn sofort beim Anbieter.
  • config.json wird mit restriktiven Rechten (0o600) geschrieben; die gleiche Erwartung gilt für secrets.env.

Tests

Führe die Test-Suite lokal aus:

pytest

Mit WHISPER_GUI_TESTS=1 QT_QPA_PLATFORM=offscreen pytest laufen zusätzlich die GUI-Tests (Hauptfenster, Compose-Fenster).

bash scripts/verify.sh führt sitzungsabhängige Diagnosen für X11-, Wayland- und Clipboard-Backends aus — hilfreich nach der Installation oder bei der Fehlersuche zu Hotkeys/Paste-Verhalten. Die Ausgabe ist Diagnosehilfe, kein Supportversprechen; siehe die dort ausgegebenen Kompatibilitätshinweise für deine Desktop-Sitzung.


Flatpak-MVP-Status

packaging/flatpak/ enthält einen experimentellen Flatpak-Manifest-Spike — kein Release-Kanal und nicht auf Flathub veröffentlicht.

  • Eine strukturelle Validierung (flatpak-builder --show-manifest / --show-deps) sowie ein vollständiger lokaler Build (inklusive Download von org.kde.Platform/org.kde.Sdk 6.8) waren auf einer Entwicklungsmaschine beide erfolgreich.
  • Die KDE-6.8-Runtime ist upstream als EOL markiert; sie baut und läuft für diesen MVP dennoch. Ein Runtime-Bump auf 6.10 ist ein möglicher Folge-Spike, hier aber nicht umgesetzt.
  • Innerhalb der Flatpak-Sandbox sind mehrere Funktionen bewusst deaktiviert oder eingeschränkt: keine globalen Hotkeys (kein evdev-/Input-Geräte-Zugriff), kein ydotool-Auto-Paste (Zwischenablage-Kopie funktioniert weiterhin über den Qt-Fallback), keine lokale Whisper-Transkription (aus requirements-flatpak.txt wegen der Größe ausgeklammert — Cloud-Transkription/LLM-Workflows funktionieren weiterhin mit --share=network) und keine Desktop-Benachrichtigungen (notify-send ist nicht gebündelt).
  • Es gibt kein Signing, keine AppStream-Metadaten, kein .desktop-File und kein paketiertes Release für diesen Spike.

Details zu Manifest-Umfang, Build-Befehlen und bekannten Abweichungen von Flathub-Konventionen siehe packaging/flatpak/README.md.


Bekannte Grenzen

  • Linux Exclusive: Nur für Linux-Systeme.
  • Wayland Fokus: Entwickelt für Wayland (wl-clipboard, ydotool).
  • Datenschutz: Lokale Workflows bleiben zu 100% auf deinem Rechner. OpenAI oder OpenRouter wird nur bei Bedarf für LLM- oder Cloud-TTS-Aufgaben kontaktiert.
  • Sicherheit (evdev & input-Gruppe): Das Tool liest Input global über /dev/input/event*. Auf System-Ebene bedeutet dies, dass alle Prozesse des Benutzers Eingaben mitlesen könnten (Trade-off unter Wayland ohne XDG GlobalShortcuts). Nutze Blitztext nur in Umgebungen, denen du vertraust!
  • Flatpak-Sandbox: Siehe Flatpak-MVP-Status oben — globale Hotkeys, Auto-Paste, lokales Whisper und Desktop-Benachrichtigungen sind innerhalb der Sandbox nicht verfügbar.

Entwicklung

Dieses Projekt wurde mit Unterstützung künstlicher Intelligenz (AI-assisted) entworfen. Architektur, Code und Tests wurden manuell gesichtet und auf Funktion/Sicherheit lokal verifiziert. Siehe CONTRIBUTING.md für Hinweise, wie du Änderungen vorschlagen kannst.

Verzeichnisüberblick
.
├── app/
│   ├── __init__.py
│   ├── audio_recorder.py   # PulseAudio/PipeWire-Aufnahme via parec
│   ├── blitztext_linux.py  # PyQt6-Hauptanwendung (System-Tray)
│   ├── compose_window.py   # Compose-Fenster für textbasiertes KI-Umschreiben
│   ├── config.py           # Konfigurations-Manager
│   ├── history_panel.py    # Transkript-Verlauf-Panel
│   ├── hotkey_service.py   # evdev-basierter Hotkey-Daemon
│   ├── i18n.py             # Übersetzungen (DE/EN) für die Oberfläche
│   ├── llm_service.py      # OpenAI / OpenRouter / eigene Endpunkte
│   ├── main_window.py      # Hauptanwendungsfenster
│   ├── paste_service.py    # Wayland-Clipboard-Integration
│   ├── transcribe.py       # Whisper-Transkription
│   ├── tts_window.py       # Vorlese-Fenster mit Audio-Export
│   ├── workflows.py        # Workflow-Definitionen
│   └── writing_presets.py  # Text-Aktionen und Migration alter Presets
├── packaging/flatpak/      # Experimenteller Flatpak-MVP-Spike (siehe oben)
├── tests/                  # Test-Suite
└── README.md               # Englische Fassung (diese Datei: README.de.md)

Dieses Projekt ist ein Linux-Port der macOS-Anwendung "Blitztext". Der Fairness halber und zur korrekten Attribution verweisen wir auf die rechtlichen Angaben des Original-Projekts:

Das Original-Projekt ist ein experimentelles, nicht-kommerzielles Open-Source-Projekt unter der MIT-Lizenz. Die zugehörige Website (blitztext.de) wird betrieben von der Blackboat Internet GmbH:


Erstellt mit ❤️ (und ein bisschen KI-Hilfe).

Neueste Release-Notizen (v0.8.1): Absichtstreue Prompts und bessere Diagnose

Blitztext+ und die Schreibstil-Presets bewahren die Absicht der Eingabe jetzt konservativer. Sie sollen bei diktierten Arbeitsanweisungen oder Übergabe-Prompts keine Meetings, Teilnehmer, Empfänger, Rollen oder Ziele erfinden. E-Mail-Presets nutzen eine E-Mail-artige Struktur nur dann, wenn die Eingabe erkennbar als Nachricht an jemanden gemeint ist.

Das Linux-Prüfskript enthält außerdem verbesserte sitzungsabhängige Desktop-Diagnosen für X11, Wayland und Clipboard-Backends. Die Kompatibilitätsmatrix ist Diagnosehilfe, kein Supportversprechen.