Omahub
← All plugins
P

Blackjack

by Pier Silvio Lucchese

Play blackjack from the bar

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
0fdb6a7
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

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

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
0fdb6a7
Reviewed
1 month ago

This is a straightforward blackjack bar-widget with no network access, no shell interpolation, and no writes outside the user's local state directory. The only external command is a safe `mkdir -p` for the plugin's own state file, and the deterministic scan found no issues. No dangerous or malicious behavior was found.

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/PierSilvioLucchese/omarchy-blackjack --enable
Widgets #bar #games

Blackjack

A hand of blackjack in the Omarchy bar. Click the ♠ and play. No chips, no betting, no running out — just deal, play, deal again. The popup sits under the bar like the network and audio panels, and follows your theme.

Your move Round over
the table mid-hand a finished round

Install

omarchy plugin add https://github.com/PierSilvioLucchese/omarchy-blackjack.git --enable

That puts a ♠ button on the right of the bar. Move it wherever you like:

omarchy bar move lucchese.blackjack --section center

To open it from a key instead, add to ~/.config/hypr/bindings.conf:

bindd = SUPER, B, Blackjack, exec, omarchy-shell lucchese.blackjack toggle

Removing it

Take the button off the bar but keep the plugin installed:

omarchy plugin disable lucchese.blackjack

Or remove it altogether:

omarchy plugin remove lucchese.blackjack
rm -rf ~/.local/state/omarchy/lucchese.blackjack   # the saved record

The plugin writes nothing else. It does not touch your Hyprland config, and the only line it adds to ~/.config/omarchy/shell.json is its own bar entry, put there by omarchy plugin enable and taken away by disable.

Playing

Key What it does
enter / space deal, or play the button the cursor is on
h hit
s stand
d double — one card, then the hand is over
p split
n deal
← → move the cursor between buttons
shift+r clear the record
esc close

Only the legal moves are shown, and the line along the bottom lists the shortcuts that would currently do something — so there is nothing to memorise. Illegal moves are ignored.

Your win/loss/push record is kept in ~/.local/state/omarchy/lucchese.blackjack/state.json and survives a shell restart.

House rules

  • Six-deck shoe, reshuffled below 25% penetration
  • Dealer stands on soft 17 and peeks for blackjack
  • Double on any two cards
  • Split up to four hands, on any two cards of equal value
  • Split aces draw one card each; twenty-one after a split is a plain win
  • Blackjack is called out as its own result, but with no money on the table it counts as one win like any other
  • No insurance, no surrender

Requirements

Omarchy 4. Nothing else — no network, no external commands, no data leaves the machine.

Hacking

The rules are plain JavaScript in Game.js, with no Qt dependency, so they run under node — and so do the manifest checks, which mirror what omarchy plugin validate enforces. Both run in CI on every push:

node --test 'test/*.test.js'

Panel.qml only draws state and forwards input; it never decides a rule. If a total looks wrong, Game.js is the only file to read.

Two things worth knowing if you fork this:

  • Game.js hands out a fresh copy of its state on every view() call. That is deliberate. QML compares a property var by reference, so an array mutated in place reads as unchanged and the table silently keeps drawing the previous cards.
  • Keys are handled directly instead of through PanelKeyCatcher, because that helper claims h/j/k/l for cursor movement before the plugin sees them — and h belongs to hit.

License

MIT