There seems to be several competing frameworks: https://en.wikipedia.org/wiki/List_of_input_methods_for_Unix_platforms The top ones are IBus, SCIM, Fcitx, and uim. I'm not sure which one would be best.