Embroidery design on Linux now possible with Thred


So you are into arts and crafts, and as much as you love Linux, you could never find a real tool for creating embroidery designs. Your quest might soon be over: Nathan Summers contacted us to tell about Thred, a free embroidery editor for Linux he’s been working on since last year.

Creating things with your own hands is so very Linux, yet vendors of hardware like embroider machines fail to understand that deep in the core those hairy UNIX sysadmins would rather be glad to contemplate a network restructuring strategy over a good cuppa of tea and a knitting pattern or maybe do a very reasonable Richelieu while backups are being copied between hosts.

Naturally, all of the active Libre Graphics World staff stands up to applaud Nathan who seems to radiate Coolness Through Having Things His Way. After all, even Linus himself doesn’t seem to have got much further than creating pesconvert.

But let’s not get carried away. Last year Nathan Summers and Wife © looked this grave situation inna face and decided they could beat ten kinds of mouline out of it.

In Nathan’s own words:

My wife and I bought an embroidery machine last year, and I was appalled at the lack of available Linux software for designing machine embroidery. I found a program available for Windows that had the source code available for people who “want to see what makes [it] tick”, but no clear license, and convinced the author to let me port it to Linux and make the source code available under GPL3.

What Nathan did next was a considerably straightforward move: he ported the application to Linux using winelib, published source code at Gitorious.

Thred’s main window

So LGW asked Nathan a few questions.

I see that there are two branches of the app at Gitorious. Why?

The 3.x branch is the original software ported over as closely as possible, while the master branch is for new development work. At this point the major difference is that all the inline assembly has been translated to C, so that eventually it will be possible to use the software with an instruction set other than 32-bit x86.

How would you characterize the UI yourself?

As it’s just a straight port, it looks and feels pretty much exactly like the Windows version. The interface has a Blender feel to it, both in the fact that it deviates from platform user interface standards and in the way that keyboard and mouse pointer interact.

I bet any true Linux users out there would say “Yuk! Winelib!”. Any grand plans regarding that?

My first priority is to try to wean it off the winelib dependencies and to have the Linux build use GTK+ for the display. Since it already compiles for Windows with the native toolkit, it would be a shame to to lose that ability, and so I’ll have the ability to build with either. Maybe sometime someone will create an Android back-end as well.

A DST vignette

There is also some low-hanging fruit like moving menu items to more usual locations that should be done. After that’s taken care of I’ll assess bigger changes, like maybe adding a toolbar.

What are the most urgent, interesting or simply missing things you’d like to implement first?

Most urgent is support for more file formats. Every machine seems to require a different one, and Thred doesn’t even support the format our machine takes (it only reads DST, PCS and it own files). It would be cool for someone to create a command line converter a-la SoX and ImageMagick for machine embroidery — I would name it “stitx” myself.

What seems most missing is support for beziers — right now you have to do everything as lots of little straight line segments. Hence it would be interesting to have an SVG import ability, so that you could do the design in Inkscape and then specify how to stitch it using Thred.

Embroidery is interesting in that it’s even more “vector” than the kind of graphics normally done in Inkscape. Inkscape’s abilities to edit outlines are much better than Thred’s, and so they could be a great combination.

So what embroidery design workflow exactly do you propose?

The typical workflow for designing embroidery is to start with outlines (“forms” in Thred terminology) that may or may not be actually stitched in the final design. The program then applies various user-specified effects in order to determine where to place the actual stitches. The output of that step can then be hand-tweaked as necessary.

“Machine” formats like DST and PES only save the results of that last step. The original outlines are not preserved. So opening those formats for editing only allows you to adjust individual stitches — an impractically tedious and error-prone process.

What I am suggesting is to create the outlines in Inkscape, and then import them into Thred. That way you can take advantage of Inkscape’s far superior outline editing abilities and then use Thred for the automated and manual placing of stitches.


Thred is currently available as both source code and daily builds for Ubuntu. We encourage you to try it and help Nathan making a real native application.

News logo and at least one of the examples are deliberately taken from www.4-hobby.com.