Technical X Window System and Motif WWW Sites A *lot* of links here, some of them may be useful.
The GUI Toolkit page A list of free GUI development packages (many more than I have listed here.)
Simple DirectMedia Layer:
Mesa 3D Graphics Library:
Advanced Linux Sound Architecture:
You will notice there are quite a number of widget libraries for X. Choice may sometimes be a good thing, but having ten applications loaded, each using a different widget set, hogs memory, slows your computer down, and results in an inconsistent (and thus harder to learn) user interface for inexperienced users. This is one of Linux's weaknesses. Nonetheless, some of the toolkits do have different purposes. Some are designed to be cross-platform. Some are designed to be small and light. Some are built to have many features and eye-candy (like gtk.) Some are C, some are C++, many have bindings for other languages.
If you want to learn one, and aren't sure which, I would recommend wxWindows.
Having now worked with wxWindows, I definitely recommend this API. It is useful not just for people looking to do cross-platform development, but for anyone interested in doing Windows development at all, as the API is MUCH more of a pleasure to work with than either that awful Win32 or that awful MFC. I will be using wxWindows in future for all my own general application development.
Here is a link to an online document to help people get wxWindows set up in MSVC.
The toolkit thats supposed to be the "Unix standard" is Motif. I don't know anything about its licensing terms except I believe its also not completely free, and is a bit dated. There is a free clone of Motif available, called Lesstif. (Need link here.)
hello.tar.gz (842 bytes)
A "hello world" sample. This is about as simple as it gets. Contains a Makefile, a .c file and a README.TXT.
To unzip the "tarball", type
tar -xvzf hello.tar.gz at the commandline prompt.
dlplugin1.0.tar.gz (170,778 bytes) Version 1.0
This is a Linux C++ example of how to create a plugin architecture for your applications using shared dynamic libraries (.so files), which seems to be the same method used for Netscape Navigator/Mozilla plugins.
This is somewhat experimental and I'm not too experienced with this so any feedback is welcome.
Todo: plugins don't yet have access to any sort of API from the main application.