You're viewing a single post. I have much more to say! The main blog page is a good starting point.

Text-to-Freemind released!

I’m happy to announce the first (and perhaps even last) version of text-to-freemind, a simple text to FreeMind conversion program, licensed under the GPL.

This program converts tab-indented text files into an XML format suitable for display by FreeMind. It was written out of annoyance with the FreeMind user interface, and the lack of ‘merging’ capabilities when collaborating with other people.

Input like this (indentation should be done using tabs)...


...results in:

Text-to-Freemind sample output


Usage is like most command line programs. Proceed as below. To convert a single text file into a Freemind file, use:

text-to-freemind >

You can use it as a filter (using shell pipes) as well:

cat | text-to-freemind >

A Makefile snippet is also included to convert all *.mm.txt files into their *.mm counterparts. First copy or symlink the makefile, than run make.

cp /path/to/text-to-freemind/text-to-freemind.make Makefile


ln -s /path/to/text-to-freemind/text-to-freemind.make Makefile

Or execute the Makefile directly if you don’t want to copy files around:


Of course you have to chmod +x text-to-freemind.make first.


The conversion program is written in Python (tested with 2.4 and 2.5) and requires an ElementTree implementation. Install python-elementtree or python-celementtree (included in Python 2.5) if you run into programs.

The Makefile snippet obviously depends on the make utility. GNU/Make is known to work.

Get it!

Code is available from the Text-to-Freemind bazaar branch (use bzr branch on that url to get it).

If you don’t feel like messing with version control systems, just copy the text-to-freemind and text-to-freemind.make files somewhere in your $PATH (make sure you set the executable bit on both).

Issues, problems, and feedback

This program is a quick hack, so don’t expect too much of it. If you feel like contacting me with problems or suggestions, please mail me. Thanks.

Update: I’ve improved the error message syntax and the input encoding assumptions (always UTF-8 now).