From bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9 Mon Sep 17 00:00:00 2001 From: Alexander Neonxp Kiryukhin Date: Mon, 2 Feb 2026 00:35:54 +0300 Subject: =?UTF-8?q?=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=B0=D1=8F=20=D1=87?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=BA=D0=B0=20=D0=B1=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/posts/2025-11-23-org/index.md | 253 ++++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 content/posts/2025-11-23-org/index.md (limited to 'content/posts/2025-11-23-org') diff --git a/content/posts/2025-11-23-org/index.md b/content/posts/2025-11-23-org/index.md new file mode 100644 index 0000000..481b9f6 --- /dev/null +++ b/content/posts/2025-11-23-org/index.md @@ -0,0 +1,253 @@ +--- +comments: true +date: "2025-11-23" +tags: + - гиковское + - моё +title: Личный органайзер +--- + +Пришло в голову, почему бы не рассказать как у меня организован личный +органайзер. + +Для начала стоит очертить то, какие у меня потребности от органайзера: + +- Вести список ежедневных, еженедельных, ежегодных, а так же, одноразовых + событий +- Вести быстрый список ближайших задач (ToDo список). Под быстрым, я + подразумеваю то, что внести новый пункт в него я могу не дольше, чем за пару + десятков секунд. Если это будет требовать бо́льших усилий, то я себя знаю: я + это быстро заброшу, т.к. это станет для меня не помощью, а повинностью. +- Место для быстрых заметок в формате «бесконечного текстовика». Аналогично, + это должно быть под рукой в быстром доступе. Obsidian себя показал _слишком_ + медленным. Настолько, что мне стало проще запоминать, чем испытывать свои + нервы каждый раз, наблюдая его длительный запуск. Да, звучит на первый взгляд + глупо, но у меня так: запуск Obsidian длительностью в десяток секунд + окончательно отбил у меня желание вовсе запускать его. + +Что же делать? Искать идеальный для себя инструмент? Идеального для _себя_ +точно не найду. Написать самому, ведь «яжпрограммист»? Можно, но откровенно +жаль время. Что же делать-то? + + + +К счастью, я вспомнил что у меня же unix-подобная операционная система, в +поставке которой огромное количество небольших программ, которые прекрасно +выполняют какую-то небольшую функцию и при этом отлично стыкуются друг с другом +через стандартный текстовый поток! Грешно не воспользоваться наработками +гораздо более умных, чем я, программистов! + +# ToDo + +Проще всего оказалось с этим. Просто поставил себе +[todo.txt](https://github.com/todotxt/todo.txt-cli). Хоть я и говорил выше, что +идеального инструмента я не найду, но я тогда немного слукавил. Для ToDo этот +инструмент _почти_ идеален. Всё что мне надо, кроме одного нюанса, там есть. А +вот тот самый нюанс, я когда-нибудь исправлю. Возможно. + +Для удобства я себе в zsh добавил следующие alias: + +```zsh +alias t=todo.sh +``` + +Таким образом, чтобы добавить задачку я просто пишу `t add текст задачи`. Куда +уж проще и быстрее? + +# Календарь + +Идею организации календаря я подсмотрел в программе calendar, которая идёт в +комплекте с BSD системами, но не идёт в конкретно моей ОС. Да, наверняка, можно +и к себе притащить, но я из спортивного интереса хотел решить задачу +максимально встроенными и стандартными инструментами. + +Лонг стори шорт: + +~/calendar.txt + +``` +01-28 ДР Лены +10-18 ДР Мамы +05-24 Годовщина свадьбы +11-23 Ежегодное событие + +Пн 15 Еженедельный мит +Пн 20-21 Чтение + +Вт 13 Архком +Вт 15 Грумминг +Вт 20-21 Чтение + +Ср 13 Техразвитие +Ср 20-21 Чтение + +Чт 15 Грумминг +Чт 20-21 Чтение + +Пт 20-21 Чтение +Сб 20-21 Чтение +Вс 20-21 Чтение + +2025-11-19 10 клуб амбассадоров +2025-11-17 16:30-17:30 Встреча c 16:30 до 17:30 +2025-11-24 10:15 Golang Техком +2025-11-24 11-12 Анализ логики состояния +2025-11-23 21 Написать в блог о своём календаре +``` + +Пояснения: + +- `mm-dd\t\tСобытие` - некие ежегодные события, у которых указаны только месяц + и день месяца +- `Пн\tвремя\tСобытие` - еженедельное событие. Про формат времени - будет ниже. +- `yyyy-mm-dd\tвремя\tсобытие` - разовые события в конкретную дату и время. + +Формат времени: его я подсмотрел у формата +[calendar.txt](https://terokarvinen.com/2021/calendar-txt/), то есть, запись +формата `15` - это означает что событие начнётся в 15 часов, `20-21` - событие +длится с 20 до 21 часа вечера. С минутами, которые не обязательны, думаю, всё +понятно из примера. + +Формат сам по себе абсолютно не жёсткий, допускает много вольностей. Главное, +всё сводится к тому, что у него 1 строка - 1 событие и сама строка состоит из 3 +полей разделённых табом (в формате calendar.txt предлагается точка, для меня +это показалось неприемлемым, т.к. я записываю в события и ссылки на созвоны, а +ссылка включает в себя минимум одну точку) + +В принципе, тут уже можно было бы и остановиться и жить с просто текстовиком, +но так было бы не интересно. Я написал на языке оболочки несколько полезных +скриптов. Они настолько маленькие, что я просто приведу их здесь: + +~/.local/bin/calendar + +```sh +#! /bin/sh + +cur=${2:-`date +%Y-%m-%d`} +file=${1:-~/calendar.txt} +grep \ + -e "^$(date +%Y-%m-%d -d $cur)"\ + -e "^$(date +%a -d $cur)"\ + -e "^$(date +%m-%d -d $cur)" $file |\ +sort -n -k 2 |\ +cut -f2- | fold -w 80 -s +``` + +Собственно, это главный скрипт, который собирает для текущей (или явно +указанной) даты все релевантные события, сортирует их по времени и выводит +форматированным списком. Примерно так: + +``` +% calendar + Ежегодное событие +20-21 Чтение +21 Написать в блог о своём календаре +``` + +На этом я не остановился, но сделал ещё парочку вспомогательных скриптов, +использующих его за основу: + +~/.local/bin/today + +```sh +#!/bin/sh +echo "Календарь:" +echo -e ''$_{1..80}'\b-' +cal +echo -e ''$_{1..80}'\b-' +echo "События дня:" +echo -e ''$_{1..80}'\b-' + +calendar + +echo -e ''$_{1..80}'\b-' + +echo "ToDo:" +todo.sh ls +``` + +Делает по сути тоже самое что и просто calendar, только ещё и рисует красивый +графический календарик и показывает список ToDo задач. + +~/.local/bin/week + +```sh +#!/bin/sh + +echo "На 7 дней:" +for i in {0..6} +do + d=`date +%Y-%m-%d -d "+ $i day"` + echo -e ''$_{1..80}'\b-' + echo $d + echo -e ''$_{1..80}'\b-' + calendar ~/calendar.txt $d +done +echo -e ''$_{1..80}'\b-' +echo "ToDo:" +todo.sh ls +``` + +Выводит план на 7 дней вперёд. + +## Редактирование календаря + +Здесь тоже предельно просто: добавил в zshrc такой алиас: + +```zsh +alias ev='nvim +/`date +"%Y-%m-%d"` ~/calendar.txt' +``` + +и просто по команде `ev` открывается neovim и готов принимать новое событие. +Хотя это и не самая частая операция. + +# Быстрые заметки + +Тут тоже всё просто: + +```zsh +alias qn='nvim "+normal G" ~/quicknote.txt' +``` + +Соответственно, по команде `qn` открывается мой текстовик для заметок на самой +последней строке. Можно дописать или поискать что-то с конца. На самом деле +очень удобно! + +# Мобильный? + +Я бы хотел все эти мои текстовики иметь и на мобильном устройстве. Даже не для +редактирования, а например, свериться со списком задач / событий. + +Тут чуть сложнее. Для синхронизации с мобильным устройством я сделал такой финт: + +1. Все текстовики у меня лежат не в домашней директории, на самом деле, а в + некой директории из которой симлинками уже прокинуты в корень домашней + директории. +2. Директория эта добавлена в Syncthing который синхронизирует её с NAS и + мобильным устройством. +3. На мобильном устройстве стоит замечательная программа + [Markor](https://f-droid.org/packages/net.gsantner.markor/) которая нативно + понимает формат todo.txt, ну и достаточно неплохо позволяет смотреть + редактировать файлы calendar.txt и quicknote.txt. + +# Чтобы хотелось ещё? + +- Как я упоминал, в todo.txt для меня есть неприятный нюанс который я бы хотел + исправить, а именно, вложенные задачи, когда у одной задачи может быть + сколько угодно дочерних, у которых, так же могут быть дочерние. Пока думаю, + расширить формат табуляцией в начале строки. Количество \t - уровень + вложенности. Но тогда придётся модифицировать todo.txt-cli который я + использую. И непонятно как это проглотит Markor. Можно конечно использовать + встроенную возможность задавать key-value значения. Тогда будет что-то типа + `Подзадача parent:2`. Это, как будто, самый правильный способ, который и + рекомендуется разработчиками формата, но получается слишком многословно, а + даже если сократить до `p:2` - всё равно надо в голове держать номер + родительской задачи. Так себе. Не знаю ещё как поступлю, но как-то поступлю. +- Было бы неплохо прикрутить парсинг ICS файлов из почты для автоматического + добавления событий в календарь. Это сто́ит сделать однозначно! +- Ну и очень желательно сделать скрипт который по крону за 15 минут до события + напомнит о нём, через какой-нибудь `notify-send`. Это, на самом деле, из всех + хотелок самая приоритетная для меня сейчас. + +Если будет интересно, я могу здесь рассказывать о том, что сделал из этих +хотелок. -- cgit v1.2.3