Omahub
← All plugins
C

Eye Care Breaks

by cvatca

EyeLeo-style eye strain break reminders: a short recurring micro-break plus a longer, optionally skippable break that dims every screen.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
d7e289c
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
d7e289c
Reviewed
1 month ago

This plugin is a straightforward eye-break reminder: it runs timers, shows on-screen notifications/overlays, and toggles a small pause-state file under ~/.local/state. No install scripts, network activity, credential access, obfuscation, or destructive behavior were found, and the deterministic scan reported no issues.

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/cristian-v/omarchy-eye-care --enable
Productivity #system

omarchy-eye-care

An eye strain break reminder, built as a plugin for the Omarchy Quatro shell (Quickshell on Hyprland). Inspired by an old time favorite of mine EyeLeo

It runs two independent break cycles, both timed from shell start (or from the end of the last big break, which resets both):

  • Small break — every smallIntervalMinutes, a small reminder window pops up in the center of every screen for smallBreakSeconds, showing a short eye-exercise message.
  • Big break — every bigIntervalMinutes, every screen dims to a theme-tinted overlay with a "Time for a break" message for bigBreakMinutes. Optionally skippable with Esc or a click, per bigBreakSkippable.

The plugin also adds a bar widget with a status glyph (idle / running / break in progress) and a popup to pause/resume the cycle and view the current settings.

Screenshots

Bar widget Small break Big break
Bar widget popup Small break reminder Big break overlay

Layout

cvatca.eyecare/
├── manifest.json   # plugin id, entry points, bar widget registration
├── Service.qml      # timers, break windows (small + big), IPC handler
└── BarWidget.qml    # bar icon + settings/pause popup

This is a working copy for editing/version control. The live plugin that Omarchy's shell actually loads runs from ~/.config/omarchy/plugins/cvatca.eyecare/.

Installing / updating

Omarchy loads shell plugins from ~/.config/omarchy/plugins/<plugin-id>/. To deploy changes made here:

cp cvatca.eyecare/*.qml cvatca.eyecare/manifest.json \
   ~/.config/omarchy/plugins/cvatca.eyecare/

Then reload the Omarchy shell (or restart the session) to pick up changes.

Uninstalling

Remove the plugin's installed copy and its entry from shell.json:

rm -rf ~/.config/omarchy/plugins/cvatca.eyecare

Then remove the cvatca.eyecare entry from the plugins array (and, if present, from bar.layout) in ~/.config/omarchy/shell.json, and reload the Omarchy shell (or restart the session).

Configuration

Settings live in the plugin's entry inside the plugins array of ~/.config/omarchy/shell.json, matched by manifest id:

{
  "plugins": [
    {
      "id": "cvatca.eyecare",
      "smallIntervalMinutes": 10,
      "smallBreakSeconds": 30,
      "bigIntervalMinutes": 50,
      "bigBreakMinutes": 10,
      "bigBreakSkippable": true
    }
  ]
}
Key Default Description
smallIntervalMinutes 10 Minutes between small breaks
smallBreakSeconds 30 How long a small break window stays up
bigIntervalMinutes 50 Minutes between big breaks
bigBreakMinutes 10 How long the big break dims the screens
bigBreakSkippable true Whether Esc/click can skip the big break
bigMessage "Time for a break" Message shown during the big break
smallMessage — Fixed message for every small break, if set
smallMessages (built-in pool) Custom pool to pick a random small-break message from

To show the bar widget, add { "id": "cvatca.eyecare" } to a section of bar.layout in shell.json (e.g. right, alongside the other indicators).

IPC

The service registers an eyecare IPC target with:

  • status — JSON with pause state, active break, remaining seconds, and current config
  • pause / resume / toggle — control the break cycle
  • skip — skip the current big break (if skippable)
  • triggerSmall / triggerBig — manually fire a break, for testing

Example: qs ipc call eyecare status (or however the installed Omarchy IPC client is invoked).