Ostrich Riders
A theme-aware Joust-like game as a native Omarchy shell plugin.
It runs inside the long-lived omarchy-shell Quickshell process. Click
the bar icon (or bind a key) to open a fullscreen overlay. Stay above
your opponent, collect the eggs before they hatch, and do not fall in
the lava.

Sprites and sounds come from Ostrich Riders
(GPL-3.0-or-later). They are stored as grayscale sheets and colorized at
runtime from the shell's Color singleton, so the riders follow whatever
Omarchy theme you are on. Platforms and lava are drawn the same way.
Install
omarchy plugin add https://github.com/TomFaulkner/ostrich-riders.git --enable
From this checkout:
ln -sfn "$PWD" ~/.config/omarchy/plugins/io.github.tomfaulkner.ostrich-riders
omarchy plugin validate ~/.config/omarchy/plugins/io.github.tomfaulkner.ostrich-riders
omarchy plugin enable io.github.tomfaulkner.ostrich-riders --section right
Then click the horse in the bar, or:
omarchy-shell shell toggle io.github.tomfaulkner.ostrich-riders
A keybind, if you want one, in ~/.config/hypr/bindings.lua:
o.bind("SUPER + CTRL + J", "Ostrich Riders", "omarchy-shell shell toggle io.github.tomfaulkner.ostrich-riders")
Controls
- Left / Right,
A/D, orH/L: move - Space,
W, or Up: flap P: pauseM: muteT: toggle transparency- Esc: close
Remove
omarchy plugin disable io.github.tomfaulkner.ostrich-riders
omarchy plugin remove io.github.tomfaulkner.ostrich-riders --yes
High scores live in
${XDG_STATE_HOME:-~/.local/state}/ostrich-riders/state.json
and are not deleted with the plugin.
Development
manifest.json kinds, entry points, bar widget metadata
Game.js physics and rules (no QML types)
Levels.js Ostrich Riders standard maps, converted
OstrichRiders.qml overlay
JousterSprite.qml grayscale sheet + MultiEffect tint
BarWidget.qml bar icon
assets/ grayscale sprites and original WAVs
test/ node tests for the rules
node --test
omarchy plugin validate .
Plugin QML is cached; after editing QML run omarchy restart shell.