|
|
1 day ago | |
|---|---|---|
| bin | 1 day ago | |
| keyd | 1 day ago | |
| .gitignore | 1 day ago | |
| LICENSE | 1 day ago | |
| README.md | 1 day ago | |
| install.sh | 1 day ago |
Cadmus, the mythological prince who brought the Phoenician alphabet to Greece — now reduced to a one-tap spell picker on your keyboard.
A tiny opinionated spell-check popup for Linux Wayland. Tap Right Alt anywhere, type a word (or pre-select one), pick the right spelling, and it lands on your clipboard. Paste it back where you came from.
fuzzel + hunspell + the system word listBuilt for KDE Plasma 6 on Wayland where modifier-only global hotkeys
(like "tap Right Alt by itself") aren't first-class. The trick is to use
keyd at the kernel/evdev layer for the
hotkey, and a small Bash script for the popup. Works in any app, in any
desktop environment that supports wl-copy.
git clone <this-repo> ~/Projects/cadmus
cd ~/Projects/cadmus
./install.sh
That's it. Tap Right Alt to try it.
install.sh doesfuzzel, hunspell, wl-clipboard, libnotify./usr/local/bin/:
cadmus — the spell picker itselfcadmus-launch — env shim for launching from the root-owned keydkeyd from source if
it's not already on PATH (no keyd in Fedora's default repos)./etc/keyd/cadmus.conf mapping Right Alt.keyd systemd service.If you'd rather skip the script:
sudo install -D -m 755 bin/cadmus /usr/local/bin/cadmus
sudo install -D -m 755 bin/cadmus-launch /usr/local/bin/cadmus-launch
# build keyd from source if your distro doesn't ship it
git clone --depth 1 https://github.com/rvaiya/keyd.git /tmp/keyd
make -C /tmp/keyd -j"$(nproc)"
sudo make -C /tmp/keyd install
# install + load the keyd config (replace YOURUSER)
sed "s/__USER__/$USER/g" keyd/cadmus.conf | sudo tee /etc/keyd/cadmus.conf >/dev/null
sudo systemctl enable --now keyd
sudo keyd reload
sudo dnf install fuzzel hunspell hunspell-en-US wl-clipboard libnotify
keyd is built from source by install.sh (it's not in Fedora repos).
On Arch, Debian 13+, Ubuntu 25.04+, Alpine, openSUSE, and Void it's a package.
Right Alt tap ──► keyd ──► /usr/local/bin/cadmus-launch ──► cadmus
│
fuzzel ◄─────────┤
hunspell ◄────────┤
wl-copy ◄────────┘
keyd watches /dev/input/* at the evdev level and decides "tap vs hold"
for Right Alt. On tap, it runs a shell command (as root); the launcher
immediately drops to your normal user with runuser and sets the
Wayland/DBus env vars so GUI tools work.cadmus builds (and caches) a filtered word list from /usr/share/dict/words.fuzzel shows a dark popup with that list, prefilled from your primary
selection if any. As you type, it fuzzy-filters live.hunspell to confirm + suggest, then ends up
on the clipboard via wl-copy. A notify-send toast tells you what happened.Environment variables read by cadmus:
| Var | Default | Purpose |
|---|---|---|
CADMUS_DICT |
en_US |
Hunspell dictionary (e.g. en_GB, de_DE) |
CADMUS_WORDS_FILE |
/usr/share/dict/words |
Source word list for the picker |
Theme/colors live inline in bin/cadmus (the fuzzel --*-color flags).
Edit and re-run install.sh (or just the sudo install step) to update.
sudo systemctl disable --now keyd
sudo rm -f /etc/keyd/cadmus.conf
sudo rm -f /usr/local/bin/cadmus /usr/local/bin/cadmus-launch
rm -rf "${XDG_CACHE_HOME:-$HOME/.cache}/cadmus"
If keyd was only installed for cadmus, you can remove it too:
sudo make -C /tmp/keyd uninstall # or via your distro's package manager
sudo systemctl status keyd and
sudo keyd monitor (tap Right Alt; you should see events).CADMUS_DICT=en_GB (or whatever)
in your shell rc and in /etc/keyd/cadmus.conf if launched via keyd.--output / --anchor
in bin/cadmus.MIT. Do whatever Cadmus would have done.