shelf/

Документация

Всего шесть команд. Если понадобилась седьмая, то скорее всего вам нужен не shelf.

Команды

shelf add URL [--tag ТЕГ] [--note ТЕКСТ]
Добавляет запись. Заголовок тянется со страницы если она открывается, иначе останется пустым.
shelf find СЛОВО [--tag ТЕГ]
Поиск по заголовкам, заметкам и адресам. Регистр не учитывается.
shelf list [--tag ТЕГ] [--limit N]
Последние записи, свежие сверху.
shelf open НОМЕР
Открывает ссылку через xdg-open, то есть в браузере по умолчанию.
shelf rm НОМЕР
Удаляет запись. Номера не переиспользуются.
shelf tags
Список тегов с количеством записей.

Где лежат данные

По умолчанию - ~/.local/share/shelf/shelf.txt. Путь переопределяется переменной окружения:

export SHELF_FILE=~/Documents/notes/bookmarks.txt

Каталог создаётся сам при первом запуске. Файл открывается только на дозапись, старые строки никогда не переписываются - так сложнее потерять данные.

Формат файла

241	2026-08-14T19:02:11Z	https://example.org/article	чтение,фс	Как устроен кэш в файловых системах

Поля разделены табуляцией: номер, время в UTC, адрес, теги через запятую, заголовок. Удалённая запись помечается минусом перед номером и никуда из файла не девается. Восстановить то что стёр не глядя, оказалось нужнее чем экономить байты.

Синхронизация

Своего механизма нет и не будет. Файл текстовый, так что достаточно положить каталог под git:

cd ~/.local/share/shelf
git init
git add shelf.txt
git commit -m "закладки"

При слиянии двух копий бывают конфликты по номерам. Это сознательный размен: с uuid файл стало бы невозможно читать глазами, а конфликт правится в редакторе за минуту.

Выход и коды возврата