Castword

Say it, type it — rewritten in the right tone. One keypress from anywhere on GNOME.

No Electron No Telemetry No Subscription

Default shortcut: Super+Shift+W

How It Works
1
Trigger
Press Super+Shift+W from any app — the overlay appears instantly, no cold-start delay
2
Pick a tone
Type, paste, or speak your text — then select a tone to rewrite it
3
Done
Rewritten text lands on your clipboard, word-level diff shows exactly what changed
Download
GNOME
GTK4 + Libadwaita  ·  Python 3.11+
Download
Flatpak, AppImage, .deb, .rpm  ·  AUR: castword-gnome-bin
View on GitHub →  ·  Changelog →
Sponsor

Castword is free and open source. If it's useful to you, consider sponsoring its development.

Sponsor Castword
Screenshots
Castword — input with microphone paused Castword — three-column diff view Castword — tones preferences Castword — providers preferences Castword — behaviour preferences Castword — speech preferences Castword — about dialog
Features
Text Rewriting
Global keyboard shortcut (Super+Shift+W by default) activates overlay from any app
Paste or type text, pick a tone — result on clipboard
Word-level diff view — green additions, red strikethrough removals
Three output modes: clipboard + diff, clipboard only, replace in place
Tone System
7 built-in tones: Direct, Technical, Professional, Social, TL;DR, Flirty, Playful — 4 enabled by default (Direct, Technical, Professional, Social)
Create custom tones with a fully editable system prompt
Enable, disable, reorder, edit, or delete any tone
Reset to built-in defaults at any time
AI Providers
OpenAI (GPT-4o), Anthropic (Claude), Google Gemini, Ollama
Switch providers without restarting
API keys auto-detected from environment and shell config (.env, .bashrc, .bash_profile, .profile, .zshrc, .zprofile, fish/config.fish, ~/.config/castword/.env)
Keys stored securely in GNOME Keyring — discovered keys migrated automatically on first run
Test connection button to verify provider setup
Speech-to-Text Phase 2 — infrastructure complete
Microphone recording via GStreamer with automatic silence detection
OpenAI Whisper (cloud) or whisper.cpp (fully offline) — binary auto-detected from PATH, model files scanned from standard directories
Transcribed text appended to input and copied to clipboard
Pause and resume recording without closing the window
System Integration
D-Bus service — no cold-start delay, process stays resident between activations
Launch at Login toggle — installs XDG autostart entry, process starts with --background before the first keypress
Registered in GNOME app menu with icon, desktop file, AppStream metadata
First-run onboarding — guided shortcut registration (with conflict detection) and launch-at-login, all in one dialog
GTK4 + Libadwaita — native GNOME look and feel
Preferences
Four-page prefs window: Tones, Providers, Behaviour, Speech
All changes apply immediately — no save button required
Dismiss on Focus Loss — overlay closes automatically when you switch apps
Keep Text on Dismiss — choose whether input text is retained between activations
System Requirements
Required
  • GNOME desktop (GTK4 + Libadwaita)
  • Python 3.11+
  • API key — OpenAI, Anthropic, or Google Gemini
Optional
  • GStreamer — for Speech-to-Text recording
  • Ollama — for fully local AI inference
  • whisper.cpp — for fully offline transcription