Introducing Knotter, free celtic knots design app

Introducing Knotter, free celtic knots design app

Now, there's some interesting activity going on. Mattia Basaglia released the first public version of Knotter, a new free editor for creating celtic knot designs.

Rough though it may seem, Knotter is already fun to use. The principle is pretty common: add some knots, connect them, edit connection lines to define the interlace pattern.

Knotter's main window

Knotter's main window

There's also a floating dialog called Action History, where you can easily scroll up and down the list of changes to undo and redo.

In the Knot Style dialog you can change various style settings to change the way your design looks, and there's a handy preview for testing your changes:

Knot Style dialog for editing interlacing specifics

Knot Style dialog for editing interlace settings

Knotter saves files to its own file format and exports SVG files which you can open with Inkscape. If you find Knotter difficult to get started with, here is the simple example used for this article's logo.

There are some slightly annoying buglets in the app: zooming doesn't work, and it isn't possible to switch off line visualization. Plus the editor will always save outline even if you specifically set its width as 0px in the Knot Style dialog.

Also, the application doesn't have an obvious multiple knots selection yet, and has no grid with snapping or constrained dragging of knots to simplify even distribution of knots. So you'd need a really keen eye and an iron hand to use Knotter. Hopefully this will be taken care of soon enough.

But there's no reason to complain. After all, it the first public release. Stuff is expected to go *boing*.

Right now Knotter is only available in source code. However, building it is just running two commands on Linux ('qmake && make'), once you have the build system ready (which is few more commands away too).

If you don't feel like compiling software and don't mind waiting for someone else to do it for you, it's entirely possible to use Inkscape for this kind of design work.

Since few years Inkscape has been shipping with a Knot live path effect that does pretty much the same, except the UI and the workflow are different. Tav documented this Inkscape feature in his book, but maybe you want a more detailed article? Tell us!

Was it useful? There's more:


