Craciun Dan | October 30, 2014

CherryTree is a notes-taking application which organizes your notes into a hierarchical tree, has support for text formatting, and is written in GTK2/Python. Lately this application has got a lot of attention due to rich features and frequent updates. It also comes by default in distributions such as MakuluLinux MATE Edition.



First let me start by talking a bit about the way CherryTree organizes its notes. First of all, the notes are kept in a tree-like hierarchy in the left panel on the main window. Here, you can set so-called “nodes” and “sub-nodes” to create and archive your notes. Each node has a few configurable properties. For example, for each node you can change its name, or you can select its type: Rich Text, plain text or automatic syntax highlighting. The syntax highlighting feature has support for many programming languages. Additionally, you can use tags for each note or make a node read-only, so it can’t be modified.

Changing node type and properties – even automatic syntax highlighting is available:

By right-clicking the left panel, you can add nodes, sub-nodes, change node properties, move nodes, view tree info, import or export nodes. Another nifty feature is the ability to also quickly insert a “today’s node“, which will automatically create a node for the current year, with sub-nodes for the current month and day.

Automatically creating a today’s node tree:

The text formatting feature includes properties to change the text color and background, use three different headers, subscripts and superscripts, and also create bulleted lists, numbered lists or to-do lists.

Inside notes you can also insert images, tables, special characters or codeboxes.

When inserting an image inside a node, you will be able to rotate it left/right or adjust its width and height (keeping aspect ratio – independent resizing is not possible). This is done in a pop-up window where you can also preview the image:

For each inserted image, you can cut/paste/copy it, change its size again, or set a link to a website, local path or even another CherryTree node:

And here’s a really beautiful feature of CherryTree – you can insert codeboxes, right-click on a codebox and set its highlighting rules separately from the rest of the node. The highlighting supports tens of languages including all the popular and not so popular ones: C/C++, shell, Perl, Python, PHP, HTML are all included.

You can also resize codeboxes or insert some text from an external file:

Inserting tables – these can be resized and you can insert additional rows and columns:

Copy and pasting some HTML page will pretty much keep the formatting:

Inserting various elements inside a note:

Formatting text using various properties:

In addition, CherryTree supports bookmarks and has a bookmarks manager for changing the order of the bookmarks. When bookmarking a node, not only that particular node will be kept, but also the position of the cursor, so when you will return to a very large node, CherryTree will automatically scroll to the position you were in that node when you bookmarked it. However, there seems to be two drawbacks in my opinion here: you can’t have two bookmarks with the same node and two different positions (the second bookmark will overwrite the first), and when you click a bookmark of the same node that is currently loaded, CherryTree will not scroll to that position (unless you’re in another node).

CherryTree can import notes from a wide range of notes applications, plain text and HTML files. Applications supported include Basket, GNote, KeyNote, KeepNote, NoteCase, Tomboy or Zim. You can export notes to PDF, HTML or plain text as well.

Regarding configuration, there are plenty of things CherryTree lets you change or customize. You can configure the editor’s tab behavior, automatic indentation or enable line wrapping; enable spell-checking; configure the theme (light or dark, the default) or set your custom colors for the background, but also for the tree nodes area; change font properties, links appearance, enable the system tray integration and auto-saving.

Using the light background:

CherryTree can be embedded in the system tray, and autosaves at certain time intervals are also possible:

One of the new additions in 0.35.0 was the ability to configure the toolbar from a dedicated tab in the Preferences dialog:

CherryTree will store its notes in a single XML or SQLite database file – make sure to save the changes before exiting CherryTree.

To conclude, I believe CherryTree takes a somewhat different direction than most of the notes-taking application, and it has very powerful and rich functions, making it fit for creating not only notes, but elaborate projects with beautiful text-formatting, images, and links between nodes.

Install CherryTree 0.35.2 in Ubuntu 14.04 and 14.10

The latest version of CherryTree at the time of writing is 0.35.2, which was released on October 7, 2014. There is a CherryTree PPA which contains the latest version for Precise, Trusty and Utopic. To install CherryTree, open a terminal and type:

sudo add-apt-repository ppa:vincent-c/cherrytree sudo apt-get update sudo apt-get install cherrytree

You can also install the latest version of CherryTree using UbuTricks.