Omahub
← All plugins
O

Oma-Play

by oppenheimer-rick

Play fun games in between intense work hours. Helps with relaxation and clearing mental fog — Snow Run (text-free icons), racer, endless runner, snake, breakout, asteroids, wandering wraith and sandbox simulation, all in your Omarchy bar. Idle-safe: exits on close, pauses Dino/SnowRun.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
3d124e9
Scanned
1 month ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs external_hosts README.md:45

    Downloads or connects to an external HTTP(S) host.

    git clone https://github.com/oppenheimer-rick/omarchy-racer.git Oma-play

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
3d124e9
Reviewed
1 month ago

The plugin is a QML-based arcade widget with pure JavaScript game engines. No network access, file system manipulation, or external process spawning was found in the sampled code. The only flagged item is a documentation link in the README, which is not executed by the plugin.

  • The README contains a git clone command pointing to an external host, but this is documentation only and not part of the plugin's runtime behavior.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/oppenheimer-rick/omarchy-racer --enable
System #quickshell #ai

Oma-Play

🕹️ Play fun games in between intense work hours. Helps with relaxation and clearing mental fog.

<p align="center"> <video src="docs/videos/oma-play-demo.mp4" width="100%" controls autoplay loop muted playsinline poster="preview.png"></video> <br/> <em>▶️ <strong>Full demo — 2 min 19s</strong> — 720p60 showcase of all 8 native games • <a href="docs/videos/oma-play-demo.mp4">download mp4 (6.2 MB)</a> • <a href="preview.png">screenshot</a></em> </p>

A decompression arcade for software developers — instant, zero-dependency games that live in your Omarchy status bar. Click the bar icon, play for two minutes, close it, get back to work. No windows, no launchers, no waiting.

Genres inside: Snow Run (8-level text-free platformer, springs/ice/moving platforms), racer (OutRun 3D), endless runner (Chrome Dino), snake, breakout (brick-breaker), asteroids (vector shooter), wandering wraith (cave flight) and sandbox simulation (Falling Sand). All games are native QML + pure JavaScript — idle-safe (exit on close, Dino/SnowRun pausable), no web ports, no emulators, no external processes.

<span style="color: #888888;">📖 Read the Full Engineering & Architecture Documentation →</span>


<p align="center"> <img src="preview.png" alt="Oma-Play preview — accurate screenshot from /home/dex/Pictures/oma-play.png" width="100%" /> <br/> <em>Accurate 1920×1080 screenshot — source: <code>/home/dex/Pictures/oma-play.png</code> (copied to <code>preview.png</code> & <code>docs/oma-play.png</code>). Legacy video <code>docs/videos/intro-readme.mp4</code> (22 MB) is HexGL-era and kept for archive.</em> </p>

📦 Install

