A hierarchical note taking application, featuring rich text and syntax highlighting, storing data in a single xml or sqlite file.



Written by Giuseppe Penone (aka giuspen) and Evgenii Gurianov (aka txe).



The user manual online html and downloadable ctb written and maintained by Ellie Borden.



The following languages are supported: Armenian (Seda Stamboltsyan, up to date)

Chinese Simplified (Channing Wong, TO BE UPDATED)

Czech (Pavel Fric, up to date)

Dutch (Luuk Geurts, up to date)

English (default)

French (Klaus Becker, up to date)

Finnish (Henri Kaustinen, up to date)

German (Stefan Pöschel, up to date)

Greek (Delphina, up to date)

Italian (Vincenzo Reale, up to date)

Japanese (Piyo, up to date)

Lithuanian (Zygis, TO BE UPDATED)

Polish (Marcin Swierczynski, up to date)

Portuguese Brazil (TO BE UPDATED)

Russian (Andriy Kovtun, up to date)

Slovenian (Erik Lovrič, up to date)

Spanish (Daniel MC, up to date)

Turkish (Ferhat Aydin, up to date)

Ukrainian (Andriy Kovtun, up to date) features

stable

testing

source

bug tracker







features :

rich text (foreground color, background color, bold, italic, underline, strikethrough, small, h1, h2, h3, subscript, superscript, monospace)

(foreground color, background color, bold, italic, underline, strikethrough, small, h1, h2, h3, subscript, superscript, monospace) syntax highlighting supporting several programming languages

supporting several programming languages images handling : insertion in the text, edit (resize/rotate), save as png file

: insertion in the text, edit (resize/rotate), save as png file embedded files handling: insertion in the text, save to disk

multi-level lists handling (bulleted, numbered, to-do and switch between them, multiline with shift+enter)

(bulleted, numbered, to-do and switch between them, multiline with shift+enter) simple tables handling (cells with plain text), cut/copy/paste row, import/export as csv file

(cells with plain text), cut/copy/paste row, import/export as csv file codeboxes handling : boxes of plain text (optionally with syntax highlighting) into rich text, import/export as text file

: boxes of plain text (optionally with syntax highlighting) into rich text, import/export as text file execution of the code for code nodes and codeboxes; the terminal and the command per syntax highlighting is configurable in the preferences dialog

for code nodes and codeboxes; the terminal and the command per syntax highlighting is configurable in the preferences dialog alignment of text, images, tables and codeboxes (left/center/right/fill)

of text, images, tables and codeboxes (left/center/right/fill) hyperlinks associated to text and images (links to webpages, links to nodes/nodes + anchors, links to files, links to folders)

(links to webpages, links to nodes/nodes + anchors, links to files, links to folders) spell check (using pygtkspellcheck and pyenchant)

(using pygtkspellcheck and pyenchant) intra application copy/paste : supported single images, single codeboxes, single tables and a compound selection of rich text, images, codeboxes and tables

: supported single images, single codeboxes, single tables and a compound selection of rich text, images, codeboxes and tables cross application copy/paste (tested with libreoffice and gmail): supported single images, single codeboxes, single tables and a compound selection of rich text, images, codeboxes and tables

(tested with libreoffice and gmail): supported single images, single codeboxes, single tables and a compound selection of rich text, images, codeboxes and tables copying a list of files from the file manager and pasting in cherrytree will create a list of links to files, images are recognized and inserted in the text

from the file manager and pasting in cherrytree will create a list of links to files, images are recognized and inserted in the text print & save as pdf file of a selection / node / node and subnodes / the whole tree

file of a selection / node / node and subnodes / the whole tree export to html of a selection / node / node and subnodes / the whole tree

of a selection / node / node and subnodes / the whole tree export to plain text of a selection / node / node and subnodes / the whole tree

of a selection / node / node and subnodes / the whole tree toc generation for a node / node and subnodes / the whole tree, based on headers h1, h2 and h3

for a node / node and subnodes / the whole tree, based on headers h1, h2 and h3 find a node, find in selected node, find in selected node and subnodes, find in all nodes

a node, find in selected node, find in selected node and subnodes, find in all nodes replace in nodes names, replace in selected node, replace in selected node and subnodes, replace in all nodes

in nodes names, replace in selected node, replace in selected node and subnodes, replace in all nodes iteration of the latest find, iteration of the latest replace, iteration of the latest applied text formatting

of the latest find, iteration of the latest replace, iteration of the latest applied text formatting import from html file, import from folder of html files

from html file, import from folder of html files import from plain text file, import from folder of plain text files

from plain text file, import from folder of plain text files import from basket, cherrytree, epim html, gnote, keepnote, keynote, knowit, mempad, notecase, rednotebook, tomboy, treepad lite, tuxcards, zim

from basket, cherrytree, epim html, gnote, keepnote, keynote, knowit, mempad, notecase, rednotebook, tomboy, treepad lite, tuxcards, zim export to cherrytree file of a selection / node / node and subnodes / the whole tree

