+11  A: 

Not to kid, but HTML.

It's cross-platform, and sums up the gui-layout in a simple textfile. It's definitely mature, as well as well-understood and well documented.

There's a bunch of ways to template HTML files for dynamic content, and other ways to convert custom syntaxes to HTML if you dislike angle-brackets.

Client-side scripting w/ Javascript, server-side scripting with PHP/Ruby/Python/Perl.

It's not well suited for all purposes, but for many, it's good enough. There's no reason that it has to be served either - you can distribute a HTML file to your clients if you want - see TiddlyWiki for a good example of where that can go.

rampion
Web-based apps are OK, but the overall complexity of the thing is higher, due to unavoidable client-server interaction. Also, the # of lines of code per “event” is higher even with the latest web and js frameworks. And if an application is not entirely user-request driven, things become more tricky.
jetxee
I think that HTML is an excellent way to make a GUI. You can make it simple, or fairly complex. I have considered doing this myself for a file dialog, and probably will soon.
Rocketmagnet
Your example with TiddlyWiki convinced me that it is suitable for purely client-side GUIs.
jetxee
I've added a link to http://www.tiddlywiki.com/
J.F. Sebastian
+2  A: 

XUL (it's pretty easy to use, and powerful -- much of Firefox is implemented using XUL for GUI structure, + javascript for logic handling)

The XUL tutorial has some good examples. Here's one for tabboxes. The one at the bottom of the page has switchable tabs, buttons, edit boxes, and group boxes, and it's fairly simple (no Javascript/CSS/XBL/key bindings/etc). They then add progressively more stuff later which is a lot of functionality for the length of the file that specifies it. (at least until you start adding javascript to handle the logic in question) If I had to do something like this in Win32 it would be a real pain.

Jason S
I didn't see any easy-to-use examles of XUL use outside of Mozilla. Browsing through its Tutorial gives an impression that it is too XMLish and too verbose to be used for quick and simple GUI development. I would appreciate if you can prove the opposite.
jetxee
I guess I don't have much to compare it to, other than the various win32 tools I've used, and MATLAB's GUI; from that viewpoint I've found XUL very easy. Probably your best bet is to look at one of the Firefox extensions that uses it. (lemme find one...)
Jason S
i mean there's this example... http://www.ibm.com/developerworks/web/library/wa-xul1/
Jason S
Your examples with tabboxes and FF extensions are convincing. I'll consider it.
jetxee
I've also found a tutorial about building stand along apps with XULRunner: https://developer.mozilla.org/en/Getting_started_with_XULRunner
jetxee
Yeah I forgot to mention XULRunner. :) I guess that's kind of important. I've never tried it, I've always used Firefox to run my XUL (with the disadvantage that if your program crashes it takes down the browser :/ )
Jason S
+5  A: 

What you're describing is, with the exception of shoes, the new-fangled notion of declarative programming. I'd describe shoes more as a GUI Domain-Specifc Language. Well, I say new-fangled: Visual Basic forms, if you looked behind the IDE designer, were declarative. So, going further back still, were Oracle's SQL*Forms, although assembling them with a text editor was a process only to be be undertaken by the very bravest.

To add another to the list, Microsoft have XAML which, among other things, describes GUIs built for the WPF.

Although some of the schemes mentioned are fairly simple, declaratively-defined GUIs can be as complex as anything defined in code, they're just easier and terser: they say "what" you want to happen and leave it to the underlying framework to handle the "how".

Mike Woodhouse
It is a good answer, to point that all the examples belong to domain-specific languages. Though, I was asking for specific free-as-in-freedom examples.
jetxee
The point about “declaratively-defined GUIs can be as complex as anything defined in code, they're jsut easier and terser” is very true in my opinion.
jetxee
+3  A: 

TCL/TK is a script language used for building GUI interactively. It is available on various platforms including Unix, Windows and Mac OS X.

