Standalone Ubuntu daemon that tracks recently typed keys, clears after idle timeout, and copies tracked text when you press a hotkey.
Default behavior:
- Hotkey:
Ctrl+Shift+G - Idle clear timeout:
3seconds - Buffer: rolling character history (
4096max)
Prebuilt binaries and installers are published on each tagged release:
.exefor Windows (keycopy-daemon-windows-x64.exe).dmgfor macOS Apple Silicon (keycopy-daemon-macos-arm64.dmg).debfor Ubuntu/Debian amd64 (keycopy-daemon_<version>_amd64.deb)
Release page:
https://github.com/buiilding/global-key-copy-daemon/releases/latest
- This captures key events, not each app's final text state.
- It can capture sensitive input (passwords, API keys, private text).
- On Wayland sessions, global key capture may be blocked by compositor/security policy.
- Python 3.10+
- One clipboard tool installed:
- Wayland:
wl-copyfromwl-clipboard - X11:
xcliporxsel
- Wayland:
Install clipboard utilities if needed:
sudo apt update
sudo apt install -y wl-clipboard xclipcd /mnt/E/Assistants/TaskOrca_workspace/global-key-copy-daemon
chmod +x start.sh
./start.shThen:
- Type some text in any app.
- Press
Ctrl+Shift+G. - Paste somewhere else to confirm copied text.
Stop with Ctrl+C in the daemon terminal.
- Windows: run the
.exefrom release assets. - macOS: open the
.dmg, copy the binary out, then run it from Terminal. - Linux: install the
.debor run from source.
cd /mnt/E/Assistants/TaskOrca_workspace/global-key-copy-daemon
chmod +x install-user-service.sh
./install-user-service.shUseful commands:
systemctl --user restart keycopy-daemon.service
systemctl --user stop keycopy-daemon.service
systemctl --user disable keycopy-daemon.service
journalctl --user -u keycopy-daemon.service -fEnvironment variables (or CLI flags) control behavior:
KEYCOPY_HOTKEY(default:<ctrl>+<shift>+g)KEYCOPY_IDLE_SECONDS(default:3)KEYCOPY_MAX_BUFFER(default:4096)KEYCOPY_POLL_SECONDS(default:0.1)
Example:
KEYCOPY_IDLE_SECONDS=5 KEYCOPY_MAX_BUFFER=10000 ./start.sh- If hotkeys do nothing on Wayland, try logging into an X11 session and run again.
- If copy fails, ensure one of these exists in
PATH:wl-copy,xclip, orxsel. - To see logs while running manually, do not pass
--quiet.
This is effectively a key history tracker. Run only on systems you control and trust.