to cherrytree file of a selection / node / node and subnodes / the whole tree password protection (using http://www.7-zip.org/) – NOTE: while a cherrytree password protected document is opened, an unprotected copy is extracted to a temporary folder of the filesystem; this copy is removed when you close cherrytree

(using http://www.7-zip.org/) – NOTE: while a cherrytree password protected document is opened, an unprotected copy is extracted to a temporary folder of the filesystem; this copy is removed when you close cherrytree tree nodes drag and drop

automatic link to web page if writing the URL

page if writing the URL automatic link to node if writing node name either with no spaces and camelcase or surrounded by [[node name]]



WISH-LIST:

open several cherrytree files (notebooks) at the same time with tabs (all in the same window-single instance)

cut copy and paste nodes

option to edit pictures with external editor

user defined text style (font, bold, color,…), custom properties for h1,h2,h3

option to set the max line length/max page width

spreadsheet node

opportunity for a node to have columns

allow drag n drop of images and files to cherrytree

allow to open a formatting tag for future text

better table export to html (respect column width, text align, single line border)

do not truncate codebox width in export to html

export to html: option to have different color background for the tree

export to html: option to have the nodes to collapse/expand

numbered lists: double space after one digit numbers to be aligned with 2 digits numbers

option to make text double-spaced

export a node with its subnodes to .odt

utility (dialog) where it’s possible to see all the tags (tree of the only tags) plus statistics about the tags

more options for the tables (automatic expand the table to the width of the screen)

import from pdf

export to LaTeX

utility to insert formulas (using LaTex that converts to png or something else))

option to have the font in nodes names decrease automatically proportionally to the node depth

selecting a set of text (e.g. space separated) and create a table with it or paste text into a table

customisable menus font size

add crop capability to image resize dialog

multiple selection of nodes for move and delete

opportunity to have multiple nodes point to the same data (many node-views pointing to the same node-data)

option to sort text rows by selection

cherrytree for android

improve the numbers handling in nodes sorting

option to display hierarchy in node name header

option to print node name/hierarchy with a menu/shortcut

option to enable tooltips over nodes names in the tree

allow to select text and edit equivalent html in a dialog, then insert html from dialog to text

proxy support (for copy/paste from web browser)

export to epub

option to use double click to visit links

strip leading and trailing empty spaces when applying a list type to selected text, option to ensure trailing char (e.g. “;”)

option to skip codeboxes and tables when pasting from web page

option to call a script at autosave time

bug: replace text in node but not tables/codeboxes

option to recall latest find and replace patterns

export to markdown

option to insert tags also in text maybe with shortcuts

import from iPython notebook

more headings (h4 and h5)

multiple rows selection for cut/copy/paste/delete in tables

option in export to txt of multiple nodes to save hierarchically creating subfolders

preserve text alignment in print/export to pdf

option to link to a node + a line number

export/import text with indentation, each tab marking a level

pick existing formatting from the text below the cursor and use the formatting elsewhere

allow colored text in table cells

configurable auto-close of document after set time of inactivity

possibility to execute using python mathematical expression in node (writing expression and result)

add one or more custom commands to be executed on the selected text

support for Right-to-Left languages (lost in export to HTML and PDF)

add possibility to automatically have navigation links at the bottom of nodes like in the manual

handle link to email address and link to thunderbird mails like thunderlink://messageid=…

option to have borders around the images in image properties

bug: sort doesn’t work right with German umlauts (öäüÖÄÜ)

node comments optionally printable

add a command to make the first table row become the header automatically

option to display the linked images

link to the download section with the notification of new version available

optionally include the node title/tags in the nodes content search

user could define both the foreground and the background color of selected text

auto-height for code boxes from selected text

export to html single document similar to treepad export for outliner (android) import

if there is nothing to save, make the save button grey/insensitive

move deleted nodes to a trash node rather than erase forever

creation of links using drag-n-drop of files, folders & web addresses

improve tree info dialog with clickable list and location of objects (in particular embedded files)

preserve history of visited nodes (fw/bw arrows) between sessions

add configurable option to swap Ctl+V and Ctrl+Shift+V (default plain or rich)

support inserting image from the internet (e.g. http://www.giuspen.com/icons_submenu/bug.png), not only from local disk

support for links in table cells

one or more user definable strings optionally colored that the user can quickly insert with right click

import from one note

validate internal links for broken/auto-mark if broken

improve bookmarks allowing to group into folders

possibility to define header and footer for the exported pdf

bookmarks icons same as node icon

possibility to set custom font for a node

possibility to hide the codebox with an expander

export to txt from the command line to single txt file

possibility to edit multiple nodes attributes at once

Alt+1 to switch to the first bookmarked node and so on for Alt+2, Alt+3… up to Alt+9

option to add “Back to top” link behind each header when a TOC is inserted

calendar node, with the ability to put in events and appointments (jcal?)

which pages directs to the current page (backlinks)

custom nodes icons to import into the document, not dependent from external paths







download last stable version 0.39.4 (June 21st, 2020 – changelog) :

source code (GPLv3+): cherrytree-0.39.4.tar.xz

(depends: python2, python-gtk2, python-gtksourceview2, p7zip-full, python-dbus, python-enchant, python-chardet)

snap package (maintained by Heather Ellsworth) https://snapcraft.io/cherrytree (snap install cherrytree)

NOTE: to access removable media you need to execute manually

sudo snap connect cherrytree:removable-media

flatpak package https://flathub.org/apps/details/com.giuspen.cherrytree NOTE: currently without python-dbus, python-enchant and python-chardet => no centralised multiple instances, no spell check

debian/ubuntu package (NOT FOR UBUNTU 20.04/DEBIAN UNSTABLE, NEW GTKMM3 VERSION COMING SOON, USE SNAP or FLATPAK PACKAGE) cherrytree_0.39.4-0_all.deb

(giuspen PPA: sudo add-apt-repository ppa:giuspen/ppa)

rpm package: cherrytree-0.39.4-1.noarch.rpm (generated from the deb using alien)

NOTE: for Fedora 31+ see https://copr.fedorainfracloud.org/coprs/bcotton/cherrytree/

microsoft windows installer: cherrytree_0.39.4_setup.exe

NOTE: if you use cherrytree before installing a new version, you may find an error trying to overwrite “dbus-daemon.exe” which is in use, in this case just skip the overwrite or reboot and then the installation should run smoothly.

microsoft windows portable archive: cherrytree_0.39.4_win32_portable.7z

NOTE: if you want to use a preferences file local to the portable folder, just create an empty file named “config.cfg” in the “bin” folder (where cherrytree.exe is).

mac os port maintained by @kenku:

sudo port -v install cherrytree

If you don’t already have an X11 server installed (Like XQuartz.app, for example) you’ll need one:

sudo port -v -N install xorg-server



sha256sum *

bddc893e19a3b37921fab7b9db7d5b1968432470d267d6931b60d30bf767793e cherrytree_0.39.4-0_all.deb

66792273aa63b2a325812d638ccb4ab80b7a826074b63ef7750030ae9f6a7005 cherrytree-0.39.4-1.noarch.rpm

5284979c2944010b3a55a6aeda83329655ee49d7e892fafec81094c20c242cdf cherrytree_0.39.4_setup.exe

6db3d17c49dfd3c7d83ad2cc8b8be28350497566acfe827e6f178538669b4f76 cherrytree-0.39.4.tar.xz

891d9461eea11e623fd6ee4f398fefe578162f060942d098a09ca284cf092c89 cherrytree_0.39.4_win32_portable.7z

resides in applications–accessories–cherrytree







download last testing version 0.99.12 / 1e66e4a0 (September 20th, 2020) :

cherrytree_0.99.12.0_win64_portable.7z (look for mingw64/bin/cherrytree.exe; for portable config put config.cfg in portable folder root)

cherrytree_0.99.12.0_setup.exe

https://launchpad.net/~giuspen/+archive/ubuntu/ppa/+files/cherrytree_0.99.12-1_amd64.deb (ubuntu 20.04)

sha256sum *

99e6c80343c7903a5dfb57ac26f35cf0726f78673b538b7ba12dfcf18282b834 cherrytree_0.99.12.0_setup.exe

9dac5eb770939e4f6c9a80233467a9f1c055f3a04038070fcb8cc8e45339d89b cherrytree_0.99.12.0_win64_portable.7z







source code :

the source code is version controlled with git and hosted by github.

you can get a clone of the cherrytree git repository issuing the command:

git clone https://github.com/giuspen/cherrytree.git

cd cherrytree

./cherrytree



that will create a folder named cherrytree in the terminal working directory, enter into it and run cherrytree development version.

in order to update the local repository with the server repository updates you don’t need to “git clone” all the time but simply run the following command from a terminal whose working directory is cherrytree:

git pull

NOTE: for running from Python source on Mac, using Homebrew:

brew install pygtk

brew install pygtksourceview

… and look at https://github.com/giuspen/cherrytree/issues/176 for users feedback

NOTE: for running from Python source on Windows you need the following:

• download http://www.giuspen.com/software/gtk-2.24.10-win-bundle.7z and extract to C:\

• install Python 2.7.x 32bit from https://www.python.org/

• add “C:\gtk2\bin” and “C:\Python27” to the environment variable “Path”

• install PyGTK all in one installer from http://www.pygtk.org/downloads.html being sure to include at installation time PyGtkSourceView2

• download http://www.giuspen.com/software/C_Python27_Lib.7z and extract the content of the folder C_Python27_Lib to C:\Python27\Lib

• in order to have spell check working you need to install also http://pythonhosted.org/pyenchant/

• in order to use password protection you need to put 7za.exe in the folder git_cherrytree or in a folder which is in the environment variable “Path” (download from http://downloads.sourceforge.net/sevenzip/7za920.zip)

• in folder cherrytree, instead of command “./cherrytree” use “python cherrytree”