Mar. 27th, 2025
Все врут календари
Mar. 27th, 2025 07:26 pmПро опенсурсные приложения для работы с календарями я уже когда-то писал.
Сейчас по ряду причин я делаю еще один подход к этому снаряду.
Научился более-менее пользоваться интерфейсом khal. Выяснил что там есть интерактивная версия ikhal, которая пытается конкурировать с calcurse, но у нее получается плохо.
Выяснил что бывает mutt-ical - скрипт, который можно прикрутить к любому текстовому почтовому клиенту, чтобы просматривать присланные всякими менеджерами приглашения на совещания в формате ics, и отвечать на них. Правда, по-моему в базу khal оно при этом не импортирует. Надо бы его встроить в khal как команду.
Выяснил что у calcurse есть дополнительная утилита calcurse-vdir, позволяющая импортировать в calcurse синхронизированный vdirsyncer-ом и обслуживаемый khal-ом календарь. Правда именно импортировать, а не синхронизировать. При повторном импорте создает вторую копиюу уже существующих событий. calcurse-caldav еще не пробовал. Там по идее этой проблемы быть не должно.
Еще у calcurse есть полезное свойство - оно умеет с todo работать. А khal - нет. Правда в github-организации pimutils, где живут vdirsyncer, khal и khard, для todo-шек есть отдельный скрипт todoman.
И есть вредное свойство - поскольку у calcurse используется свой формат хранения, многие поля которые есть в vevent оно не понимает. Что неудобно. Например при попытке прикрутить туда вышеупомянутый режим ответа на приглашение отсутствие поля participants будет почти фатальным.
Еще в интерфейсе calcurse слегка раздражает наличие в левой колонке пустых прямугольников для дней, в которые нет событий. Нет событий, так зачем день показывать? Впрочем у ikhal та же проблема, только пустой день там занимает одну строчку, а не пять.
В общем, идеальный консольный менеждер календаря по-моему должен выглядеть так:
- При запуске без параметров, интерфейс почти как у calcurse, только пустые дни не показываются в списке. Список дел, а не дней. Для дней справа вверху календарь.
- При вызове базовой (например по кнопке N) операции создания нового объекта, тип создаваемого объекта зависит от того какая панель текущая. Если текущий список событий или календарь, создается appointment, если список тудушек - todo.
- Диалог создания/редактирования appointment должен быть примерно как в андроидном календаре. Чтобы и location можро было задать, и participants, и reminders. И чтобы была галочка "оповестить других участников по почте".
- При запуске с единственным параметром именем файла ics оно должно его показать в удобочитаемом виде, добавить конфликты с другими событиями, если есть, и предложить кнопочки accept/reject. Причем оно должно быть иметь ключик чтобы при вызове через mailcap оно автоматически включало галчоку "сообщить другим участникам о принятии/отказе".
- Чего я хочу от тудушек, я еще не знаю. Но явно больше, чем предлагает calcurse. Ну то операция "пометить выполненной" точно должна быть. И кнопочка "удалить все выполненные". Но tasks.org, которая вроде как должна быть мобильным интерфейсом к caldav-овским TODO вроде как позволяет гораздо больше. Надо посмотреть.
Да, нашел RFC про то, что должен о себе рассказывать CalDAV/CardDAV сервер, чтобы его клиенты находили по e-mail адресу. И вроде у себя это все реализовал. Надо проверить, DAVx5 теперь найдет? (а то я на нынешнем телефоне уже руками все настроил, ломать неохота).
X-Post to LJ