# Uim/Configuration

uim | Introduction | Installation | Setup | Usage | Configuration | Support | Manuals | Development License
Uim may be configured in two ways, either in a configuration file or through a graphical interface.
The main configuration options are which input methods are used and the keyboard shortcuts to activate them.

## Graphical interface

There are two identical graphical interfaces: One for GTK+ and the other for Qt, called uim-pref-gtk and uim-pref-qt, respectively. Below is a list of configuration settings as they are laid out in the interface, along with the configuration settings as they appear in the configuration file which is in ~/.uim.d/customs.

## Global settings
### Input method deployment

* Specify default IM (custom-activate-default-im-name? <boolean>, custom-preserved-default-im-name <string>))
* Default input method (default-im-name is set to "#f" if the above is "#f" but otherwise to <string>)
* Enabled input methods (enabled-im-list <list>)

### Input method switching

* Enable IM switching by hotkey (enable-im-switch? <boolean>)
* IM switching key (switch-im-key <string>, switch-im-key? (make-key-predicate '("<Control>Shift_key" "<Shift>Control_key"))) )
* Skip direct method for IM switching by hotkey (switch-im-skip-direct-im? <boolean>)

### Input method toggle

* Enable IM toggle by hotkey (enable-im-toggle? <toggle>)
* Input method toggle key (toggle-im-key <string>, toggle-im-key? (make-key-predicate '("<Meta> "))) )
* Alternative input method (toggle-im-alt-im <string>)

### Visual preference

* Preedit color (uim-color {uim-color-uim|uim-color-atok})
* Candidate window position (candidate-window-position {caret,left,right})
* Show input method near the cursor (bridge-show-input-state? <boolean>)
* Time length for showing input mode near the cursor (bridge-show-input-state-time-length <integer>)

### Advanced settings

* Enable lazy input method loading for faster startup (enable-lazy-loading? <boolean>)

## Toolbar settings
### Menu based IM switcher

* Enable menu-based input method switcher (toolbar-show-action-based-switcher-button?)
* Effective coverage (imsw-coverage {system-global,app-global,focused-context})

### Buttons

* Full featured input method switcher (toolbar-show-switcher-button? <boolean>)
* Preference tool (toolbar-show-pref-button? <boolean>)
* Japanese dictionary tool (toolbar-show-dict-button? <boolean>)
* Input pad (toolbar-show-input-pad-button? <boolean>)
* Handwriting input pad (toolbar-show-handwriting-input-pad-button? <boolean>)
* Help (toolbar-show-help-button?)
(define anthy-widgets '(widget_anthy_input_mode widget_anthy_kana_input_method)) (define default-widget_anthy_input_mode 'action_anthy_direct) (define anthy-input-mode-actions '(action_anthy_direct action_anthy_hiragana action_anthy_katakana action_anthy_halfkana action_anthy_halfwidth_alnum action_anthy_fullwidth_alnum)) (define default-widget_anthy_kana_input_method 'action_anthy_roma) (define anthy-kana-input-method-actions '(action_anthy_roma action_anthy_kana action_anthy_azik)) (define anthy-utf8-widgets '(widget_anthy_utf8_input_mode widget_anthy_utf8_kana_input_method)) (define default-widget_anthy_utf8_input_mode 'action_anthy_utf8_direct) (define anthy-utf8-input-mode-actions '(action_anthy_utf8_direct action_anthy_utf8_hiragana action_anthy_utf8_katakana action_anthy_utf8_halfkana action_anthy_utf8_halfwidth_alnum action_anthy_utf8_fullwidth_alnum)) (define default-widget_anthy_utf8_kana_input_method 'action_anthy_utf8_roma) (define anthy-utf8-kana-input-method-actions '(action_anthy_utf8_roma action_anthy_utf8_kana action_anthy_utf8_azik)) (define skk-widgets '(widget_skk_input_mode widget_skk_kana_input_method)) (define default-widget_skk_input_mode 'action_skk_latin) (define skk-input-mode-actions '(action_skk_latin action_skk_hiragana action_skk_katakana action_skk_hankana action_skk_wide_latin)) (define default-widget_skk_kana_input_method 'action_skk_roma) (define skk-kana-input-method-actions '(action_skk_roma action_skk_azik))

## EB library settings
### Candidate window

* Use EB library to search annotations (eb-enable-for-annotation? <boolean>)
* The dictionary that defines the EB dictionary file (eb-dic-path e.g. "/usr/share/dict")

## XIM
### settings of XIM

* Use anti-aliased fonts for Over-the-Spot/Root-Window pre-edit. (uim-xim-use-xft-font? <boolean>)
* Font name for pre-edit area (uim-xim-xft-font-name e.g. "VL Gothic")

## Notify settings
### Notify agent name

* notify-agent

## Configuration file

You can also configure uim by editting a configureation file ~/.uim (see also LIBUIM_USER_SCM_FILE).
The configuration in ~/.uim overrides the configuration by the graphical interface uim-pref. This means that, if the two configurations conflict, the configuration in ~/.uim is always used.
You can use uim-sh to check if your Scheme code is valid:
If you want to write Japanese characters in the file, make sure that file encoding is EUC-JP.
You may want to append these lines to ~/.uim.
if you are using Vim and
if you are using Emacs. These lines tell your editor to open ~/.uim with the Scheme mode and set the file encoding to EUC-JP.

## Environment variables

Some values are for uim developers.
In the description below, sys-pkglibdir is "/usr/local/libexec" if you installed uim into "/usr/local". Other possible values of sys-pkglibdir are "/usr/libexec and "/usr/lib/uim". You can use uim-sh to get the value of sys-pkglibdir:

### LIBUIM_ENABLE_EMERGENCY_KEY

Enables the emergency key. After you set this variable and start the bridge, you can disable all key processing in uim by pressing Shift+Backspace.

### LIBUIM_PLUGIN_LIB_DIR

Specifies the directory where plugin files are put. The default are sys-pkglibdir/plugin, ~/.uim.d/plugin and LD_LIBRARY_PATH.

### LIBUIM_SCM_FILES

Specifies the directory where Scheme source files are put. The default are sys-pkgdatadir and ~/.uim.d/plugin.

### LIBUIM_USER_SCM_FILE

Specifies the current user's configuration file written in Scheme. The default value is ~/.uim.
You can use this variable to test your configuration file and/or to apply your configuration to limited applications.
Consider that you create a file named latin.scm, put the file in your home directory (~) and write the following code in the file:
Then run Firefox as follows:
You can see that Firefox is invoked with the IM engine latin.

### LIBUIM_VANILLA

Disables some features in uim. The behavior of uim depends on the specified values:
| Value | Behavior |
| 2 | Ignores the configuration files (e.g. default.scm, ~/.uim and ~/.uim.d) and disables lazy loading. |
| Otherwise | Ignores the configuration files (e.g. default.scm, ~/.uim and ~/.uim.d), disables lazy loading and disable the modules except for direct. |

### LIBUIM_VERBOSE

Specifies the verbose level of messages. You need to build with "--enable-debug" to use this variable.
| Value | Behavior |
| 3 | Also outputs the status of file loading. |
| 4 | Also outputs the status of the garbage collection usage. |
| 5 | Also outputs the code evaluation process. |

### UIM_IM_ENGINE

Specifies IM engine name.

## References

* libuim