Repository navigation
Releases: gladimdim/omakey-omarchy-plugin
Release list
Omakey 1.2.1
Omakey 1.2.1 for Omarchy and the Steam Deck: a security fix for computers shared by several users.
Website and live demo: https://gladimdim.github.io/omakey-omarchy-plugin/
Android app: https://github.com/gladimdim/omakey-mobile/releases/latest (signed APK, free to redistribute)
What's fixed
omakeydtypes only while your session is in front at the seat. The virtual keyboard and mouse joinseat0, and whichever session is in front there reads them. Before 1.2.1, if you stayed logged in and another user switched in on the same computer, a phone paired with your account could still type into their session: logind takes the/dev/uinputaccess away, but the deviceomakeydalready had open kept working.omakeydnow follows logind'sseat0ActiveSessionand checks that it belongs to its own user before every key, click or mouse movement. Any doubt counts as no: no logind, no active session, or a failed lookup. Within one main-loop pass of a switch, it destroys the virtual devices. They come back when your session is in front again. The phone stays connected meanwhile, andomakeyd statusshowsKeyboard: away.- Locking your own screen is unchanged: your session stays in front.
Also
- One-command install on Omarchy;
install.shinstalls Rust with pacman if it's missing. - The README links the latest Android APK, with a QR code.
Install or update on Omarchy
omarchy plugin add https://github.com/gladimdim/omakey-omarchy-plugin --enable && ~/.config/omarchy/plugins/gladimdim.omakey/install.shUpgrading from 1.2.0: update the plugin (omarchy plugin update gladimdim.omakey). The widget then offers Update the service (it expects omakeyd 1.2.1), which rebuilds and restarts the daemon in a terminal.
Install or update on a Steam Deck with SteamOS
In Desktop Mode, open Konsole and run:
curl -fsSL https://raw.githubusercontent.com/gladimdim/omakey-omarchy-plugin/main/install-steamos.sh | bashIt downloads the static omakeyd attached below (built from this tag by the release workflow) and checks its checksum. Run it again to update from 1.2.0.
Omakey 1.2.0
Omakey 1.2.0 for Omarchy and the Steam Deck: the omakeyd service and the bar widget.
Website and live demo: https://gladimdim.github.io/omakey-omarchy-plugin/
Android app: https://github.com/gladimdim/omakey-mobile/releases/tag/v1.2.0 (signed APK, free to redistribute)
Install on Omarchy
Needs Omarchy with the Omarchy shell and Rust (sudo pacman -S rust).
omarchy plugin add https://github.com/gladimdim/omakey-omarchy-plugin --enable
~/.config/omarchy/plugins/gladimdim.omakey/install.shThen click the keyboard icon in the bar → Pair a phone, and scan it with the app.
Upgrading from 1.1.0: update the plugin and the widget offers Update the service (it expects omakeyd 1.2.0); it rebuilds and restarts the daemon in a terminal.
Install on a Steam Deck with SteamOS
No Omarchy, sudo or compiler needed. In Desktop Mode, open Konsole and run:
curl -fsSL https://raw.githubusercontent.com/gladimdim/omakey-omarchy-plugin/main/install-steamos.sh | bashIt downloads the static omakeyd attached below, checks its checksum, and installs it in your home folder with a user service, so it runs in Game Mode too and SteamOS updates leave it alone. Pair from Omakey: pair a phone (app menu, and Steam's Non-Steam library). Remove it with ... | bash -s -- --uninstall.
What's new
- Shared clipboard. New CLIP / CLIP_REPLY packets (
docs/PROTOCOL.md): the phone's Copy presses Ctrl+Insert on the desktop and gets the copied text; its Paste sets the desktop clipboard and presses Shift+Insert. Up to 64 KB of text, in 1 KB pieces with resends, and passwords' sensitive hint carried both ways.omakeyduseswl-copy/wl-paste, or KDE's clipboard over D-Bus where there's no Wayland desktop. It works on a worker thread, so no key waits for it. Servers advertise it in WELCOME; older apps and servers simply don't use it. - Steam Deck with SteamOS.
install-steamos.sh(rootless, above), and each release now carries a staticomakeyd-x86_64-linux-musl, its.sha256and the service file, built by a GitHub Action. On SteamOS typing, the touchpad, pairing and the Bluetooth fallback work in Game Mode and Desktop Mode; the clipboard in Desktop Mode.install.shhands over to it on SteamOS. - The bar icon is the Android app's icon, in colour; its signal waves light up while a phone is connected.
- Test vectors include a CLIP and its reply.
Omakey 1.1.0
Omakey 1.1.0 for Omarchy: the omakeyd service and the bar widget.
Website and live demo: https://gladimdim.github.io/omakey-omarchy-plugin/
Android app: https://github.com/gladimdim/omakey-mobile/releases/tag/v1.1.0 (signed APK, free to redistribute)
Install
Needs Omarchy with the Omarchy shell and Rust (sudo pacman -S rust).
omarchy plugin add https://github.com/gladimdim/omakey-omarchy-plugin --enable
~/.config/omarchy/plugins/gladimdim.omakey/install.shThen click the keyboard icon in the bar → Pair a phone, and scan it with the app.
Upgrading from 1.0.0: update the plugin and the widget offers Update the service (it expects omakeyd 1.1.0); it rebuilds and restarts the daemon in a terminal.
What's new
- Layouts for the phone's own keyboard. INPUT packets can carry the xkb layout their keys are meant in (
us,ua). Before applying the keys,omakeydswitches only its ownomakey-keyboarddevice to that layout through Hyprland's control socket, if it is one of the device's configured layouts. Your other keyboards keep their layouts, and Omakey's keyboard goes back to its previous layout when a phone sends keys without one. This is what lets the app's new portrait mode type English and Ukrainian correctly whatever layout the desktop is on. - The desktop theme, sent to the phone. ACKs can carry the current Omarchy theme (mode, name and the
colors.tomlcolours), read from~/.local/state/omarchy/currentevery 2 s, so the app can colour itself to match and follow theme changes. - Both are optional trailers that older peers skip, so 1.0.0 apps keep working.
docs/PROTOCOL.mddocuments them. - Website: a live demo of portrait mode, and pages that work on phones.
Omakey 1.0.0
Omakey 1.0.0 for Omarchy: the omakeyd service and the bar widget.
Website and live demo: https://gladimdim.github.io/omakey-omarchy-plugin/
Android app: https://github.com/gladimdim/omakey-mobile/releases/tag/v1.0.0 (signed APK, free to redistribute)
Install
Needs Omarchy with the Omarchy shell and Rust (sudo pacman -S rust).
omarchy plugin add https://github.com/gladimdim/omakey-omarchy-plugin --enable
~/.config/omarchy/plugins/gladimdim.omakey/install.shThen click the keyboard icon in the bar → Pair a phone, and scan it with the app.
Upgrading: update the plugin and the widget offers Update the service (it expects omakeyd 1.0.0); it rebuilds and restarts the daemon in a terminal.
What's in it
- Kernel-level keyboard and mouse.
omakeydcreates "Omakey Keyboard" and "Omakey Mouse" withuinput, so Hyprland binds, games, terminals and the lock screen all see real key presses, and your keyboard layout applies. - Fast, self-healing UDP. Every packet carries every held key plus un-acknowledged taps; lost packets heal, and keys are released after 500 ms of silence.
- Private. QR pairing with a 256-bit key and a fingerprint on both screens, AES-256-GCM with HKDF session keys and replay protection, firewall rules for private and Tailscale networks only, handshake rate limiting, no root (udev
uaccess), a sandboxed systemd user service with a watchdog. - Bluetooth fallback. The same encrypted packets over RFCOMM when Wi-Fi can't reach the desktop; held keys survive the switch, and UDP takes over again as soon as it answers.
- Bar widget. Set up, pair with a QR code (countdown, fingerprint, copy link), see connected phones with transport, packet loss and held keys, rename or forget them, start/stop/restart the service, open logs, change the name and port. It follows your Omarchy theme.
- CLI.
omakeyd pair | cancel-pair | status | devices | forget | rename | config | run [--dry-run] | test-client. - Documented. Wire protocol (
docs/PROTOCOL.md) and cross-language test vectors.
Changes since 0.4.0
- Version 1.0.0 for the plugin, the daemon and the widget.
- Protocol notes: UDP is preferred over Bluetooth when both are welcomed; a REJECT is only believed from an address the phone sent HELLO to.
- New website with live demos (
docs/).