Omahub
← All plugins
A

OmaMoodist

by aphelion-studios

A layered ambient-sound mixer for the bar: 84 recorded loops from the Moodist library, any number combined with their own volumes, saved presets, a binaural-beat generator and a sleep timer. Sound files download on first use.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
4c39c16
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

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

The plugin is a well-structured ambient-sound mixer that downloads audio files from a known upstream repository with SHA-256 verification, runs a background daemon with proper resource bounds, and performs no destructive or hidden actions. The deterministic scan found no issues, and the code shows careful handling of network, subprocess, and socket inputs. The only notable risks are the documented network download and unsandboxed execution, which are typical for Omarchy plugins and clearly disclosed.

  • The daemon listens on a unix socket without authentication, but it is user-scoped and only accepts a limited set of commands, with size and client limits enforced.
  • Sound files are downloaded from raw.githubusercontent.com on first use; however, each file is verified against a pinned SHA-256 hash from the shipped catalog, mitigating supply-chain tampering.
  • The plugin runs unsandboxed inside omarchy-shell and requires ffmpeg and python-numpy, which are documented prerequisites.
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/aphelion-studios/omamoodist --enable
Productivity #bar #quickshell #media

OmaMoodist

A layered ambient-sound mixer for the Omarchy bar.

84 recorded loops from the Moodist library — rain, nature, animals, places, machines, urban, transport, coloured noise — any number layered together, each with its own volume. Save mixes as presets. A binaural / isochronic beat generator and a sleep timer come along for the ride.

It is the sample-playing counterpart to Lull, which synthesises its sounds from nothing. Lull's rain never repeats; Moodist has a coffee shop, a train and a cat. Run both.

Each sound is decoded to full-quality stereo float32 — stereo recordings keep their stereo image, mono recordings stay mono, and nothing is resampled down from what the file holds.

Not affiliated with, sponsored by, or endorsed by Moodist. See THIRD_PARTY_NOTICES.md.

The OmaMoodist mixer

Install

Review the source, then:

omarchy plugin add https://github.com/aphelion-studios/omamoodist.git

Accept the prompt to enable the plugin. Install ffmpeg and python-numpy first (see Requirements) — the mixer will tell you in the panel if either is missing.

Remove

omarchy plugin remove io.github.aphelion-studios.omamoodist

That stops the widget and deletes the plugin. Your saved presets and any downloaded sound files are left behind deliberately; remove them yourself with:

rm -rf ~/.config/moodist ~/.local/share/omarchy-moodist

Any keybindings you added to ~/.config/hypr/bindings.lua are yours to delete — the plugin never edits that file.

Requirements

  • ffmpeg — decodes the audio. The mixer will say so in the panel if it is missing. Install it before enabling the plugin.
  • python-numpy — the mixer will not start without it.
  • PipeWire (pw-cat), which Omarchy already ships. paplay is a fallback.
  • Network, once per sound. See below.

Sound files and the network

The plugin ships a catalogue (data/sounds.json) but no audio. The first time you turn a sound on, its file is downloaded from raw.githubusercontent.com/remvze/moodist into ~/.local/share/omarchy-moodist/sounds/ and verified against a recorded SHA-256. After that it is on disk and nothing touches the network. The whole library is about 117 MB.

Pre-fetch from a terminal if you would rather not wait:

moodist fetch --all          # everything (~117 MB)
moodist fetch nature rain     # just those categories
moodist fetch cafe train      # individual sounds

Using it

The widget lands in the bar.

Action What it does
Left click Open the mixer
Right click Start / stop the whole mix
Middle click Next saved preset
Scroll Master volume

In the mixer, tap a tile to add that sound; tap again to drop it. An active tile shows its own volume as a fill bar — drag on it, scroll on it, or use the keyboard.

Keyboard

The panel is fully keyboard-driven (a superset of Lull's model).

Key Effect
j k / ↓ ↑ Move the cursor between rows and sections: transport → presets → tabs → grid → mix → sleep
h l / ← → Sideways on chip rows and tabs. On the grid: between tiles, or — when the tile is already active — nudge that sound's volume. On a slider: nudge it
Enter / Space Activate: play/stop, apply a preset, open the save field, switch tab, toggle a sound, pick a sleep length, toggle binaural
x Remove: delete the preset / drop the sound layer under the cursor
Esc Close
Tab / Shift+Tab Next / previous bar panel

Optional keybindings

Keybindings stay user-owned. Add these to ~/.config/hypr/bindings.lua:

o.bind("SUPER + N",       "Moodist: toggle", "omarchy-shell -q io.github.aphelion-studios.omamoodist toggle")
o.bind("SUPER + ALT + N", "Moodist mixer",   "omarchy shell -q shell toggle io.github.aphelion-studios.omamoodist")

IPC endpoints on io.github.aphelion-studios.omamoodist: mixer, toggle, clear, nextPreset, prevPreset, louder, quieter.

From a terminal

The engine is also a CLI, sharing state with the bar live in both directions:

moodist ls [category]              # list the catalogue
moodist add cafe 0.4               # add / re-level a sound
moodist rm cafe                    # remove one
moodist clear                      # drop every layer
moodist on | off | toggle
moodist master 0.6
moodist sleep 30                   # stop after 30 min (fades the last 90 s)
moodist binaural alpha | off       # named band, or a mode: binaural mode isochronic
moodist preset save focus | load focus | rm focus | preset ls
moodist status

It lives at ~/.config/omarchy/plugins/io.github.aphelion-studios.omamoodist/bin/moodist. Symlink it onto your PATH if you want the short command:

ln -s ~/.config/omarchy/plugins/io.github.aphelion-studios.omamoodist/bin/moodist ~/.local/bin/moodist

What it does on your system

  • Runs a background process (moodist daemon), started on demand, exiting with your session. It holds the audio stream so sound survives a shell reload. Roughly 1% of a core. Each active sound is decoded to full-quality stereo float32 and held in RAM — about 66 MB per three-minute loop — so a mix of a few layers is a few hundred MB while playing. Inactive sounds are cached up to MOODIST_CACHE_MB (default 512) and evicted oldest-first beyond that.
  • Executes ffmpeg to decode audio and pw-cat (or paplay) to play it.
  • Downloads sound files on first use from raw.githubusercontent.com, into ~/.local/share/omarchy-moodist/sounds/, verified by SHA-256. No other network access, no telemetry.
  • Writes ~/.config/moodist/config.json — your mix and saved presets.
  • Listens on a unix socket at $XDG_RUNTIME_DIR/moodist.sock (not a network socket), used by the bar widget and the CLI.
  • Never starts playing on its own. Playback state is deliberately not restored, so a reboot is silent.

Regenerating the catalogue

data/sounds.json is generated from the Moodist source by tools/build-catalog.py (needs network — it downloads every file once to hash it). Run it when Moodist adds or changes sounds upstream.

Security

This plugin runs unsandboxed inside omarchy-shell when enabled, starts a background Python process, and reaches the network to fetch sound files. Review its source and the behaviour described above before installing it.

License and credits

The plugin is MIT — see LICENSE.

  • Architecture derived from Lull by Wyatt Billingsley (MIT).
  • Sound catalogue and the flower mark derived from Moodist by MAZE / remvze (MIT).
  • The sound recordings are third-party assets under the Pixabay Content License or CC0. This repository ships none of them — the plugin fetches each file at runtime, directly from Moodist's repository, onto your machine.

Full copyright notices and license texts are in THIRD_PARTY_NOTICES.md.