The Laxkit


The Loose Amalgamated C++ Xlib Wrapper Kit
-- Version --
Frequently Asked Questions

What's it all about?
Why on earth make another X toolkit?
No, really, what's up with this?
Don't you have anything better to be doing?
Who should I complain to?

What's it all about?

The Laxkit is a C++ Xlib wrapper. If you are looking for a window toolkit for X that is highly experimental and whose API is quite unstable, this is the toolkit for you. For code maturity, speed, portability and just general availability of doo-dads and robust user community you're better off with FLTK, Gtk/Gtkmm, Fox, Qt, etc, etc.

The Laxkit is currently in the "Mediocre" stage of development. Its purpose, I suppose, has been to provide lots of widgets useful in making arty sorts of programs to help me make my art, which runs from laying out cartoons into books, to polyhedral math sculptures. There are capable bits and pieces in various and sundry programs, but mostly they are barely documented, and otherwise embedded in massive code bases that I don't (yet) understand. Art program essentials should be easy to get to, easy to use, and well documented.

Unusual features include various mesh based manipulation interfaces. Also there is some support for multi-mouse support, to allow the poor person's multitouch using 2 mice.

Why on earth make another X toolkit?

I started to develop Laxkit in early 2003 partly to learn how to program under Linux and X better, and partly for being picky and stubborn. As for other toolkits, their standard widgets were really very unsatisfactory for the sorts of programs I wanted to make. I figured it would take just as much time rolling my own as figuring out Gtkmm or Qt, for instance. In retrospect, that's been totally false, and I probably would have been happy with Fltk or Gtkmm, not to mention that that would make me more useful on other projects, but it's too late now! I suppose it has taken several years longer than I had initially envisioned (so far). Please remember that while I try to be careful, I am an artist, and certainly not a professional programmer.

I would probably have gone for Fltk, which is looking better and better. Fltk2.0 in particular is set up quite nicely. It is quite streamlined, portable, well documented and very easy to use. I just might port all my new widgets to fltk, and be done with the Laxkit! However, Fltk is meant to be totally lean, and currently does not natively provide mixed left-to-right and right-to-left languages, or color management (though, right now neither does the Laxkit!!). The Laxkit aims to be lean, but still provide enough conveniences to make good art programs somewhat easily.

It is possible in the future I'll port the more useful things to Qt or Gtk, or into a distinct library to provide the ability to share tool interfaces in different programs. This is a long term goal, but much research an coding must be done to make this happen.

Besides, despite what everyone always says about it being bad, wasteful, and even irresponsible, reinventing the wheel is fun!

No, really, what's up with this?

Most toolkits have the basics down great, but the actual user interfaces usually don't do enough, and are not very configurable in a way that I find convenient. I strive for a system that allows somewhat easy creation of interfaces that are a cross between the Gimp and Blender. I use Vim, by the way.

Some features that might be noteworthy in the Laxkit are copious documentation within the source code, widgets that utilize the mouse wheel thoroughly, such as speeding up the scroll speed when shift or control is pressed while the wheel is turned, an option I hardly ever see (ding is a notable example that has such scrolling features), and text edits whose internals are easy to tweak in useful ways. Another unusual standard widget is a SplitWindow, which is reminiscent of how the program Blender organizes windows. Also included is a container widget very loosely based on a TeX sort of layout scheme, so you dump in a whole lot of boxes with preferred widths, allowable shrink and grow values, and resizing happens in a more pleasant manner than with many other toolkits.

Don't you have anything better to be doing?

Well, yes, but in the meantime, let me just mention that one long term goal for the Laxkit is to abstract the rendering mechanisms to allow swapping out the backends, so you can render window widgets onto Cairo contexts, or to gl surfaces using the exact same code. Long way to go yet!


If you have complaints and/or contributions as to how to streamline my dilettante code, please let me know. I'm sure there are a lot of little programming tricks and Xlib+window manager pitfalls I haven't a clue about. "Chuck all this, and switch to Fltk or Gtkmm" is probably very good advice to me, but I don't want to hear it (but try again in one more year). Please help develop! I'd rather be drawing cartoons.

Here is the person to complain to: Tom Lechner Logo Support This Project      Last updated February 2014