Input Sources in GNOME

Today I want to take a look at one of the bigger new features in the upcoming GNOME release, Input Sources. I have written some early code for this, but the credit for getting it all working and completed really goes to Rui Matos and Takao Fujiwara.

On a high level, the goal of the work we’ve done here is to make input methods an integral part of the user experience, just like keyboard layouts. You should no longer have to choose and install an input method framework manually. Things will just work out of the box, and the user experience for configuring and using input methods will match the rest of the desktop.

To reach this goal, we’ve made numerous improvements to the input method support in GTK+ 2, GTK+ 3, clutter and gnome-shell. IBus itself has also seen some changes as a result of this work. So, even if you don’t agree with our decision to use IBus and choose to use a different input method framework (which is still possible), you will benefit from these improvements.

But lets look in detail what’s available.

Keyboard layouts and input methods or Input Sources, as they are now called, are configured in the Region & Language settings.

When we first merged the input method support, there was only small list of supported input methods. We have now expanded the list to include input methods for all major languages.

The reason that we don’t just include everything is to avoid duplication between keyboard layouts and input methods and special-purpose input methods that are not aimed at language-specific input. If you happen to need one of these excluded input methods or layouts, you can use the setting org.gnome.desktop.input-sources.show-all-sources to see everything.

Keep in mind that input methods are often shipped in individual packages or language-support groups, so if an input method is missing in the list, it may just not be installed on your system.

Some input methods are traditionally very configurable – we honour that by allowing them to open their own configuration UI. For keyboard layouts, some common variations (e.g. the Compose key) can be changed in the keyboard shortcuts.

You can switch between the configured input sources in the gnome-shell keyboard menu.

Again, we are respectful of input methods that traditionally have runtime configuration available in this place, and show the most important switches in the menu.

Some input methods present choices directly at the focus location. This candidate window is now using a shell-style popup, which has the same appearance regardless whether you are writing in an application or in gnome-shell.

So, what’s still missing ? GNOME 3.6 is right around the corner, but Rui is still busy working on support for layout-switching shortcuts like Alt+Shift. The user interface for changing these will find a (temporary) home in gnome-tweak-tool, together with some more keyboard layout variants.

Beyond 3.6, we want to make the on-screen keyboard play nice with input sources. We also plan to add an Alt-Tab like mode for switching input sources, etc. The feature page has some more details.

Here is a bonus screenshot which has nothing to do with Input Sources. It shows a gnome-shell feature that I recently discovered:

The Sound menu shows you the input level of your microphone – but only if an application is using audio input. Nifty !

A look at gnome-boxes

Too much talk about files, lately… what about VMs ? Our answer to that is to put them in Boxes.

When we introduced GNOME Boxes in 3.4, it was really just a preview, with much more to come in 3.6. Since then, the boxes team has been quietly working on adding features and polishing things.

So lets take a look at what’s coming in Boxes 3.6.

Boxes tries to be smart about choosing good defaults for memory and disk sizes depending on the OS that is being installed (this information is being provided by libosinfo). But sometimes, you know better,  and then that Customize button is coming in handy.

One particular aspect of customization is renaming.

This looks like just a small detail, but being able to give meaningful names to VMs helps when you have many of them, and want to find them again later. To do so, you can now search.

Search in Boxes looks much the same as search in other GNOME 3 applications. And just like for other GNOME 3 applications, your VMs will also appear among the gnome-shell search results in the overview.

Another aspect where Boxes is picking up patterns from other GNOME 3 applications is selection.

VMs are very convenient to quickly try different OSes or nightly snapshots. Boxes tries to support this by recognizing when you are working with live media. As long as you don’t make persistent changes, Boxes will treat such VMs as transient, and will delete them when you shut them down.

Sometimes, when things go wrong, it may be necessary to shutdown a VM forcefully. Boxes lets you do that.

What I cannot really show in screenshots is how much more fluid and smooth Boxes feels. A lot of work has gone into making libvirt calls async to ensure that animations run smoothly. Resizing the Boxes window very nicely adjusts the display resolution.

The Boxes command line interface has received some attention as well. You can find out if gnome-boxes will work on your machine:

$ gnome-boxes –checks
• The CPU is capable of virtualization: yes
• The KVM module is loaded: yes
• Libvirt KVM guest available: yes
• The SELinux context is default: no

You can also open a VM from the command line, by name:

gnome-boxes f18

In summary, a ton of improvements, many small and some large. Boxes will no longer be a ‘preview'; in GNOME 3.6, it will be solid, useful application. You should give it a try !

There’s also some things to look forward to in 3.7 already. A while ago, Christophe showed a preview of the coming ovirt support (see all your remove vms in gnome-boxes).