Type clipboard contents keystroke-by-keystroke into the active window. Designed for situations where paste is blocked or unavailable — remote desktops, restricted login fields, and terminal interfaces that intercept Ctrl+V.
- Global hotkey — trigger from any window (default:
Ctrl+Shift+V) - Multiple typing backends — pynput (native), ydotool, wtype, xdotool
- Automatic backend selection — detects Wayland/X11 and picks the best available backend
- System tray icon — visual active/paused state with pause/resume toggle
- Settings GUI — Qt dialog with dark theme (PySide6)
- Configurable typing speed — adjustable delay, chunk size, and start delay
- Editor indent compensation — clears auto-indent after newlines
- Systemd service — run as a user service on Linux
yay -S clipboard-typerpip install .
# With tray icon support
pip install .[tray]| Package | Purpose |
|---|---|
pystray, Pillow |
System tray icon |
ydotool |
Wayland typing backend (recommended) |
wtype |
Alternative Wayland backend |
xdotool |
X11 typing backend |
wl-clipboard |
Wayland clipboard access |
# Start with defaults
clipboard-typer
# With debug logging
clipboard-typer -v
# Without tray icon
clipboard-typer --no-tray
# Custom config file
clipboard-typer --config /path/to/config.tomlPress the hotkey (Ctrl+Shift+V by default) while text is in your clipboard. After a short delay, the text is typed character-by-character into the focused window.
systemctl --user enable --now clipboard-typerConfig file location: ~/.config/clipboard-typer/config.toml
start_paused = false
[hotkey]
combo = "ctrl+shift+v"
[typing]
delay_ms = 10 # ms between keystrokes
chunk_size = 0 # characters per chunk (0 = all at once)
start_delay_ms = 300 # ms before typing starts (modifier release time)
compensate_indent = false # clear editor auto-indent after newlines
[platform]
prefer_native = true # try pynput first, fall back to system tools| Platform | prefer_native=true | prefer_native=false |
|---|---|---|
| Windows / macOS | pynput | pynput |
| Wayland | ydotool → wtype → xdotool | ydotool → wtype → xdotool |
| X11 | pynput (fallback: xdotool) | xdotool |
# Install dev dependencies
pip install .[dev,tray]
# Run tests
pytest