Skip to content

Releases: gladimdim/omakey-omarchy-plugin

Omakey 1.2.1

Choose a tag to compare

@gladimdim gladimdim released this 09 Oct 08:15

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

  • omakeyd types only while your session is in front at the seat. The virtual keyboard and mouse join seat0, 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/uinput access away, but the device omakeyd already had open kept working.
  • omakeyd now follows logind's seat0 ActiveSession and 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, and omakeyd status shows Keyboard: away.
  • Locking your own screen is unchanged: your session stays in front.

Also

  • One-command install on Omarchy; install.sh installs 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.sh

Upgrading 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 | bash

It 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

Choose a tag to compare

@gladimdim gladimdim released this 08 Oct 10:02

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.sh

Then 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 | bash

It 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. omakeyd uses wl-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 static omakeyd-x86_64-linux-musl, its .sha256 and 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.sh hands 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

Choose a tag to compare

@gladimdim gladimdim released this 07 Oct 20:20

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.sh

Then 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, omakeyd switches only its own omakey-keyboard device 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.toml colours), read from ~/.local/state/omarchy/current every 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.md documents them.
  • Website: a live demo of portrait mode, and pages that work on phones.

Omakey 1.0.0

Choose a tag to compare

@gladimdim gladimdim released this 07 Oct 08:53

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.sh

Then 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. omakeyd creates "Omakey Keyboard" and "Omakey Mouse" with uinput, 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/).