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)

а чего пакеты под все архитектуры не собираешь? настрой автоматику

может кому-то будет полезно

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

Сейчас в релизах собираются x86_64-unknown-linux-musl и aarch64-unknown-linux-musl – этого хватает на типичный десктоп/ноут и часть ARM-плат.

Остальные таргеты (armv7, riscv64 и т.д.) и пакеты под дистрибутивы пока не делал: для первой версии ограничил CI тем, чем сам пользуюсь. Автосборку через GitHub Actions на теги уже завязал; расширить матрицу архитектур – разумный следующий шаг, если будет спрос или PR.

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

А какие еще есть живые архитектуры, кроме этих двух?)

RISC-V всё еще экзотика, 32-битное всё сдохло.

wandrien ★★★★
()

Написано на Rust

Нужно в теги, как и «от автора». На них и подписываются, и отписываются.

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

Сделано: добавил «rust» и «от автора».

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

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

А потом появилась нейросеть и дала кнопку «Сделать хорошо».

steemandlinux ★★★★★
()

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

вот почему нельзя честно написать «захотелось повайбкодить»? Вайбкодеры вечно выдумывают какие-то отговорки. Есть крон и сустемд таймеры, есть всякие zsh calendar, в конце концов можно просто открыть алису на смартфоне и голосом поставить там таймер. Но нет, мы получаем очередное ненужно на расте.

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

во !! онное самое. долго вспоминал сию команду… :)

pfg ★★★★★
()

Недавно тоже захотелось чего-то подобного.

Нашёл для себя KAlarm. То, что нужно - ко времени делает напоминалки, сами напоминалки вылезают отдельным окном. Красота!

bbc69
()

А я просто будильник завожу в телефоне

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

at не всегда про desktop-notification и простой синтаксис «+25m текст» в одной строке

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

да, если нужен GUI в KDE – хороший вариант; rmd – про CLI и минимальный scope

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

Вот спросишь на форуме как сделать какую-то небольшую задачу - и никто не ответит внятно. Напишешь свой велосипед - и тебе скажут «так это было сделано ещё в 7-й редакции Unix (V7), выпущенной в 1979 году!» :)

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

:) Жиза. Я для этого ИИшку мучал. Не с первого раза, но нашёл.

bbc69
()
Ответ на: комментарий от anonymous_sama

Я просто Алису для такого использую

Ты кавычки забыл. Потому как Алису по другому надо использовать :)

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