Minimal break/pomodoro reminder tray app (C++ ImGui + GLFW + GTK tray)
  • C++ 74.3%
  • C 21%
  • Makefile 2.5%
  • Nix 2.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-03 02:13:47 -04:00
src fix CPU spin: frame-rate cap for visible render + zero-duration/NaN/warn-interval guards 2026-09-03 02:13:47 -04:00
third_party vendor imgui + tray as tracked files 2026-09-02 13:24:07 -04:00
.envrc seagrass: initial minimal Pomodoro + late-night-reminder tray app 2026-09-02 13:23:40 -04:00
.gitignore gitignore imgui.ini runtime artifact 2026-09-02 13:43:09 -04:00
flake.lock flake: fix shellHook (drop mesa.dev); add lockfile 2026-09-02 13:25:44 -04:00
flake.nix rename Pomodoro to work breaks in comments, flake description, and README 2026-09-02 15:44:24 -04:00
icon.png icon: placeholder SG monogram tray icon 2026-09-02 13:32:29 -04:00
Makefile notify: use GNOME libnotify for popups; show settings window on launch; inline logger 2026-09-02 13:42:49 -04:00
README.md rename Pomodoro to work breaks in comments, flake description, and README 2026-09-02 15:44:24 -04:00

seagrass

A minimal, low-resource work-breaks + late-night-reminder app that lives in the system tray. Written in C++ with Dear ImGui (stock look) and a zserge/tray icon.

Features

  • Work breaks — work → short break → … → long break, configurable (minutes and seconds).
  • Late-night warnings — after a configurable hour, nudges you to consider stopping, every N minutes.
  • System tray icon (GTK/appindicator on Linux).
  • GUI settings panel — every toggle and value below is adjustable there.
  • Break delivery: desktop notification or a fullscreen overlay window.
  • Custom message pools — separate pools for work vs late-night, each a list separated by three newlines (\n\n\n); a random entry is shown each time.
  • Fullscreen overlay is customizable (background color + messages).
  • Pause breaks for a configurable length (hours / minutes / seconds).
  • Idle render policy — sleeps instead of rendering when nothing changes (battery friendly).

Build

Dependencies are provided by the nix devShell:

nix develop        # enter the dev shell
make               # build -> ./seagrass
make run           # build + run

Without nix, install gcc, pkg-config, glfw3, glew, gtk3, libappindicator-gtk3 and run make.

Layout

  • src/main.cpp — everything (app, timers, UI, tray thread)
  • src/seagrass.h — settings + shared state
  • third_party/imgui/ — vendored Dear ImGui (pinned)
  • third_party/tray/ — vendored zserge/tray (pinned)
  • icon.pngplaceholder tray icon ("SG" monogram). Drop the real logo here (same filename, PNG) when you've designed it; the app loads it from cwd.
  • Makefile, flake.nix

Roadmap (later)

  • Cross-platform tray/notification backends (macOS / Windows)