Skip to content

What's uim?

Konstantin Kharlamov edited this page Jun 30, 2019 · 1 revision

What's uim?

Uim is a multilingual input method library, whose goal is to be a flexible development platform and useful user environment for input methods of all languages.

Features of uim

There are some input method frameworks in the world. What is the feature of uim and how it is different from other input method frameworks?


uim works in many environments, including of course general desktop systems such as GNOME or KDE. It also supports Linux Zaurus, Mac OS X.

uim on Linux Zaurus uim on MacOS X

Just a library

Many input method frameworks such as XIM are implemented as client/server systems. But uim is a library, not a server.

Most users don't need an input method system at all or only need simple, table-based converters. Such users don't require or are unwilling to install a complex input method system, so we want to keep uim simple.

What applications can I use with uim?

  • All X applications. (You can use them with uim-xim.)
  • Gtk+ applications such as gedit. There are two way to use uim. Through uim gtk-immodule directly, or through uim-xim. We recommend using uim through gtk-immodule directly.
  • All Qt applications. There are two ways to use uim, through XIM or Qt-immodule. If you want to uim with Qt-immodule with old Qt3, you need to use a patch.
  • All console applications. (You can use them with uim-fep.)
  • Emacs (You can use it with uim.el).
  • All Mac OS X applications. (You can use them with MacUIM.)
application type modules
GTK+ 2 applications uim-xim, uim-gtk2
GTK+ 3 applications uim-xim, uim-gtk3
Qt 3 applications uim-xim, uim-qt31
Qt 4 applications uim-xim, uim-qt4
Other X applications uim-xim
console applications uim-fep
Emacs uim.el
Mac OS X applications MacUIM

uim-xim is not recommended due to its feature limitation

  1. requires a patch

What Languages and Input modules can I use with uim?

And you can input many languages by using uim-m17nlib, see (

Why is uim written in C?

We can ensure a stable ABI, which is crucial to uim since it's a basal library. Particularly, maintaining an ABI in C++ is sometimes difficult.

Why does uim have an embedded scheme interpreter?

Because C is too primitive to work with directly. Scheme lets us be more productive.

You can’t perform that action at this time.