There is no one way to do it. This is different than in windows.
For full blown applications the two most popular windowing toolkits are gtk and qt. gtk's first language is C, but there are bindings for it for c++ (called gtkmm), perl, python, and probably several others. qt's first language is c++ with some small extensions (you use a special preprocessor). I don't know what other languages you can use with qt.
tcl is a scripting language and tk is a windowing toolkit for it (I think I've got that straight). The results are usually ugly to look at IMO.
If you want some more complications, and I know you do, there is the gnome desktop environment, which uses gtk and provides additional facilities, including a registry-like configuration system and bonobo, which is a component system which I think I've been told is like COM, though I haven't used either
. KDE is a competing desktop environment, which provides similar things to what gnome does but uses qt. If a user is running the KDE desktop environment, he can still use gnome applications, and visa versa. Moreover, the user can use neither desktop, just a skinnier window manager, and still run applications from gnome and KDE.
gnome vs. KDE is nearly as religious as vi/vim vs. emacs, and if one is better than the other, it's not by much.
gnome and kde both provide ides and graphical gui builder things, but you by no means have to use them. I recommend vim because it's better than emacs. grin
So, you get to choose one direction and go with it. A C or C++ app in gtk or qt will probably end up looking (and installing) most professional, but for smallish apps development will probably go faster with perl python or tcl.