I'm familiar with web programming, both client and server side, and I'd like to expand a bit my knowledge in order to be able to write some desktop programs.
My problem is that I'm not really familiar with the desktop way of managing widgets. As far as I understand, in a typical desktop programs, widgets have their own life, sending signals to each other and reacting to signals with callbacks. So every widget is an object with lots of methods. This adds a further complication with respect to what I know now, and I'm not sure I want to learn this at the moment.
On the web you tipically describe the elements on the page with a markup language, usually some version of HTML, and when an event is fired you modify the elements with Javascript. I'm trying to understand if there is a way to use the web paradigm in a desktop program. I'd like to be able to describe widgets via a markup language (these will be static) and alter them based on events. If I understand correctly, XUL based applications work this way.
The problem is that the documentation I can find about XUL seems a bit outdated. Is learning XUL a good idea? Can I expect to be still using it a few years from now? Or is it becoming already an old technology?
In case XUL is not a good idea, what are the alternatives? For the most simple applications, where the widgets static, or are only slightly modified, there are some easy tools, but what about a more complex program?
EDIT: I should mention I mainly use Ubuntu, so I need a linux or OS-independent tool.