IME Menu Design Guidelines
Input Language Menu
From GNOME 3.8, it will be possible for Input Method Engines to populate the GNOME 3 Input Language Menu with their own menu items. In order to ensure that the Input Language Menu is consistent, well designed and properly integrated with GNOME 3, IME authors should follow these design guidelines for their menus:
- Only include menu items that will be frequently used. Options that are not required on a regular basis should instead be included in the IME preferences window.
- Try to restrict yourself to no more than three menu items (these can include sub-menus).
- Labels should be written in US English, with common abbreviations after them in brackets. For example: "Typing Method (R)". Avoid only having short abbreviations for menu labels.
- All menu labels should be translatable.
- Label menu items with verbs for commands and adjectives for settings.
- Use sentence capitalization: capitalize all words, with the following exceptions:
- Articles: a, an, the.
- Conjunctions of three or fewer letters: and, but, for, not, so, yet ...
- Prepositions of three or fewer letters: at, for, by, in, to ...
- Avoid mutable menu items (menu items whose label changes after it has been selected). Instead, consider providing two adjacent menu items for the commands. Then make the items sensitive or insensitive as the situation demands.
- Do not use mutable menu items to toggle a two-state setting (for example, Show and Hide). Use a check box or radio buttons instead.
- Avoid repetition in your menu. It is not necessary to include the name of your IME in menu items, for example. Items in sub-menus do not need to include the name of the submenu, either. Within a "Dictionary" submenu, "Add to Dictionary" can simply be written as "Add", since "Dictionary" has already been stated.
- Items that should not be included in your IME menu:
- A menu item that opens your IME preferences window. The menu already contains a link to the Region and Language settings - this can be used to access your IME preferences
- An "About" menu item: this will not be frequently used, and is therefore not needed in the menu.
- Only include options that will be used infrequently and which are used as permanent user preferences. If an option is changed for short periods of time, it should be included in the Input Language Menu.
Name your window "<IME Name> Preferences".
Follow the standard GNOME guidelines for layout.
To make preference windows integrated with GNOME:
- Create and install a .desktop file. Name it ibus-setup-%s.desktop, where %s is the engine name. Make sure it includes:
NotShowIn=GNOME; Type=Application StartupNotify=true
- Check if the GNOME_CONTROL_CENTER_XID environment variable exists and if it does apply the following properties to the toplevel window:
- set WM_CLASS to "Gnome-control-center"
- set _NET_WM_STATE to _NET_WM_STATE_MODAL
- set _NET_WM_WINDOW_TYPE to _NET_WM_WINDOW_TYPE_DIALOG
- set WM_TRANSIENT_FOR to the integral value of the GNOME_CONTROL_CENTER_XID env variable
Here's an example patch for ibus-anthy doing the above in python and gtk+: https://github.com/rtcm/ibus-anthy/commit/63745ac30aa452b55433656087646f9e2d8a638c