To draw a simple 3D button using Xlib directly, a client must draw a couple of rectangular windows, shade them to give the appearance of beveled edges, monitor mouse events, be able change the button's appearance if it gets pressed, and so on. To make this job easier, there are additional libraries of functions, known as toolkits, that include oft-used combinations of the Xlib functions. These combinations are called widgets. The toolkit takes care of all the little Xlib details. In addition to simplifying the work of the programmer, toolkits give applications consistency.
Applications made from the same toolkit simply look like they belong together.
By tweaking the individual toolkit widgets, developers can change the look and feel of all the applications that use that particular toolkit. Widget sets are not normally inter-changeable because they usually have different interfaces to the programs that use them. However, sometimes it is possible to replace a widget set. You can do this with Xaw, the Athena Widget Set. The original Xaw widget set has a simplistic 2D look, but its later developers have created new widget sets for Xaw that look different from the original.