Repo vs Plugin vs Folder — no confusion:

  • GitHub repo name: omarchy-racer (https://github.com/oppenheimer-rick/omarchy-racer) — legacy name, do not rename on GitHub unless you create a new repo.
  • Plugin name/id inside: Oma-Play (io.github.oppenheimer-rick.oma-play in manifest.json).
  • Local folder after clone: you may keep it as Oma-play (/home/dex/bug_hunt/Oma-play) — the name on disk does not matter, the id inside manifest.json does.

One-line install — this is the ONLY working command (tested):

omarchy plugin add https://github.com/oppenheimer-rick/omarchy-racer.git --enable

Omarchy clones omarchy-racer, validates manifest.json (id: io.github.oppenheimer-rick.oma-play) and enables Oma-Play instantly. There is no https://github.com/oppenheimer-rick/oma-play.git — that URL 404s.

Manual clone + validate (exactly as the marketplace does):

git clone https://github.com/oppenheimer-rick/omarchy-racer.git Oma-play
cd Oma-play
omarchy plugin validate   # or: omarchy plugin validate .
# alternative marketplace helpers:
# omarchy plugin clone https://github.com/oppenheimer-rick/omarchy-racer.git
# omarchy plugin validate ./omarchy-racer  # path must match cloned dir

Manual enable / disable (after install):

omarchy plugin enable io.github.oppenheimer-rick.oma-play
omarchy plugin disable io.github.oppenheimer-rick.oma-play
omarchy plugin list | grep oma-play

🗑️ Removal

Safe removal — does not overwrite user configuration:

omarchy plugin disable io.github.oppenheimer-rick.oma-play
omarchy plugin remove io.github.oppenheimer-rick.oma-play

No user shell.json keys are overwritten without explicit consent.


🧘 Philosophy: The Decompression Arcade

Deep work is a muscle, and recovery is part of the training. Oma-Play is designed around the shortest possible path from "I need a break" to "I'm playing."

  • Zero latency — native QML games are pure JavaScript; the panel opens instantly.
  • Zero dependencies — native games are pure QML + vanilla JS; web ports run from a tiny local static server spawned on demand. No Python, no WASM runtime.
  • Zero flicker, unified window — all games share the same card ratio (420×340 logical, streamed at 840×680 @60fps). Native and web no longer jump between 16:9 and 4:3 — one window, one aspect, one smooth Image buffer.
  • Zero clutter — Tab cycles instant games, L opens the full library. ESC closes. F11 toggles fullscreen.

🕹️ Included Games & Toys

Native — instant play, cycle with Tab / G

# Title Genre Controls
1 OutRun 3D Road Racer Racer — pseudo-3D procedural road, hills, traffic, parallax ↑/W accelerate, ←/→ steer, P pause, R new track
2 Chrome Dino Runner Endless runner / Platformer — authentic physics SPACE/↑ jump, ↓ duck, P pause
3 Snake Arcade / Snake — grid court, accelerating speed ←→↑↓/WASD steer, P pause
4 Snow Run Platformer — 8-level, text-free HUD (dots + coin pips + hearts), springs/ice/moving platforms/breakables, wall-jump, Frost Caverns & Windy Peaks ←→ move, SPACE jump, P pause, R restart, stomp foes
5 Breakout Breakout / Brick-breaker — paddle angle control ←→ move, SPACE launch, P pause
6 Asteroids Shooter / Vector — rotate/thrust/shoot, splitting rocks ←→ rotate, ↑ thrust, SPACE shoot, P pause
7 Wandering Wraith Cave flight — hold to rise, thread luminous gates ↑/SPACE hold to rise, R restart, P pause
8 Falling Sand Sandbox simulation / Zen toy — sand, water, acid 1/2/3/4 material, mouse paint, C clear

Library — press L to open the Arcade Library (see Controls below)

Every title in the library is a native QML game — instant play, zero dependencies:

Title Kind Source
(native entries) QML native OutRun Racer, Chrome Dino, Snake, Falling Sand, Snow Run, Breakout, Asteroids — instant play

Web games removed: All bundled web ports (HexGL, Pac-Man, Hextris, 2048, Mario, Floppy Bird, DOOM, console-ROM emulation via EmulatorJS, …) were removed by maintainer decision. The plugin is now 100% native QML — it spawns no servers, browsers or external processes. The racer is the default game on panel open.


🎮 Controls — Complete Guide

🔄 Global (always available)

Key Action
TAB / G Cycle native games — racer → dino → snake → sand → snowrun → breakout → asteroids → wraith → back to racer. Instant, no load. Idle-safe: all exit on close; Dino/SnowRun pausable.
L Open / close Library — works from any game.
F11 Toggle Fullscreen (compact 420×340 card ↔ full display)
ESC Close popup (or if library/search is open, close that layer first)
R Restart current QML game — resets score/level instantly. Also R in Falling Sand triggers funPreset(), in Breakout/Asteroids/SnowRun restarts the level.

📚 Library Menu — How to Open & Use

  1. Open: With the Oma-Play panel open (click Oma-Play icon in bar), press L. The CRT-styled ▓▒░ ARCADE LIBRARY ░▒▓ overlay covers the game canvas.
  2. Browse: ↑ / ↓ or j / k move the yellow ▶ highlight. Enter / Space launches the highlighted title.
  3. Search: Press / to focus the search box, type (e.g., snow, break), live-filter narrows the list. Enter launches the top hit. Esc clears focus back to the list.
  4. Launch behaviour: Native (QML badge) — instantly swaps currentGame. No servers or browsers are ever spawned.
  5. Close library: Press L again or Esc (if not typing). Mouse click on a row also launches.
  6. Counts: Header shows e.g., 7 GAMES ▸ L=CLOSE (7 natives).

🕹️ Per-Game Keys (while NOT in library)

Game Keys Notes
OutRun Racer (default on open) ↑/W accelerate, ↓/S brake, ←→/A/D steer, P pause, R new random track Procedural hills/curves; off-road slows you
Chrome Dino SPACE/↑/W/Click jump/start, ↓/S duck, P pause, R restart Hold duck to stay low
Snake ←→↑↓/WASD steer (also starts), P pause, R restart Speed ramps per fruit
Falling Sand 1 Sand, 2 Water, 3 Wall, 4 Acid, Mouse paint, C clear, P pause, R fun preset R builds demo piles
Snow Run ←→/A/D move, SPACE/↑/W jump, P pause, R restart, SPACE next level (icon) Text-free HUD dots/pips; springs *, ice ~, moving M, breakable ?; wall-jump, Frost Caverns & Windy Peaks
Breakout ←→/A/D move paddle (or mouse), SPACE launch/next level, P pause, R restart Paddle hit position controls angle; pause overlay
Asteroids ←→/A/D rotate, ↑/W thrust, SPACE shoot, P pause, R restart Thrust flame visible when holding; pause overlay
Wandering Wraith ↑/SPACE/W hold to rise, release to sink, R restart, P pause Thread gates; glow trail; idle-safe

Tip: Tab while L library is closed cycles only QML natives — fastest decompression.


🔧 Technical

All games are native QML Canvas + pure JavaScript models running inside the quickshell panel — no Chromium, no local HTTP server, no external processes of any kind.

The legacy web-port tooling (games/, WebEmbedView.qml, scripts/web-stream.js, EmulatorJS player) was removed by maintainer decision; earlier native QML games remain archived in _later_work/ for isolated iteration:

cp _later_work/qml_games/*.qml .
cp _later_work/qml_games/*.js .

⚙️ Configuration

In ~/.config/omarchy/shell.json:

"right": [
  { "id": "io.github.oppenheimer-rick.oma-play" }
]

📄 Publish Your Plugin — Marketplace Checklist

This repository is ready for Omarchy Plugin Marketplace submission:

  1. Prepare the repository

    • Public GitHub repository
    • Valid manifest.json in repository root (omarchy plugin validate passes)
    • README.md with install & removal instructions
    • LICENSE (MIT) and preview (preview.png)
    • Safe install and removal (no config overwrite)
  2. Add a manifest — manifest.json:

    {
      "schemaVersion": 1,
      "id": "io.github.oppenheimer-rick.oma-play",
      "name": "Oma-Play",
      "version": "1.1.0",
        "description": "Play fun games in between intense work hours. Helps with relaxation and clearing mental fog — Snow Run (8-level text-free), racer, endless runner, snake, breakout, asteroids, wandering wraith and sandbox simulation, all in your Omarchy bar. Idle-safe."
    }
    

    Validate: omarchy plugin validate (inside the cloned dir) — not oma-play.git.

  3. Submit — open the issue form with repository URL, category Games, tags (e.g., games, arcade, fun).

Note: Marketplace validates listings, not plugin security. Plugins run unsandboxed — you remain responsible for code, assets, documentation and license.


🛡️ Security Notice

Third-party unsandboxed code. Automated checks are limited and are not a security audit. Verify the current commit matches the reviewed commit, inspect source and capabilities, and report suspicious plugins ASAP.

Check Status
Compatibility Passed
Branch main
Dependencies 0 external binaries for native; headless Chromium (chromium) + python3 for web streams only on demand
License MIT

📄 License

MIT License © 2026 oppenheimer-rick — see LICENSE.

🙏 Credits

  • Jake Gordon — javascript-racer, javascript-snakes, javascript-breakout (MIT)
  • Kenney.nl — Pixel Platformer art (CC0)