WMApp: A DockApp Graphics Library

WMApp is a C++ based library for writing WindowMaker-style dockapps. To write a dockapp, it is generally necessary to perform some magic Xlib incantations, supply a clipping mask, and set up X event checking. Like larger graphics libraries such as GTK+ and Qt, WMApp automates this process by providing the classes and functions necessary for widget creation and callbacks. The library provides numerous widgets, all with the traditional dockapp appearance. Many common dockapps could already be rewritten to use this library.

The current version is 0.0.4.3. Download it here [52k] or read the Changelog. There are also a README and FAQ.

WMApp is made available to you under the GNU General Public License, version 2 or later, at your option.

[Running instances of wmexample]

Here are screenshots of wmexample and wmatc, a couple of example dockapps written with the library (and included with the source code). Clicking the check box with different mouse buttons causes several things to toggle, as shown in the first two images below. Pressing the X button (when it's active) exits the app. The third image shows how easily the appearance of the dockapp may be changed; just two lines of code were edited to produce this effect.

The fourth image shows the results of pressing the swirl button: a miniature paint program. WMApp allows a dockapp to have several different states, with each state having a different layout and functionality. Finally, on the far right is a screenshot of wmatc, a small dockapp game showing the potential of the WMApp library.

Widget List

WMApp widgets available (most shown above) include:

Issues

With all these great features, what is the catch? First of all, you obviously need to write your dockapp in C++. Since WMApp is written in C++, it will not make a good dynamic library until the g++ authors stabilize the C++ ABI. Until then, the best way to use it is as a bunch of classes in a separate directory of your dockapp source tree. As a result, dockapp executables built with the library will be larger than other dockapps.

Due to the extreme alpha state of this project, there are still many bugs and limitations. The API is probably not even close to stable. Numerous other types of widget will be added. Other issues are listed in the FAQ and the README file in the source tree. If you want to contribute, please get in touch with me.

Copyright © 2002-2008 Kevin B. McCarty and Jason B. McCarty.

[Valid XHTML 1.0!]