splatmoji logo

Splatmoji – easier quick pop-up emoji/emoticon input on Linux

I previously posted about an emoji-input method using iBus that required jumping through some hoops and ultimately wasn’t a very pretty UX.

But now I’ve rolled my own, and added japanese emoticons/kaomoji as a bonus! I’ve titled it Splatmoji, with respect to its wildcard nature for emotive text input.

Quick start:

Some suggestions for customizing its configuration, binding it to a key combo in your window manager, using your own emoticon sets, and other bits are in the README.

splatmoji animated usage example



Linux pop up ibus emoji

Quick pop-up emoji input on Linux [updated]

<update> I’ve since rolled my own solution, which I prefer and recommend over this one. Check it out! Splatmoji. <update>

I need pop-up Linux emoji input that doesn’t require a mouse. Something like Emoji Keyboard or EmojiOne Picker require the hands to leave the keyboard and click on an emoji – this is a bunch  better than jumping into a web browser and looking one up, but still. Yuck.

The solution I finally found is ibus-uniemoji. Ibus is a framework on Unix that is most generally used for input of foreign characters from a standard keyboard, e.g. pinyin, Russian, or in this case, emoji. Uniemoji uses this to provide an easy pop-up for emoji selection by name or keyword. No mouse!

uniemoji emoji input

Ensure the ibus daemon is running at startup, or whenever suits you:

It’s not in the Ubuntu repos as of writing, so to install:

Here is the script I wrote to toggle between normal input and emoji input:

And finally to toggle between (or cycle across) an arbitrary number of ibus engines, find the engines you want by running ibus list-engine and call the script like this from some key combination (see your X or window manager config, whatever):

In my case, I bound this via my i3 config:

Note: you may, like me, need to re-establish your X keyboard settings after each time you switch ibus engines or else you’ll lose your compose keys, maps, etc. To ensure this I just re-run my .xsession as above.