Where should that dang button go?

So, here we have the Aqua Human Interface Guidelines (i.e. the MacOS-X user interface guidelines), the GNOME Human Interface Guidelines, the KDE User Interface Guidelines and of course the Microsoft Windows Official Guidelines for User Interface Developers and Designers (I came back in January of 2018 to fix this link — also interesting is the section on margins and spacing).

Apple says that “The default button for dismissing a dialog should go in the lower-right corner. If there’s a Cancel button, it should be to the left of the default button.”. Gnome seems to imply that the default button should be on the bottom right, with other buttons to its left, which is more or less consistent with the Apple guidelines.

Microsoft says: “Lay out the major command buttons either stacked along the upper right border of the dialog box or lined up across the bottom of the dialog box. Position the most important button — typically the default command — as the first button in the set.” The KDE User Interface Guidelines don’t seem to set specific constraints on this kind of button placement, but judging by many of the standard KDE 3.1 applications, the dialogs seem to follow the Windows convention.


So, amongst these major user interfaces, it seems there are two camps: the “default-button-first-in-the-group” camp and the “default-button-in-the-bottom-right-corner” camp, which leaves us with a major headache if we’re trying to develop cross-platform software. No matter what convention you choose for, there are going to be clashes between the dialog boxes you’ve designed for your application and the OS-specific common dialogs (e.g. colour selection, font selection, etc.) that you’re bound to use.

I’m afraid that I’m going to have to opt for the Windows/KDE convention. Linux users have learnt to live with the inconsistency (KDE vs Gnome conventions in this case) and will probably not notice. Windows users on the other hand, are quite used to the relative position of their buttons. I confirmed this by conducting a survey amongst a large group consisting of one novice Windows user. How’s that for solid research?

Seriously though, the application in question will mostly be used by two kinds of users: Doctors or non-geek professionals using Windows and Super-Geeks Using Linux. The former group will probably be significantly larger than the latter group.

What do you think?