mouviciel
I know about Tk. It is terse indeed. But one thing that makes me avoid it is that Tk applications still look as “ugly” on my Linux box, as they did few years ago. I'm not talking about a different widget set, but about the fonts. Tought, probably, it is not a problem of Tk itself, but of my distro…
jetxee
Tile native themes make Tcl/Tk look pretty again. There are even themes to make it look like Gtk or Qt http://wiki.tcl.tk/11075
Daniel Lopez
I think this answer deserves a higher vote, but I cannot upvote it anymore...
jetxee
The issue with fonts has been addressed in the latest versions of Tk which now support anti-aliased fonts. Personally I'm more concerned about functionality and productivity in a UI toolkit rather than with pretty fonts, and in that regard Tk has almost no peer.
Bryan Oakley
+2  A: 

wxLua is a wrapper of the wxWidgets library for Lua. It uses a Connect method to attach gui widget events to functions (functions are first class like in JS).

Nick
A: 

You should have a look at XAML if you're on the .NET platform

Conrad
It is not free (open source). And even though there is a XAML compiler for Mono (http://developer.novell.com/wiki/index.php/Xaml_compiler_for_mono), I am not sure if it is 100% compatible, or will remain such.
jetxee
+2  A: 

Java Swin...

Oh, you said

Very simple, terse and easy

Nevermind.

OscarRyz
touché :) vote++;
Yuval A
+2  A: 

GTK-server is extremely simple to use and can be used from more than 30 languages, including Bash and Visual Basic.

Jakob Eriksson
Interesting project! I never thought about accessing a real API via unixy interfaces -- my experience in commandline-driven GUIs was basically limited to kdialog. I wonder if this can be generalized to work with any API.
It is certainly very interesting. It seems to be nice for scripting-controlled GUI, but it does not look “terse”. Thank you!
jetxee
How can it be much more terse than this: http://www.gtk-server.org/demo-stdin.py.txt ?And just to clarify, gtk-server works on Windows too, which opens up for things like running the GUI on Windows, but logic on Linux, but I digress...
Jakob Eriksson
You may as well say GTK. Unless I'm misunderstanding something, it's just dynamically processed C code from strings. It appears to be more complicated than the equivalent C code; which isn't what I'd call an ideal GUI framework.
Matt B.
+3  A: 

Pyjamas - http://pyjs.org - it's a desktop widget set, disguised as an AJAX-based web 2.0 widget set. it's so very much NOT like a web widget set that i actually ported it to the desktop - http://pyjd.org - using webkit (the same engine in adobe AIR, google chrome, safari etc.)

this is "hello world":

from pyjamas.ui.RootPanel import RootPanel
from pyjamas.ui.Button import Button
from pyjamas import Window

def greet(fred):
    Window.alert("Hello, AJAX!")

if __name__ == '__main__':
    b = Button("Click me", greet)
    RootPanel().add(b)

that immediately answers the first four out of five requirements. requirement 5 is fulfilled by this:

from pyjamas.ui.RootPanel import RootPanel
from pyjamas.ui.HorizontalPanel import HorizontalPanel
from pyjamas.ui.HTML import HTML

p = HorizontalPanel()
p.add(HTML("<b>Hello</b>"))
p.add(HTML("World"))
RootPanel().add(p)

it couldn't get any simpler.

This is very interesting. I have to give a look to it. Thanks!
jetxee
+1  A: 

I juat came across SDL/Swing today.

Digikata
Looks like an interesting domain-specific language. Just a note for who doesn't follow links: SDL is not for Simple Directmedia Layer here.
jetxee
+2  A: 

SDL/Swing is extremely terse, readable, unobtrusive (283k lib with no dependencies) and easy to use. Example:

menus {
    "File" {
        "Open" do="open" // calls "open()" in the controller
        "---"
        "Exit" do="exit"
    }
}

Its open source but enjoys commercial support from Ikayzo.com. Ports for .NET and iOS are underway.

Daniel Leuck