Некоторым заметкам нужен не абзац, а схема: несколько прямоугольников, несколько стрелок, подпись. Для этого у меня Excalidraw - рисованный от руки вид, быстрый, с открытым кодом. В Joplin он есть уже несколько лет благодаря двум людям: artikell написал исходный joplin-excalidraw в 2022-м, а neagix продолжил его как joplin-excalidraw-v2 - с Excalidraw и его шрифтами, упакованными в плагин, автоматически сохраняемыми SVG-превью и конвертацией старых рисунков. Этим плагином я и пользовался в своих заметках.

В этом году мне захотелось от него ещё трёх вещей: текущий Excalidraw внутри, тёмная тема и редактор на всё окно. В июне я сделал первые две поверх v2, по пути починив инструмент текста и рукописный шрифт в экспортированных SVG. В сентябре добавились редактор на всё окно, копирование и второе окно, а плагин получил собственное имя - Excalidraw.

Excalidraw добавляет рисунки Excalidraw в заметки Joplin. Кнопка с карандашом на панели инструментов редактора создаёт рисунок, и он вставляется в позицию курсора как обычная картинка. Редактор - настоящее приложение Excalidraw, упакованное в плагин. Он занимает всё окно Joplin или обычный размер диалога Joplin - переключатель в углу меняет одно на другое, и выбор запоминается. Светлая и тёмная темы следуют за темой Joplin.

У каждого рисунка четыре действия. Они есть в панели, всплывающей над рисунком в режиме просмотра, в контекстном меню редактора, когда курсор стоит на строке с рисунком, и в меню Инструменты → Excalidraw:

  • Edit открывает редактор.
  • Edit in a new window открывает заметку во втором окне Joplin, а редактор - в нём, так что можно читать заметку или писать в ней, пока рисуешь.
  • Copy as image кладёт в буфер обмена PNG, растрированный в 2× для HiDPI-экранов. Тёмные рисунки копируются тёмными.
  • Copy as JSON кладёт в буфер рисунок в собственном формате Excalidraw. Вставьте его на excalidraw.com, в плагин Excalidraw для Obsidian или в другой рисунок здесь - и получите редактируемые фигуры, а не картинку.

Сохранённый рисунок обновляется на месте, в каждом открытом окне. На диске это два ресурса Joplin - сцена .json и превью .svg, - а в теле заметки нет ничего особенного, только ссылка на картинку, поэтому рисунок синхронизируется и экспортируется как любое вложение.

Что мне здесь интересно: две из этих функций появились из-за ограничений Joplin, а не Excalidraw. Собственное «Копировать изображение» в Joplin ничего не делает для рисунка в редакторе Markdown, потому что декодирует картинку кодом, который не умеет читать SVG, - поэтому плагин сам превращает SVG в PNG. А диалог плагина Joplin всегда открывает в 90% окна и не даёт плагину его изменить. Но диалог плагина может дотянуться до окна Joplin вокруг себя, поэтому этот перекраивает собственную рамку на всё окно и рисует Save, Close и переключатель размера одним маленьким островком в углу холста вместо полосы кнопок Joplin под диалогом.

Переходите со старого плагина? Сначала отключите или удалите его: когда включены оба, у каждого рисунка два набора кнопок, а клик по Edit может попасть не в тот редактор. Ваши рисунки - обычные вложения, поэтому ничего не конвертируется и ничего не трогается: ссылки и ресурсы v2 читаются как есть, а рисунки из исходного v1 по-прежнему получают кнопку Convert. Три настройки под новым id начинаются со значений по умолчанию.

Только десктоп: мобильный плагин Joplin не может создать ресурс, так что правка на телефоне ждёт самого Joplin. Несовместим с плагином Freehand Drawing, если включены оба. Joplin 3.3 или новее.

Бесплатно и с открытым кодом под MIT, в продолжение работы artikell и neagix: github.com/pmslava/joplin-plugin-excalidraw. Он есть в списке плагинов Joplin - Инструменты → Параметры → Плагины, найдите Excalidraw, - а файл .jpl лежит ещё и на странице релизов.