Linux GUI-oriented programming languages
March 31, 2008 3:51 PM   Subscribe

What programming languages exist for Linux (preferably Ubuntu) which create GUI applications with ease? I prefer to avoid the Microsoft Studio route as I don't have a ton of cash lying around, and would like something that abstracts the GUI so I don't have to deal with the nitty-gritty of the OS.
posted by chips ahoy to Computers & Internet (26 answers total) 15 users marked this as a favorite
 
PyGTK
posted by ReiToei at 3:55 PM on March 31, 2008


Tcl/Tk. It's kinda obscure, and it won't give you the most polished UIs, but it's pretty cool and powerful.
posted by mpls2 at 4:02 PM on March 31, 2008


If you know C++, the Qt toolkit is a great resource. Of course, it makes a lot of sense to use Qt with KDE, so you might be better off using it in a Kubuntu environment. There's not reason that Qt apps can't happily coexist with Gnome, though.
posted by mr_roboto at 4:05 PM on March 31, 2008


Well, Qt has the Qt Designer, but it's limited to C++. Java support is available via Jambi.

Glade can be used with several different languages (e.g., C, C++, Java, Perl, Python, C#, Pike, Ruby, Haskell, Objective Caml and Scheme), so it's more flexible.

Gambas is similar to Visual Basic though not compatible with it.
posted by jedicus at 4:06 PM on March 31, 2008


Java. It's free, it's portable, and it's so close to C++ that you can easily transfer learning from one to the other.

As an aside, note that MS does release a free version of Visual Studio for C#, under the Express line.
posted by nomisxid at 4:07 PM on March 31, 2008 [1 favorite]


Seconding C# Express
posted by ReiToei at 4:09 PM on March 31, 2008 [1 favorite]


To expand a bit both the Qt (C++ based) and GTK+ (C based) toolkits provide good abstractions of the graphical interface. You won't need to deal with any OS-level stuff using either of these. Neither of these is a language per se, but all of the tools needed to build C or C++ based applications using these toolkits are freely available, as is ample documentation.
posted by mr_roboto at 4:13 PM on March 31, 2008


C# and Mono. Unlike most cross-platform alternatives, there exist screenshots of actual apps built with it that don't look like ass.
posted by Armitage Shanks at 4:17 PM on March 31, 2008


Java and Swing.
posted by polyglot at 4:27 PM on March 31, 2008


java. you can get a really nice IDE and a great set of libraries. you can write portable applications with sophisticated user interfaces. it's free. it's a damn fine language.
posted by stubby phillips at 4:35 PM on March 31, 2008


If by "with ease" you mean "with a wysiwyg dialog editor", wxpython probably isn't what you want. Although I think there are commercial solutions, there is Boa constructor and there is wxGlade (which is a pretty simple tool). If by "with ease" you mean "with tons of standard GUI controls," I'd recommend it. There's nothing else out there that has a comparable range of standard widgets.

"apt-get install wx2.6-examples" should install it and the demo application, which you can check out to see if its the sort of thing you'd like.

It's cross platform (I can vouch for it on Windows and Linux - it's supposed to work on the Mac as well). wx is a C++ toolkit underneath, so if C++ is your language of choice (shudder), you can get the same widget set using C++. The real beauty of wxPython is that you get a native look and feel while working in a more powerful language than the C++/Java/C# family.
posted by bonecrusher at 4:36 PM on March 31, 2008


Seconding Java, but specifically using the NetBeans GUI builder if you're looking to easily create GUIs.

The GUI builder (also known as "Matisse") is built into the Java version of the IDE. When you download NetBeans 6.0, you'll want to choose the "Java SE" version.

NetBeans is both free and open source. Eclipse is another great free/open source IDE for Java, but built-in support for designing GUIs is an area where it falls a bit short.
posted by tomwheeler at 4:41 PM on March 31, 2008


Shoes abstracts the hell out of it.

Glade and variants like wxglade try to make UI-building easy, but, in my (not very recent) experience, don't get there.
posted by Zed_Lopez at 5:03 PM on March 31, 2008


Nthing Java with NetBeans 6.0. Matisse is very nice. And your apps and projects will run, compile, etc on Windows or Linux or anything else.
posted by delmoi at 5:21 PM on March 31, 2008


To add to the cacaphony: PyQt. There's an awesome book about it. You can use the Qt designer to design your GUI, and you also get to program in Python. I would consider both to fit the "with ease" requirement nicely.
posted by zsazsa at 5:31 PM on March 31, 2008


nthing Java again. Swing is plenty okay and there's certainly a ton of intertube information available for it. If you're looking to build a beefier cross-platform application, the Eclipse Rich Client Platform is stupendous. Azureus and RSSOwl 2.0 are both RCP applications. Steep learning curve though.

The RCP framework is less a GUI-builder in terms of "I want this button over here" and more of a "here's my pile of Java objects and here's how I want them displayed; you take care of the window management and the menus please".
posted by mindsound at 5:58 PM on March 31, 2008


Please do not attempt to use Tcl/Tk. I tried once, for money, and it was exceptionally unpleasant.

As for a positive suggestion, I have none. Other than, 'use something based on python'. Very little else is going to get you as much programmer productivity, and unless you're writing massively distributed applications, that matters more than anything else.
posted by enkiwa at 6:29 PM on March 31, 2008 [1 favorite]


"Very little else is going to get you as much programmer productivity" is a very religious statement. Python's good. Other stuff is good. Almost everything above will build you a GUI where you don't have to touch a POSIX thread or a device filehandle.

though I totally concur Tcl/Tk is raunchy
posted by mindsound at 6:47 PM on March 31, 2008


I have recently used both Java with Netbeans 6.0 for an app I wanted to run across all my machines (Mac Mini, Windows Vista and Ubuntu), and also Visual Studio Xpress VB.Net for an app that only needed to run on Windows Vista.

With deepest apologies to the Java lovers in the thread, in my opinion there is no question that VB.Net Express was a pleasure to use, and Netbeans 6.0 was nice but not anything to write home about.

Of course, both are free so you can experiment and see which you prefer. But if you end up liking VB.Net Express more at least you'll know you're not alone.
posted by forthright at 7:08 PM on March 31, 2008


If you asked this in 6 months, I would likely suggest Adobe AIR with ExtJS. But AIR is still in alpha for Linux.
posted by gsteff at 8:10 PM on March 31, 2008


I whole-heartedly second the recommendation for Shoes.

Ruby is a great language, and Shoes is a great little interface toolkit. It makes desktop app programming as easy as Rails makes web programming, and it looks and acts right at home on Windows, Mac, and Gnome/GTK.
posted by mbrubeck at 8:25 PM on March 31, 2008


Shoes looks nice from what I've seen, and _why (the author) does good work... Tk 8.5 is visually much prettier than the old versions, can be used from many scripting languages (not just Tcl), and is packaged for Ubuntu - newly launched docs site here... if you don't want to deal with the "nitty-gritty of the OS" then you want to stay the hell away from Java and go with something on top of a scripting language...
posted by russm at 1:57 AM on April 1, 2008


Ultimate++

I've used it to make a Unix, Windows and OsX GUI app.

Although, they need to do more for OsX. Makes a real compiled App, using native widgets. More serious than the GUI built on script languages.
posted by lundman at 1:58 AM on April 1, 2008


I work pretty much in what you, chips ahoy, describe. After quite some looking around i chose python and wxWindows. It is simple, stable, complete and pretty. Crossplatform works very well, and python gives you access to a large set of 3rd party modules that can do pretty much everything. wxGlade is a gui builder you can use, mainly at first because later you will probably just do it by hand in the code as it is simpler and faster.

If, like me, you need to do a little learning before you start then i recommend a book: wxPython in Action by Noel Rappin and Robin Dunn. To learn python itself there are many many sources and most work pretty well because python is easy to learn. If you'd like to take a look at the book, send me an email and i'll send it to you.
posted by CautionToTheWind at 5:22 AM on April 1, 2008


So, forthright... how's that VB app running in Linux?

Look I completely agree that the MS Studio tools, even the Express versions, are great IDE's, and the languages are pretty powerful. I use VS 2005 (C#) at work and VC++ Express at home. But know what you have there - a huuuge app (counting the dot-net framework), and a lock-in to a platform.

If you go with Java, or C++ and one of the cross-platform GUI libraries like wxWidgets, you'll have a GUI app that (in theory) will run on Windows, Mac and Linux.

Also, I still harbour an irrational dislike of VB. Yecch!
posted by Artful Codger at 1:34 PM on April 1, 2008


Nthing the Java recommendations.
Personally, I use Eclipse and RCP. Eclipse does have a visual gui builder (look for the Visual Editor plugin) and yes, there is a bit of a learning curve...
posted by Arthur Dent at 4:10 PM on April 1, 2008


« Older coffee roaster in Dallas, TX?   |   Where to go? Newer »
This thread is closed to new comments.