Mostly Helpful Stuff

Free Carrots #8: How To Draw

Free Carrots is an ongoing series of helpful tips for using Plan 9.

illustration by sl of an ebay listing for a custom action figure head for the x-men character jubilee, chewing gum and blowing a bubble

I honestly never thought it would come to this. First, Bell Labs software was released under a series of increasingly permissive licenses (Domino Theory, anyone?), and now people are using Plan 9 to produce finished, camera ready artwork for comic books.

Well, I am, anyway.


I am not skilled at using drawing tablets that don’t have screens. I’ve tried and failed to develop the eye-hand coordination necessary to make efficient use of them. It turns out I just want to draw as if on paper. The only real answer has always been Wacom, for better or worse.

It all started with a Motion Computing LS800, which I paid a lot of money for, and which ended up being mostly useless. It ran Windows XP Tablet Edition, badly. It also overheated frequently, making the handheld device difficult to use while holding it in your hand.

Lenovo helpfully released the ThinkPad X41 Tablet just as I got fed up with the LS800. This thing also shipped with Windows XP Tablet Edition, but as a bonus it was also capable of running Linux (and later, Mac OSX), where I quite happily drew entire comic books in Manga Studio and Photoshop. Eventually, I even got the tablet function working in OpenBSD.

Problem was, none of this was happening in 9front. Mainly because it didn’t yet exist.


Lenovo ThinkPad X41 Tablet, X60 Tablet, X61 Tablet

Fast forward a few years, and I sent the X41 Tablet to aiju, who wrote a bcm driver for its Ethernet, and made the tablet function work in 9front. This code also worked for the X60 and X61 Tablets, which kept me in business for several more years (in fact, I still draw using an X60 Tablet to this day). The Wacom in all three of these ThinkPads is a serial device, which 9front arranges to interpret as a mouse. Here’s how you set them up.

Add the following to to your plan9.ini to setup the serial port at boot time:

   uart2=type=isa port=0x200 irq=5

Run the following to enable the Wacom as a mouse device. I put it in $home/lib/riostart:

   ; aux/wacom
   ; aux/tablet &

Note: There exists a bug in the driver that results in occasional spurious readings of the x and y coordinates from the Wacom. The result when trying to draw is unintentional straight lines all over your drawing. I tried to fix this myself, and succeeded at eliminating the symptoms by simply ignoring the spurious coordinates with this patch to tablet.c, but I do not understand how to fix the underlying problem with the driver, and nobody else showed any interest, so as of this writing 9front still ships glitchy code.

Lenovo ThinkPad X230 Tablet, X380 Yoga, X1 Yoga Gen 3, X1 Titanium Yoga

Some modern ThinkPads come with an integrated USB Wacom tablet. They generally “just work,” with both the touchscreen and pen being treated as a mouse. They’re also usually recognized as separate devices, so it’s possible to disable one or the other simply by killing the associated nusb/kb process. Trial and error is required to figure out which is which. On my machines, the first kb proc is usually the touchscreen.

Machines with USB Wacom are not subject to the bug that causes glitching on serial Wacom tablets.

Lenovo ThinkPad X280, et al

Many modern ThinkPads have a touchscreen option. No pen. Some of these are not even Wacom touchscreens, but every one I’ve tried has been detected as a USB mouse, and “just works.” These are less useful than a full Wacom with pen because 9front has no mechanism for palm rejection.

Other companies besides Lenovo have made machines with integrated tablets

I just haven’t tried any of them with 9front.



paint(1) 2012

I’ve never put in the work to become a competent C programmer. Too busy reading comic books, foreign literature, and the complete 9fans and sam-fans archives several times over. To say nothing of writing my own books, recording music, and working a full-time job that does not involve programming. Around the time aux/wacom and aux/tablet first appeared, aiju wrote me a toy drawing program, which I fiddled around with ineptly until cinap_lenrek finally lost his patience and dashed off paint(1), the original 9front drawing program.

It’s great.

paint(1) 2015



dpaint is a gently modified version of paint(1) by thedæmon. Its chief benefit is a greatly expanded color palette, which comes in handy for obvious reasons. I’ve been trying to get him to add a spraypaint tool.


uxn is a virtual macine with 32 instructions. It runs just about everywhere, including on 9front. It boasts several drawing programs, more than one of which already has a spraypaint tool.



noodle was the first uxn program I tried. It seems largely inspired by the original Macpaint, and offers some neat features like native .chr format and support for rudimentary animations. Unfortunately, on 9front’s port of uxn, most of its actual drawing tools exhibit a strange bug where the pointer lags severely behind the movement of the pen. Especially strange because the bug only manifests in noodle, and not in any other uxn program.



oekaki is similar to noodle, but comes with better tools, and doesn’t exhibit any bugs on 9front. Recently, it has grown support for uxn’s theming system, which allows the user to define custom palettes. Unfortunately, this change also reduced the number of default patterns, disrupting my established workflow. I’m sticking with an older version for now.

sl's dining room w/ mnt reform laptop



Another option involving virtualization is to install minivmac and literally run ancient Macintosh graphics applications, such as Macpaint, Macdraw, Photoshop, etc. This works surprisingly well, and even though this stuff is old, it’s worth noting that most of it is newer than the cutting edge of what was available back when I started dreaming about drawing comic books on computers. Mike Saenz from 1984 would definitely be jealous.

tweak(1), spred(1), et al

Before we complete our tour of drawing software, I should probably mention that 9front also ships a couple of primitive image editors that operate on a programmatic, rather than a gestural drawing basis. Over the years they’ve mainly been used to revise fonts and simple graphics such as mouse pointers, message alerts, and face(6) files. For example, mothra(1)’s moth mode cursor was designed using tweak(1). A later program, spred(1), was mainly intended for editing sprite sheets for video games.

tweak(1)’s man page acknowledges:

   For a program written to adjust width tables in fonts, tweak
   has been pushed unreasonably far.

uxn offers a handful of similar utilities. nasu, for example, is a very capable sprite editor.

Draw the Owl

Possibly this article is mistitled. No one can teach you how to write, paint, draw, or fight. The best I can do is leave my toolbox unlocked while I wander around the job site avoiding work, trying to look busy.

You know what to do.

draw the rest of the fucking owl