Довольно давно я пользуюсь апплетом xfce4 для заметок. Когда я решил поплотнее осваивать Bash, а так же решил познакомиться с Python, возникла необходимость в средстве организации конспекта, чтобы всё было под рукой. Ни xfce4-апплет, ни другие реализации «липких записок» вроде tomboy или knotes, для этого не годились: начиная с определённого критического количества записок, ориентироваться в них становилось невозможно. В итоге я попробовал Zim. Результатами своего знакомства с ним я и хочу с вами поделиться. Рассказывать буду о версии 0.46, самой свежей на момент публикации.
Zim, настольная вики
Согласно Википедии, вики — (англ. wiki) веб-сайт, структуру и содержимое которого пользователи могут сообща изменять с помощью инструментов, предоставляемых самим сайтом. Характерными особенностями вики-сайтов всегда были простота структурирования и встроенная простая разметка.
Эти две особенности разработчики Zim решили воплотить в этом удобном и простом инструменте для структурирования и хранения заметок. По сути Zim является WYSIWYG-редактором с базовым функционалом форматирования текста (списки, стили шрифта, вставка картинок и диаграмм) и поддержкой внутренних ссылок между заметками. При этом заметки он хранит в виде отдельных, чётко структурированных по каталогам текстовых файлов с вики-форматированием.
Но этим функционал программки не ограничивается: есть поддержка календаря, списков дел (т.н. ToDo-lists), проверка орфографии и даже экспорт в HTML.
Окно программы
Но, обо всём по порядку: давайте посмотрим на главное окно. (Для наглядности я покажу встроенную справку, оформленную в самом Zim, с примерами и наполнением, куда превышающим мои скромные записки.)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRFuqXowZvezKPV9N2WShWXdFweAO-Idv5buxMZo5dWs_gnq-4Vtzj55aupk1XZ0agUrMSxenTLcyE9fcQGhwYht3aSbiHQsO0yNJIl_GCSWcCkSaeAd8h3bT_6g3uSVXWvCWEnA/s320/zim1.png)
На главной панели имеются кнопки перехода между страницами и кнопка для перехода на домашнюю. Кроме того, режим «только чтение» включается здесь же. Далее следуют кнопки форматирования: жирный, курсив, подчёркнутый, зачёркнутый, кнопки добавления ссылки и картинки, а так же дополнительные кнопки, включающие расширения (в моём случае — проверку орфографии и список дел).
Всё остальное место занимают древовидная структура наших вики-заметок и само поле, куда вводятся и где отображаются наши заметки (над последним — отключаемая история переходов в виде кнопок с названиями страниц).
Форматирование
Новые заметки создаются из контекстных меню по правой клавише мыши, либо из ссылок, которые мы можем создавать в любом месте нашей настольной вики благодаря ключевым символам:
- :link создаст страницу в корне;
- :link1:link2 создаст страницу link1 с дочерней страницей link2 и будет вести на link2 (абсолютная ссылка);
- +link создаст дочернюю страницу текущей.
Причём ссылка возникнет сразу же после ввода пробела или переноса строки после ввода самой ссылки, и переход по ней возможен как с помощью мыши, так и с помощью клавиатуры (просто навести курсор и нажать Enter).
К сожалению, создание внутренних ссылок «на лету» работает только с латиницей. Ссылки, содержащие кириллицу, в ссылки автоматически не превращаются (впрочем, через меню или кнопку ссылки с кириллическими именами вполне создаются).
Кроме того, вполне работают ссылки на файлы локальной машины, http-ссылки и даже быстрые ссылки на ресурсы, заданные в специальном файле настроек:
- нажатие на /path/to/file.ext будет автоматически открывать файл file.ext, находящийся в каталоге /path/to в приложении по умолчанию для оконной среды;
- ссылка http://ya.ru/ откроет браузер на странице поисковика Яндекса;
- а wp?wiki откроет страницу Википедии, рассказывающую про wiki, в умолчательном браузере оконной среды.
Заголовки создаются с помощью знаков =, при чём от количества знаков зависит уровень заголовка:
==Заголовок 1 уровня
=======Заголовок 7 уровня
Ненумерованные списки создавать тоже просто: достаточно начать строку с знака * и пробела, чтобы начать новый список, при чём имеется поддержка многоуровневых списков по клавише Tab (правда, символы для разных уровней остаются одинаковыми: разница только в отступах). Поддержка нумерованных списков отсутствует, но, по словам разработчиков, планируется.
Для стилей текста подобных способов ввода нет, однако работают уже привычные многим хоткеи Ctrl+B, Ctrl+I, Ctrl+U. Для заголовков также можно использовать Ctrl+1-Ctrl+5, а Ctrl+0 сбрасывает форматирование выделенного фрагмента текста.
Дела
Zim обладает встроенной поддержкой списков TODO, которые можно создавать на любой странице вашей настольной вики: достаточно ввести [], чтобы получить чекбокс, рядом с которым можно указать задачу, а с помощью кода [d: 1/5] назначить дату (в данном случае 1 мая), и, возможно, приоритет задачи (! через пробел после текста, при чём, чем больше восклицательных знаков, тем выше приоритет).
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiroXD38EqsgRBtpIVFQ72FJGVtDV6EvVQDpWiTtzXKDkkd6IJjLCUTXCyBRT0WGfLaDQh7Y4pL_UZA055HLNK6FovibhryqY_Lb0-2Xmp7x3PXjq3JH7XxvDeHMyjeH29kNcjIbQ/s320/zim3.png)
Прилагающийся плагин Task List позволит вам просматривать список задач по всей вики, при чём нажатие на пункт в списке будет открывать в окне Zim страницу с задачей.
Плагины
В комплекте с Zim идут плагины для вставки скриншотов (требуется scrot), уравнений (latex+dvipng), диаграмм (graphviz), значок в трей, проверка орфографии (python-gtkspell и словарь aspell для соответствующего языка), уже упомянутый мною Task List, Link Map (graphviz, но у меня почему-то не работает), календарь, который позволяет мгновенно создавать страницу с адресом, соответствующим дате (например, :Calendar:2010:04:27), печать из браузера (в Zim не встроена функция печати, но документы можно экспортировать в браузер и печатать оттуда) и контроль версий (требует bzr).
Веб
Кроме уже перечисленных возможностей, стоит отметить и тот факт, что настольная вики Zim имеет возможности работы с вики-сайтами. Речь идёт не только о возможности экспорта всего дерева документов как веб-страниц (по заданному шаблону), но и о том, что структура заметок Zim являет собой комплект текстовых файлов, расположенных структурировано в заданном каталоге, при чём разметка внутри текстовых документов соответствует вики-стандартам. Я, к сожалению, не силён в принципах работы различных веб-сервисов, но мне кажется, что если все эти текстовые документы подключить к вики-движку, то в итоге можно получить сайт, содержимым которого можно будет управлять прямо из Zim.
Применение
Внимательный читатель уже, скорее всего, решил, что Zim ему пригодится и даже определился с тем, для чего. Я же предположу несколько областей, где Zim будет чрезвычайно полезен и незаменим:
- ведение конспектов: легко структурировать данные, легко искать информацию, легко делать ссылки на ходу;
- написание документации: древовидная структура записок для этих целей идеальна, а возможность вставки скриншотов тоже придётся кстати;
- блоговодство: когда ведёшь блог, рано или поздно понимаешь, что идеи редко возникают «вовремя», когда есть возможность заняться статьёй, а когда эта возможность появляется, идеи забываются.
Надёжность, установка и зависимости
Стабильность работы Zim довольно высока, хоть и не идеальна. Ошибки время от времени случаются при удалении заметок. К скорости работы у меня претензий не возникло.
Zim есть в репозитариях Ubuntu и ArchLinux, так что с установкой проблем возникнуть не должно:
# aptitude install zim
# pacman -S zim
В зависимостях главным образом python и GTK, плюс необязательные зависимости плагинов.
При запуске Zim предлагает создать каталог для заметок, который впоследствии будет использоваться по умолчанию. В качестве примера можете положить в этот каталог данную статью (работал над ней я как раз в Zim). Для этого нужно скачать архив и распаковать его в корень каталога с записками.
Приятной работы с заметками!