Leave a comment
  1. Cute software. I like it. i’ll play with to add tatoos to my characters. or to produce cool frames.

    It crashed often here, and if I had request, I would love a background light grey grid to help me position points and a auto symetry mode.

  2. Alexandre Prokoudine 17 August 2012 at 10:56 am

    Oh artists, always unusual applications of software :)

    Yes, completely agreed about the grid.

  3. Mattia Basaglia 17 August 2012 at 7:46 pm

    Hello, I have been working on Knotter and have added a few new features (including the grid).

    Let me know if you want some other feature or have any suggestion.

  4. Alexandre Prokoudine 17 August 2012 at 7:57 pm

    $ qmake
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/line_solid.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/line_dash.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/line_dash_dot.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/line_dot.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/line_no.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/pointcurve.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/ogee.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/pointpoly.svg’
    RCC: Error in ‘icons.qrc’: Cannot find file ‘img/poly.svg’

    By the way, storing translations in a separate directory could be a good idea. Same as source code files :)

  5. Alexandre Prokoudine 17 August 2012 at 8:03 pm

    Oh, and one more thing. With grid enabled, if I merge two knots, both of which are on intersection of grid lines, I cannot snap the resulted merged knot to grid lines intersection.

  6. Mattia Basaglia 17 August 2012 at 8:53 pm

    Those build errors may be caused from some packaging issues I had.

    I’m trying to find a good source tree layout, right now I have few files on the root.

    Double clicking a node should snap it to the grid,
    maybe I should change the dragging behaviour and snap if there’s only a single node selected.


  7. Alexandre Prokoudine 17 August 2012 at 9:28 pm

    It’s from Git actually :) Looks like you didn’t add those file to the repo.

    Typically code goes to src/.

  8. Mattia Basaglia 17 August 2012 at 9:47 pm

    I’ve pushed the local changes to the git remote server.

    Cloning and building works now on my machine.

    I’ll clean up the directory tree by tomorrow.

  9. I get this error when i try and compile on Fedora.
    Can you tell me what to do to fix this?

    Nice software by the way. :)


    [rod@rod knotter-0.4.0]$ make
    g++ -c -pipe -Werror -g -Wall -W -D_REENTRANT -DVERSION=\“0.4.0\” -DQT_SVG_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtSvg -I/usr/include -Isrc/dialogs -Iinclude -Isrc/generated -Isrc/generated -o knot_curve_style.o src/graphics/knot_curve_style.cpp
    src/graphics/knot_curve_style.cpp: In destructor ‘knot_curve_styler::~knot_curve_styler()’:
    src/graphics/knot_curve_style.cpp:232:16: error: deleting object of abstract class type ‘knot_curve_style’ which has non-virtual destructor will cause undefined behaviour [-Werror=delete-non-virtual-dtor]
    cc1plus: all warnings being treated as errors
    make: *** [knot_curve_style.o] Error 1
    [rod@rod knotter-0.4.0]$


    Thanks for any help you can give me.

  10. Problem with 0.4.0 and git version: When I run the knotter it goes into what seems an infinite loop increasing the RAM usage and then collapsing my system (Kubuntu 12.04 64bits).
    Thank you very much!

  11. Yes, Git master has some build fixes, but then crashes with

    terminate called after throwing an instance of ‘std::bad_alloc’
      what():  std::bad_alloc

    upon startup.

    Mattia to the rescure? :)

  12. Mattia Basaglia 19 August 2012 at 2:53 pm

    That should be fixed now.


  13. Yes, fixed.

  14. Super changes in less than a week ... wow !

    It’s easy to use, ergonomic, and with the Grid and other new options, I can really ‘get’ cool knot done for my taste.

    SVG and PNG export are really cool too. Very good job.

  15. Mattia Basaglia 19 August 2012 at 7:45 pm


    Getting user feedback gives me a great motivation to add new features.

  16. Almost there.  :)

    knot_window.o: In function `Knot_Window::Knot_Window(QWidget*)’:
    /home/rod/src/knotter-0.4.5/src/dialogs/knot_window.cpp:36: undefined reference to `Export_Dialog::Export_Dialog(QWidget*)’
    /home/rod/src/knotter-0.4.5/src/dialogs/knot_window.cpp:40: undefined reference to `Export_Dialog::set_knot_view(KnotView*)’
    knot_window.o: In function `Knot_Window::export_image()’:
    /home/rod/src/knotter-0.4.5/src/dialogs/knot_window.cpp:342: undefined reference to `Export_Dialog::reset_size()’
    knot_window.o: In function `Export_Dialog::~Export_Dialog()’:
    /home/rod/src/knotter-0.4.5/src/dialogs/export_dialog.hpp:7: undefined reference to `vtable for Export_Dialog’
    /home/rod/src/knotter-0.4.5/src/dialogs/export_dialog.hpp:7: undefined reference to `vtable for Export_Dialog’
    collect2: error: ld returned 1 exit status
    make: *** [knotter] Error 1



  17. Mattia Basaglia 19 August 2012 at 8:20 pm

    Looks like a file didn’t get compiled…
    Check that src/dialogs/export_dialog.cpp is there.
    If it isn’t there, re-download it.
    If it is, run

      make clean

  18. I actually grabbed the latest git clone and voila it worked!  :)

  19. By the way, how about making the Action History dialog dockable? Then users could choose whether they want it docked or floating.

    Same for Knot Style: I don’t think it takes all that many CPU cycles to apply changes to the real drawing, and with a real undo system the Apply/Cancel thing becomes not all that necessary.

    Then you could also split Style and Shape.

  20. Mattia Basaglia 20 August 2012 at 11:40 am

    Docking dialogs shouldn’t be too hard, I’ll try to work it out.

    I can add an option to edit style live, without having to press anything to see it applied to the actual knot.

    Making a style undo/redo system may take some time.

    When that will be implemented I’ll remove the preview completely and just have the style applied directly.

    Thanks for Feedback.

  21. Alexandre Prokoudine 25 August 2012 at 8:18 pm

    Well, I’m looking at the fresh build from Git and it’s looking sooo much better :) Thanks a lot!

  22. Is there a windows version?

  23. Mattia Basaglia 31 August 2012 at 3:50 pm

    Knotter is cross platform but there are no official Windows binaries (this means that you need to compile it yourself or find someone who compiled it).
    I know someone at compiled it for Windows you can ask there.

  24. If you want your program to be used more, you kinda need to also have windows version easily to be downloaded.

  25. There are build in windows now.

Tell us what you think

Submit the word you see below: