Hacker News new | past | comments | ask | show | jobs | submit login

With my consulting work, I still end up doing a lot of desktop application development. I've been on the lookout for a GUI toolkit that I could use to replace WinForms in my workflow. Ideally, it'd be cross-platform, support native widgets, and provide the de facto standard OO API that every other GUI toolkit has converged on. I know WinForms doesn't check all those boxes, but I see no point in moving to WPF which checks even fewer.

So I get excited when GUI toolkit projects get posted on HN. And then I'm usually deflated when I look at the screenshots. I know they haven't built these programs themselves, so it's not necessarily their fault that these developers have gone with the everything-and-the-kitchen-sink style of UI design. But they also chose to feature these particular projects, so someone there thinks these are good examples, which does not speak well towards their commitment to enabling good design. https://www.wxwidgets.org/about/screenshots/

Most of these examples feature something you should never do: selectively replacing the standard widgets from your operating system's toolkit. Either create/use a different toolkit entirely or use the defaults, don't mix and match.

It's disheartening to think that, in 2016, the least-bad way to design a UI is to wrap up a browser as a widget and sling HTML/CSS.




I'm really not sure what you mean. wxWidgets is a wrapper around the underlying GUI framework.

AFAICT, all of those screenshots are using the standard wxWidgets UI elements, with the obvious exceptions of the audio waveform, the on-screen keyboard, and the 3D graphics widget, which will not be standard components in any GUI toolkit.

The variation is due to the users taking the screenshots using different themes or styles in Gtk, KDE, Windows, etc..


I was not talking about those very purpose-specific widgets. I know they aren't standard components. I'm also not talking about theme- or OS-specific differences. I'm talking about the fact that few of the examples maintained a 100% consistent look and feel within their own theme. These are not nitpicky things. Maintaining visual consistency between applications is key to achieving usability. Here are some examples:

All of the buttons are non-standard, but the gridview headers and tab controls are standard: https://www.wxwidgets.org/about/screenshots/cars-hotsurf-msw...

Non-standard toolbar buttons, repositioner handles, and rendering and location for tool-window close boxes: https://www.wxwidgets.org/about/screenshots/audacity-msw.png

Skinned background and non-standard grouping panels, but standard buttons, menus, textboxes, etc: https://www.wxwidgets.org/about/screenshots/boinc.jpg

Non-standard coloring on buttons in toolbar: https://www.wxwidgets.org/about/screenshots/ginkgo-windows.j...

Link-buttons used for commands ("Run Benchmark") and reskinned, giganto elements mixed with standard, tiny elements: https://www.wxwidgets.org/about/screenshots/sysmark2012.jpg

An MDI hacked together out of grouping panels: https://www.wxwidgets.org/about/screenshots/trident-msw.jpg

There was absolutely no reason to reskin these buttons and textboxes. Skeuomorphism is bad design: https://www.wxwidgets.org/about/screenshots/audio-evolution-...

A hacked together Ribbon view out of a tab-view placed in the toolbar location, but they also include a separate toolbar section. Finally, that "calculate" button should follow its config elements, not precede them: https://www.wxwidgets.org/about/screenshots/coppercube-msw.j...


I'm simply baffled that you're nitpicking little things like those, and then jumping to the conclusion that wrapping a browser widget is the best way to display a GUI in an end user application. HTML/CSS UIs you're suggesting are notorious for using ugly, non-standard, completely hacked up widgets with ridiculous styling that don't fit in with the rest of the system.

Furthermore none of your nitpicks are due to wxWidgets itself and are mostly due to the application developer making usability choices (i.e. using customized buttons, grouping toolbar buttons using color, etc.) or simple mistakes (like forgetting to turn off the grid view header).


As I said before

  I know they haven't built these programs themselves, so it's not necessarily their fault
  that these developers have gone with the everything-and-the-kitchen-sink style of UI 
  design. But they also chose to feature these particular projects, so someone there 
  thinks these are good examples, which does not speak well towards their commitment to
  enabling good design.
And they aren't little things. Replacing standard buttons in some cases but not others confuses the user as to what elements are actually interactive. Not using the layouts that the operating system vendor recommends for different types of applications confuses users as to where to expect to find things. Using your own, janky set of icons without text labels confuses users as to which buttons do what.

I mean, have you even used KiCAD? It's an absolute abomination of UX.

You know how programmers have a reputation for being bad at design? You know how programmers have a reputation for "not having any common sense"? This is why.


The point is, using a silly web UI in a browser widget, as you suggested, makes the problem worse.

TBH your argument sounds like a designer trying to justify being a designer. No real users are "confused" by any of the things you've nitpicked about. You're conjuring up some uber-stupid theoretical user as a strawman. But feel free prove me wrong by finding real people on the web complaining that they're confused by those issues.


I think it's the influence of the web that has allowed these deviations from standard to flourish in a way that they couldn't have 20 years ago. When every widget on a web page is new and unknown, you just learn to deal with it. Certainly you can find bad design both on native apps and on the web.


Yeah, these look pretty bad. If you are going to reskin, reskin everything. However, on Windows, you really cannot. Even more so if you are using the "classic" interface. On my last count, the scrollbars would redraw themselves in response to 11 different types of messages (not only WM_PAINT and WM_NCPAINT, as one would expect). And the API wouldn't give you a handle for you to draw them yourself, windows forms or not.

Also, it doesn't help that most of the screenshots are quite old. Where are the apps running on Windows 10? The OSX screenshots, when present, are from the first OSX versions.


Those things are solved by non-native toolkits.

Qt comes to mind - which allows simple css styling of the whole UI, applied everywhere, in a simple manner – but still can look native.


Just getting done with a pretty significant realtime plotting app using CMake, Qt 5.5 and QWT. I have to say, it's been a mostly painless, pretty pleasurable experience. The Stylesheets CAN be a huge pain though. If you get a good and organized architecture down, it is by far the best method to style a desktop app I've ever used. Especially if you utilize QObject properties!


I'm not sure I see wxWidgets as being the real problem here. The real problem is bad UI design, and you'd end up with that regardless of the toolkit used.


I am often in the same position. There are only more or less bad options, no good ones. Even on Windows only it's hard to pick a good toolkit for apps that can run from Windows 7 to App Store.

I haven't used it much but Qt seems to the best option at the moment.


I will have to look closer at Qt, then. The last time I looked at it, it seemed like it required a hefty licensing fee for commercial use and building forms required use of their janky editor. But that was a while ago, so it could have changed. The only proprietary editor I have room for in my life is Visual Studio, and even that is begrudging.


FWIW, I think Eclipse's SWT is the least bad option among cross-platform desktop GUI toolkits. Have you used it?

wxWidgets is a close second, but there are some caveats. For example, for a native multi-column list view, you have to use wxListView on Windows, but wxDataView on OS X and GTK.


What do you think of Qt?


I'll agree that the featured apps are badly designed (overly reskinned), but I think they have been chosen because they are well known open source applications and also because of the rich set of controls used.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: