LINUX.ORG.RU

Утилита rmd — от костыля sleep && notify-send к CLI-напоминалке для Linux

 , , , ,


1

2

Раньше я делал так:

(sleep 25m && notify-send "Пора выпить кофе") &

Пока терминал открыт и машина не ушла в сон — такая конструкция работает. Закрыл сессию, перезагрузился, ноутбук заснул на час — таймер исчез. Напоминание о звонке или о еде на плите в такой схеме слишком хрупкое.

Мне были нужны одноразовые напоминания, которые:

  • не пропадают после перезагрузки и спящего режима;
  • гарантированно привлекают внимание (через уведомления рабочего стола);
  • не тянут за собой канбан, проекты и «когда-нибудь».

Так появилась rmd — лёгкая CLI-утилита с фоновым демоном для Linux.

Интерфейс

Примеры вызова:

rmd +25m Пора выпить кофе
rmd tomorrow 15:00 Созвон по релизу
rmd fri 22:00 Заткнись и иди спать!
rmd 2026-12-01 10:00 Продление домена
rmd

Без аргументов rmd выводит список ближайших активных напоминаний. Поддерживаются относительные интервалы, дни недели и точные даты. Подробнее о синтаксисе времени можно почитать в документации.

Пример списка уведомлений

Просто напоминалка

Это не менеджер задач. Нет повторяющихся проектов, досок, списков «прочитать потом». Уведомления задуманы только для событий с дедлайном по времени: еда на плите, созвон через 10 минут, «выйти из дома».

Если нужен todo с проектами — это другой класс инструментов. У rmd намеренно более узкая специализация.

От sleep && notify-send отличается наличием:

  • фонового демона: systemd user service или автозапуск из CLI;
  • сохранения состояния: ~/.local/state/rmd/reminders.json — напоминания остаются после перезагрузки;
  • обработки пропущенных срабатываений: если машина была выключена, приходит одно сгруппированное уведомление.

Стек: Linux + notification daemon. Написано на Rust, без тяжёлого runtime вокруг одной утилиты.

Внутреннее устройство

CLI общается с демоном по Unix-сокету. Демон держит таймеры в памяти и атомарно пишет JSON на диск. В момент срабатывания уходит уведомление по D-Bus. При старте демон проверяет, не было ли пропусков, пока система была выключена.

Требования:

  • Linux (x86_64 или aarch64)
  • Демон уведомлений по D-Bus

macOS и Windows не поддерживаются.

Установка:

  • Исходники и описание: github/rmd
  • Бинарники: github/releases
  • Из crates.io: cargo install rmd-cli (бинарь называется rmd)

Альтернативы

Инструменты вроде at, cron, systemd timers и полноценных todo-менеджеров решают смежные задачи. Мне не хватало инструмента под узкий сценарий: ввёл время и текст в одной строке — получил гарантированное уведомление, которое не пропадёт после перезагрузки. Без аккаунта в облаке и без ежедневного ритуала «разобрать входящие».

Если вы тоже устали от sleep && notify-send и не хотите ради чайника заводить пятый таск-трекер — имеет смысл попробовать.

>>> Репозиторий на GitHub



Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 5)

[Feature request]
Параллельно бы ещё на смартфон сообщение кинуть.
Т.е. приспособить ещё некий «run=/usr/local/bin/send_to_messenger $msg»
или сменяемый «Демон уведомлений по D-Bus» , типа «dbus-address=XXXXX.YYYYY $msg»

Atlant ★★★★★
()
Ответ на: комментарий от Atlant

Делает одно дело, но хорошо. Всё как в этом нашем юниксе деды завещали.

ugoday ★★★★★
()
Ответ на: комментарий от Atlant

Спасибо за интересную идею! Возможность дёрнуть сторонний скрипт в момент срабатывания таймера – хорошая точка расширения. Зафиксировал ваше предложение для оценки на свежую голову.

Тут главное не перешагнуть грань и не увести простую напоминалку в сторону упомянутых здесь at и systemd-run. Надо подумать над реализацией, чтобы не сломать фокус инструмента.

bunch
() автор топика
Ответ на: комментарий от Atlant

Кстати, про второе предложение: смена адреса D-Bus с архитектурной точки зрения выглядит даже безопаснее. Это сохраняет чистый фокус утилиты и не усложняет rmd управлением сторонними процессами.

bunch
() автор топика
Ответ на: комментарий от mrak018

Спасибо за обратную связь! Приятно читать

bunch
() автор топика

Давно для такого телегу использую, увижу напоминание не зависимо от того, за компьютером я или отошел с телефоном.

swelf
()
Ответ на: комментарий от Atlant

Добавил возможность указать свой D-Bus destination: rmd config dbus-service ...

Также появилась поддержка диапазонов для просмотра и удаления напоминаний: rmd 3-7, rmd rm h3:h7 (с раздлителями : или -).

Подробности в релизе 0.4.0

bunch
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.