💾 Archived View for tilde.team › ~rami › calcurse.gmi captured on 2024-12-17 at 11:35:29. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
רמי
SUBJECT: Calcurse: Консольный календарь / Менеджер задач
AUTHOR: Rami Rosenfeld
DATE: 22/10/24
TIME: 05.00
LANG: ru, en
LICENSE: GNU FDL 1.3
TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, rhel, centos, mate, xfce, lxde, calendar, calcurse
Давно имелась идея - подобрать для личного пользования удобный консольный календарь. И в своих поисках я не поленился протестировать с десяток подобных программ. Как правило, все они страдают единым недостатком: необходимостью помнить (и вводить в командной строке) сотни разнообразных ключей и выражений (или, как Taskwarrior, ограничены в наглядном и удобном выводе информации на экран; хотя начинал я именно с него - примерно 20+ лет назад).
В отличии от них, Calcurse, на котором я остановился в конечном итоге, очень прост, нагляден, использует все экранное пространство (и подстраивается под его размеры). Плюс - обладает управлением, схожим, к примеру, с Midnight Commander.
Ниже я приведу минимальное описание, а также примеры конфигурации программы и содержимого календаря/списка задач.
Calcurse устанавливается из стандартных репозиториев:
dnf install calcurse
- hooks – запуск скриптов при загрузке/сохранении данных;
- экспериментальная поддержка CalDAV - синхронизация с мобильными устройствами;
- поддержка различных типов событий, встреч, дел (TODO), включая события, занимающие весь день, и повторяющиеся события;
- быстродействующий и легко настраиваемый curses-based интерфейс;
- расширенный неинтерактивный интерфейс командной строки, в котором можно использовать скрипты;
- переназначаемые пользователем "управляющие клавиши";
- конфигурируемая пользователем система оповещений, включающая возможность отсылки писем или запуска программ напоминания о наступающих событиях;
- импорт календаря с поддержкой iCalendar;
- экспорт календаря с поддержкой ical и pcal;
- возможность прикрепления заметок к каждому элементу/событию календаря (и редактирование их в предпочтительном стороннем редакторе);
- мультиязычный интерфейс;
- поддержка UTF-8.
Интерфейс разделен на четыре области:
- описание текущих событий календаря;
- календарь;
- задачи;
- панель управления.
Перемещение фокуса между областями циклично осуществляется при помощи клавиши [TAB].
Выбор событий в отдельной области осуществляется стрелками "вниз/вверх".
Короткая сводка по управляющими клавишам (на самом деле, их очень много - целых четыре(!) панели; переход между ними возможен при нажатии клавиши "o"):
a - добавить событие или задачу (зависит от активной области);
e - редактировать событие или задачу;
d - удалить событие или задачу;
s - сохранить изменения;
i - импорт данных;
x - экспорт данных;
C - вход в настройки;
? - справка;
q - выход из настроек, вложенного подменю или программы.
Все настройки можно легко конфигурировать как при помощи удобного TUI (псевдографического интерфейса), так и непосредственной правкой конфигурационного файла. Ниже в качестве примера приводится преднастроенный мною файл conf, расположенный по адресу ~/.config/calcurse/
appearance.calendarview=monthly appearance.compactpanels=yes appearance.defaultpanel=calendar appearance.layout=1 appearance.headerline=no appearance.eventseparator=no appearance.dayseparator=no appearance.emptyline=no appearance.emptyday=-- appearance.notifybar=no appearance.sidebarwidth=33 appearance.theme=cyan on default appearance.todoview=hide-completed appearance.headingpos=left-justified daemon.enable=no daemon.log=no format.inputdate=2 format.notifydate=%a %F format.notifytime=%T format.appointmenttime=%H:%M format.outputdate=%D format.dayheading=%B %e, %Y general.autogc=yes general.autosave=yes general.confirmdelete=yes general.confirmquit=yes general.firstdayofweek=monday general.multipledays=yes general.periodicsave=5 general.systemevents=yes notification.command=printf '\a' notification.notifyall=flagged-only notification.warning=300
Я очистил конфигурационный файл от всякого рода излишеств: разделителей в интерфейсе, лишних пробелов и т.п., поэтому предлагаю первоначально воспользоваться именно им, а уж затем - дополнительно подстроить под свои нужды.
Внести любое событие можно при помощи TUI-интерфейса или вручную - правкой соответствующих файлов календаря и todo-списка. Лично мне показался удобным и быстрым второй способ.
Данные календаря и todo расположены по адресу:
ls ~/.local/share/calcurse
/notes
apts
todo
Структура списка задач/дел (файл todo):
[1] Тестовая задача № 1 [0] Неприоритетная задача № 2
(для наглядности - соотнесите эти данные с иллюстрацией, приведенной выше)
Структура календаря (файл apts):
10/22/2024 @ 05:00 -> 10/22/2024 @ 06:00|Ограниченное временем событие 10/22/2024 [1] Тестовое событие на целый день 04/21/2026 [1] {1Y} ♨ Голда Меир - день рождения! 05/20/2026 [1] {1Y} ♨ Моше Даян - день рождения! 10/16/2026 [1] {1Y} ♨ Давид бен-Гурион - день рождения!
Как следует из приводимых данных:
10/22/2024 @ 05:00 -> 10/22/2024 @ 06:00| - указывает на длительность события;
04/21/2026 - дата вносится в формате МЕСЯЦ/ДЕНЬ/ГОД; ВАЖНО - месяц идет первым!
[1] - событие занимает весь день;
{1Y} - событие будет повторяться с периодичностью каждый год.
ВАЖНО! Если вы вносите повторяющееся календарное событие посредством TUI-интерфейса:
- вначале создайте событие (например - день рождения);
- затем назначьте этому выделенному событию рекуррентность, нажав на клавишу "r" (этой кнопки нет на управляющей панели, и я долго искал такую возможность, пока не догадался заглянуть в FAQ на сайте производителя: этот вопрос приведен первым в списке!)
Современные электронные календари, пользуясь расширенным стандартом на количество и содержание полей в отдельном событии, вносят в конечный файл огромное количество мусорных данных. Поэтому я предпочел создать новый календарь вручную (см. пример выше); после чего попробовал экспортировать его: как результат, получился очень чистый файл. Он экспортируется в несколько ином формате, поэтому переименуйте его расширение .ical на привычное .ics (по сути, это одно то же), затем импортируйте в любую другую программу.
Дополнительно см.: man calcurse
🄯 Rami Rosenfeld, 2024. GNU FDL 1.3.