A tiny reminder system for your terminal, built for Omarchy.
One-time, daily, and weekly reminders — with desktop notifications, a Waybar widget, and a launcher menu.
demo.webm
- Set it and forget it — one-time, daily, or weekly schedules
- Desktop notifications via mako with optional sound
- Waybar widget showing the next upcoming reminder
- Walker / Elephant launcher integration
- Interactive TUI powered by gum
- CLI mode for scripting and aliases
- systemd timer daemon — checks every second, stays out of the way
One-liner:
curl -sSL https://raw.githubusercontent.com/Ceereals/remindy/main/install.sh | bashFrom a local clone:
git clone https://github.com/Ceereals/remindy.git
cd remindy
./install.shThis copies all scripts to ~/.local/share/omarchy/bin/, creates data and config directories, and enables the systemd timer daemon.
Uninstall
# Remote
curl -sSL https://raw.githubusercontent.com/Ceereals/remindy/main/uninstall.sh | bash
# Local
./uninstall.shAdd --purge to also remove reminders, config, and sounds:
./uninstall.sh --purgeDependencies
All pre-installed on Omarchy:
| Dependency | Purpose |
|---|---|
jq |
JSON processing |
gum |
Interactive TUI |
flock (util-linux) |
File locking |
notify-send (libnotify) |
Desktop notifications |
paplay (pulseaudio-utils) |
Notification sounds |
systemctl |
Daemon management |
xxd / od |
ID generation |
GNU date |
Date arithmetic |
remindyOpens a gum-powered menu to add, list, or remove reminders.
Without arguments, remindy-add launches an interactive prompt. With arguments, it works as a CLI:
# Relative time
remindy-add "Standup call" in 30m
remindy-add "Deploy" in 1h30m
remindy-add "Vacation" in 2D
# Absolute time
remindy-add "Lunch" at 12:30
remindy-add "Meeting" at tomorrow 14:00
# Daily
remindy-add "Drink water" every day at 09:00
# Weekly
remindy-add "Weekly review" every monday at 10:00
remindy-add "Gym" every monday,wednesday,friday at 18:00remindy-list # Show all reminders (filterable list)
remindy-remove # Interactive multi-select picker
remindy-remove a1b2c3d4 # Remove by IDremindy-daemon enable # Create and start the systemd timer
remindy-daemon disable # Stop and remove itThe daemon runs remindy-check every second to fire notifications for due reminders.
remindy-nextReturns JSON for Waybar's custom module — shows the next upcoming reminder with a tooltip listing today's schedule.
| Format | Example | Description |
|---|---|---|
in <duration> |
in 30m, in 1h30m, in 2D |
Relative — from now |
at <time> |
at 14:30, at tomorrow 09:00 |
Absolute — bumps to tomorrow if past |
every day at <time> |
every day at 09:00 |
Daily recurring |
every <days> at <time> |
every monday,friday at 18:00 |
Weekly recurring |
Duration units: Y years, M months, D days, h hours, m minutes, s seconds.
Day names: monday/mon through sunday/sun — comma-separated for multiple days.
Config file: ~/.config/remindy/config
sound=true # Play sound on notification
sound_file="$HOME/.local/share/remindy/sounds/remindy.ogg" # Sound file path
cleanup_hours=24 # Auto-remove fired one-time reminders after N hours
notification_timeout=30000 # Notification display time (ms)
waybar_icon="" # Nerd Font glyph for Waybar widgetTip
Drop an .ogg file at the sound_file path to enable notification sounds.
Add the custom module to ~/.config/waybar/config.jsonc:
Then add "custom/remindy" to your modules list and append to ~/.config/waybar/style.css:
#custom-remindy {
padding: 0 8px;
}
#custom-remindy.has-reminder {
color: #f9e2af;
}
#custom-remindy.no-reminder {
color: #585b70;
font-size: 0;
}Note
Run omarchy-restart-waybar after editing Waybar config.
Add to ~/.config/mako/config:
[app-name=Remindy]
default-timeout=30000
border-color=#f9e2afCopy config/hypr-remindy.conf to ~/.config/hypr/conf.d/ or source it from your bindings:
bindd = SUPER, R, Reminders, exec, omarchy-launch-tui remindy
bindd = SUPER SHIFT, R, Add reminder, exec, omarchy-launch-tui remindy-add
To make remindy open as a floating, centered window, add to ~/.config/hypr/hyprland.conf:
windowrule = float on, match:class org.omarchy.remindy
windowrule = center on, match:class org.omarchy.remindy
windowrule = size 400 250, match:class org.omarchy.remindy
windowrule = float on, match:class org.omarchy.remindy-add
windowrule = center on, match:class org.omarchy.remindy-add
windowrule = size 500 350, match:class org.omarchy.remindy-add
Tip
omarchy-launch-tui sets the app-id to org.omarchy.<command>, which is what the window rules match against. It uses xdg-terminal-exec under the hood, so it works with any terminal (ghostty, kitty, alacritty). Font size cannot be overridden per-window — adjust the window size to fit your terminal's global font size.
Important
Check for conflicts with omarchy-menu-keybindings --print before adding.
Add the prefix to ~/.config/walker/config.toml so Walker can discover the elephant provider:
[[providers.prefixes]]
prefix = "?"
provider = "menus:remindy"Native Go provider plugin with quick-add syntax, fuzzy search, and state management.
Build and install:
cd config/elephant/remindy
make installThis detects your elephant version, clones matching source, builds the plugin, and installs it to ~/.config/elephant/providers/.
Quick-add syntax (type directly in elephant):
in 30m > meetingat 14:30 > standupevery day at 09:00 > coffeeevery mon,fri at 10:00 > review
After upgrading elephant:
cd config/elephant/remindy
make clean-elephant
make installReminders live in ~/.local/share/remindy/reminders.json:
{
"reminders": [
{
"id": "a1b2c3d4",
"text": "Standup call",
"type": "once",
"time": "2025-02-12T14:30:00",
"created": "2025-02-12T10:00:00",
"notified": false
},
{
"id": "e5f6g7h8",
"text": "Drink water",
"type": "daily",
"time": "09:00",
"created": "2025-02-12T10:00:00",
"last_notified": "2025-02-12"
},
{
"id": "i9j0k1l2",
"text": "Weekly review",
"type": "weekly",
"time": "10:00",
"days": [1],
"created": "2025-02-12T10:00:00",
"last_notified": "2025-02-10"
}
]
}If the file gets corrupted:
echo '{"reminders":[]}' > ~/.local/share/remindy/reminders.jsonremindy/
├── remindy # Entry point — gum menu
├── remindy-add # Add reminder (CLI + interactive)
├── remindy-list # List reminders (filterable list)
├── remindy-remove # Remove reminder (by ID or multi-select)
├── remindy-check # Daemon — check & notify
├── remindy-next # Waybar JSON output
├── remindy-daemon # Enable/disable systemd timer
├── remindy-common # Shared library (sourced by all)
├── config/
│ ├── config.example # Default config template
│ ├── hypr-remindy.conf # Hyprland keybindings snippet
│ ├── waybar-module.jsonc # Waybar module snippet
│ ├── waybar-style.css # Waybar CSS snippet
│ ├── mako-rule.conf # Mako notification rule
│ ├── walker/
│ │ └── walker-prefix.toml # Walker prefix config
│ └── elephant/
│ ├── remindy.toml # Elephant provider config
│ └── remindy/ # Native Go plugin source
│ ├── setup.go
│ ├── makefile
│ ├── go.mod
│ └── go.sum
├── mise.toml
├── install.sh
├── uninstall.sh
└── LICENSE